diff --git a/Export/10001.json b/Export/10001.json
new file mode 100644
index 00000000..0bf9e1fc
--- /dev/null
+++ b/Export/10001.json
@@ -0,0 +1 @@
+{ "_t" : "User", "_id" : NumberLong(10001), "NickName" : "机器人", "JobId" : 8, "Family" : "eee", "Title" : "", "Level" : 6000, "CampType" : 0, "lastLoginTime" : NumberLong("1620142869324"), "YuanBao" : 0, "Voucher" : 0, "SkinId" : 120660, "hasRole" : true, "isChangeDB" : true }#cal#{ "_t" : "Character", "_id" : NumberLong(10001), "attribute" : [[3, 601.0], [4, 601.0], [6, 2101.0], [5, 601.0], [20, 601.0], [21, 601.0]], "pointRecord" : [[3, 0], [6, 1500], [20, 0], [21, 0], [4, 0], [5, 0]] }#cal#{ "_t" : "Bag", "_id" : NumberLong(10001), "ItemCount" : 35, "lastSortTime" : NumberLong("1620112200506"), "lastUseTime" : NumberLong("1620020493364"), "suitAttributes" : [400008], "ItemDic" : [[{ "k" : 0, "v" : 20001 }, { "data" : { "_t" : "MaterialItem", "itemId" : 20001, "itemType" : 3, "count" : 766, "isLock" : true } }], [{ "k" : 1, "v" : 20001 }, { "data" : { "_t" : "MaterialItem", "itemId" : 20001, "itemType" : 3, "count" : 147, "isLock" : false } }], [{ "k" : 2, "v" : 20002 }, { "data" : { "_t" : "MaterialItem", "itemId" : 20002, "itemType" : 3, "count" : 215, "isLock" : true } }], [{ "k" : 3, "v" : 20002 }, { "data" : { "_t" : "MaterialItem", "itemId" : 20002, "itemType" : 3, "count" : 53, "isLock" : false } }], [{ "k" : 4, "v" : 20009 }, { "data" : { "_t" : "MaterialItem", "itemId" : 20009, "itemType" : 3, "count" : 1, "isLock" : false } }], [{ "k" : 5, "v" : 20029 }, { "data" : { "_t" : "MaterialItem", "itemId" : 20029, "itemType" : 3, "count" : 1, "isLock" : false } }], [{ "k" : 6, "v" : 20038 }, { "data" : { "_t" : "MaterialItem", "itemId" : 20038, "itemType" : 3, "count" : 1, "isLock" : false } }], [{ "k" : 7, "v" : 20052 }, { "data" : { "_t" : "MaterialItem", "itemId" : 20052, "itemType" : 3, "count" : 1, "isLock" : false } }], [{ "k" : 8, "v" : 20155 }, { "data" : { "_t" : "MaterialItem", "itemId" : 20155, "itemType" : 3, "count" : 1, "isLock" : true } }], [{ "k" : 9, "v" : 20215 }, { "data" : { "_t" : "MaterialItem", "itemId" : 20215, "itemType" : 3, "count" : 950, "isLock" : false } }], [{ "k" : 10, "v" : 20215 }, { "data" : { "_t" : "MaterialItem", "itemId" : 20215, "itemType" : 3, "count" : 5, "isLock" : true } }], [{ "k" : 11, "v" : 20218 }, { "data" : { "_t" : "MaterialItem", "itemId" : 20218, "itemType" : 3, "count" : 2, "isLock" : true } }], [{ "k" : 12, "v" : 20222 }, { "data" : { "_t" : "MaterialItem", "itemId" : 20222, "itemType" : 3, "count" : 92, "isLock" : true } }], [{ "k" : 13, "v" : 20226 }, { "data" : { "_t" : "MaterialItem", "itemId" : 20226, "itemType" : 3, "count" : 84, "isLock" : true } }], [{ "k" : 14, "v" : 20242 }, { "data" : { "_t" : "MaterialItem", "itemId" : 20242, "itemType" : 3, "count" : 13, "isLock" : true } }], [{ "k" : 15, "v" : 20243 }, { "data" : { "_t" : "MaterialItem", "itemId" : 20243, "itemType" : 3, "count" : 19, "isLock" : true } }], [{ "k" : 16, "v" : 20244 }, { "data" : { "_t" : "MaterialItem", "itemId" : 20244, "itemType" : 3, "count" : 5, "isLock" : true } }], [{ "k" : 17, "v" : 20284 }, { "data" : { "_t" : "MaterialItem", "itemId" : 20284, "itemType" : 3, "count" : 1, "isLock" : false } }], [{ "k" : 18, "v" : 20304 }, { "data" : { "_t" : "MaterialItem", "itemId" : 20304, "itemType" : 3, "count" : 1, "isLock" : false } }], [{ "k" : 19, "v" : 20305 }, { "data" : { "_t" : "MaterialItem", "itemId" : 20305, "itemType" : 3, "count" : 10, "isLock" : false } }], [{ "k" : 20, "v" : 20306 }, { "data" : { "_t" : "MaterialItem", "itemId" : 20306, "itemType" : 3, "count" : 7, "isLock" : false } }], [{ "k" : 21, "v" : 110301 }, { "data" : { "_t" : "GoodsItem", "itemId" : 110301, "itemType" : 2, "count" : 1, "isLock" : false } }], [{ "k" : 22, "v" : 110316 }, { "data" : { "_t" : "GoodsItem", "itemId" : 110316, "itemType" : 2, "count" : 5, "isLock" : false } }], [{ "k" : 23, "v" : 110327 }, { "data" : { "_t" : "GoodsItem", "itemId" : 110327, "itemType" : 2, "count" : 17, "isLock" : true } }], [{ "k" : 24, "v" : 110327 }, { "data" : { "_t" : "GoodsItem", "itemId" : 110327, "itemType" : 2, "count" : 4, "isLock" : false } }], [{ "k" : 25, "v" : 110328 }, { "data" : { "_t" : "GoodsItem", "itemId" : 110328, "itemType" : 2, "count" : 18, "isLock" : true } }], [{ "k" : 26, "v" : 110328 }, { "data" : { "_t" : "GoodsItem", "itemId" : 110328, "itemType" : 2, "count" : 22, "isLock" : false } }], [{ "k" : 27, "v" : 110328 }, { "data" : { "_t" : "GoodsItem", "itemId" : 110328, "itemType" : 2, "count" : 77, "isLock" : false } }], [{ "k" : 28, "v" : 110329 }, { "data" : { "_t" : "GoodsItem", "itemId" : 110329, "itemType" : 2, "count" : 6, "isLock" : false } }], [{ "k" : 29, "v" : 110330 }, { "data" : { "_t" : "GoodsItem", "itemId" : 110330, "itemType" : 2, "count" : 13, "isLock" : true } }], [{ "k" : 30, "v" : 110330 }, { "data" : { "_t" : "GoodsItem", "itemId" : 110330, "itemType" : 2, "count" : 96, "isLock" : false } }], [{ "k" : 31, "v" : 110342 }, { "data" : { "_t" : "GoodsItem", "itemId" : 110342, "itemType" : 2, "count" : 104, "isLock" : true } }], [{ "k" : 32, "v" : 110342 }, { "data" : { "_t" : "GoodsItem", "itemId" : 110342, "itemType" : 2, "count" : 47, "isLock" : false } }], [{ "k" : 33, "v" : 110829 }, { "data" : { "_t" : "GoodsItem", "itemId" : 110829, "itemType" : 2, "count" : 20, "isLock" : true } }], [{ "k" : 34, "v" : 110830 }, { "data" : { "_t" : "GoodsItem", "itemId" : 110830, "itemType" : 2, "count" : 3, "isLock" : false } }], [{ "k" : 35, "v" : 0 }, { "data" : null }], [{ "k" : 36, "v" : 0 }, { "data" : null }], [{ "k" : 37, "v" : 0 }, { "data" : null }], [{ "k" : 38, "v" : 0 }, { "data" : null }], [{ "k" : 39, "v" : 0 }, { "data" : null }], [{ "k" : 40, "v" : 0 }, { "data" : null }], [{ "k" : 41, "v" : 0 }, { "data" : null }], [{ "k" : 42, "v" : 0 }, { "data" : null }], [{ "k" : 43, "v" : 0 }, { "data" : null }], [{ "k" : 44, "v" : 0 }, { "data" : null }], [{ "k" : 45, "v" : 0 }, { "data" : null }], [{ "k" : 46, "v" : 0 }, { "data" : null }], [{ "k" : 47, "v" : 0 }, { "data" : null }]], "WornEquipDic" : [[0, { "data" : { "_t" : "EquipItem", "itemId" : 120544, "itemType" : 1, "count" : 1, "isLock" : true, "serverId" : NumberLong("698414372988468375"), "specialKey" : 8, "specialId" : 0, "mainAttribute" : [[4, 0.11649999767541885], [6, 0.010599999688565731], [8, 0.048500001430511475], [12, 0.17659999430179596], [14, -0.13300000131130219]], "randomAttributes" : null, "addtionalAttributes" : [1516000, 2626000], "gemList" : [20181, 20177, 20127, 20131], "getSource" : "商城", "detialType" : 0, "star" : 0, "quality" : 0, "equipLevel" : 11 } }], [1, { "data" : { "_t" : "EquipItem", "itemId" : 120890, "itemType" : 1, "count" : 1, "isLock" : true, "serverId" : NumberLong("724579537093999339"), "specialKey" : 1, "specialId" : 0, "mainAttribute" : [[9, -0.078699998557567596], [10, -0.035399999469518661]], "randomAttributes" : null, "addtionalAttributes" : [], "gemList" : [0, 0, 0, 0], "getSource" : "商城", "detialType" : 0, "star" : 0, "quality" : 0, "equipLevel" : 0 } }], [2, { "data" : { "_t" : "EquipItem", "itemId" : 120660, "itemType" : 1, "count" : 1, "isLock" : true, "serverId" : NumberLong("698414476067683487"), "specialKey" : 9, "specialId" : 0, "mainAttribute" : [[1, 0.093199998140335083], [2, 0.096799999475479126], [7, 0.030300000682473183], [8, -0.13480000197887421], [13, 0.10719999670982361], [14, -0.02199999988079071]], "randomAttributes" : null, "addtionalAttributes" : [], "gemList" : [20129, 20270, 20277, 20131], "getSource" : "商城", "detialType" : 0, "star" : 0, "quality" : 0, "equipLevel" : 9 } }], [3, { "data" : { "_t" : "EquipItem", "itemId" : 120855, "itemType" : 1, "count" : 1, "isLock" : true, "serverId" : NumberLong("720707881774691022"), "specialKey" : 0, "specialId" : 410, "mainAttribute" : null, "randomAttributes" : [405, 412, 414, 423, 426, 425], "addtionalAttributes" : [3026000, 716000], "gemList" : [20277, 20270, 20124, 0], "getSource" : "Dr丶梦想[手工]", "detialType" : 0, "star" : 6, "quality" : 4, "equipLevel" : 9 } }], [4, { "data" : { "_t" : "EquipItem", "itemId" : 120889, "itemType" : 1, "count" : 1, "isLock" : true, "serverId" : NumberLong("698264324011004492"), "specialKey" : 1, "specialId" : 0, "mainAttribute" : [], "randomAttributes" : null, "addtionalAttributes" : [2723000], "gemList" : [20129, 20181, 20131, 20177], "getSource" : "任务奖励", "detialType" : 0, "star" : 0, "quality" : 0, "equipLevel" : 0 } }], [5, { "data" : { "_t" : "EquipItem", "itemId" : 120856, "itemType" : 1, "count" : 1, "isLock" : true, "serverId" : NumberLong("720716317090464033"), "specialKey" : 0, "specialId" : 408, "mainAttribute" : null, "randomAttributes" : [418, 414, 406, 411, 422, 416, 412], "addtionalAttributes" : [1816000, 2626000], "gemList" : [20181, 20127, 20131, 20129], "getSource" : "Dr丶梦想[手工]", "detialType" : 0, "star" : 7, "quality" : 4, "equipLevel" : 9 } }], [6, { "data" : { "_t" : "EquipItem", "itemId" : 120854, "itemType" : 1, "count" : 1, "isLock" : true, "serverId" : NumberLong("698420678000460137"), "specialKey" : 0, "specialId" : 409, "mainAttribute" : null, "randomAttributes" : [417, 426, 421, 414, 406, 408, 401], "addtionalAttributes" : [3026000], "gemList" : [20177, 20136, 20135, 20124], "getSource" : "Dr丶梦想[手工]", "detialType" : 0, "star" : 7, "quality" : 4, "equipLevel" : 9 } }], [7, { "data" : { "_t" : "EquipItem", "itemId" : 120877, "itemType" : 1, "count" : 1, "isLock" : true, "serverId" : NumberLong("720713259073748009"), "specialKey" : 0, "specialId" : 408, "mainAttribute" : null, "randomAttributes" : [419, 409, 404, 407, 414, 406, 413, 422], "addtionalAttributes" : [1816000, 3026000], "gemList" : [20131, 20129, 20277, 20270], "getSource" : "Dr丶梦想[手工]", "detialType" : 0, "star" : 8, "quality" : 4, "equipLevel" : 10 } }], [8, { "data" : { "_t" : "EquipItem", "itemId" : 120459, "itemType" : 1, "count" : 1, "isLock" : true, "serverId" : NumberLong("698414184009907250"), "specialKey" : 1, "specialId" : 0, "mainAttribute" : [[22, -0.080300003290176392], [23, 0.018899999558925629]], "randomAttributes" : null, "addtionalAttributes" : [2726000], "gemList" : [20136, 20135, 20124, 0], "getSource" : "绝※生者必灭礼盒·超能力", "detialType" : 0, "star" : 0, "quality" : 0, "equipLevel" : 9 } }], [9, { "data" : { "_t" : "EquipItem", "itemId" : 120460, "itemType" : 1, "count" : 1, "isLock" : true, "serverId" : NumberLong("698414184009907251"), "specialKey" : 1, "specialId" : 0, "mainAttribute" : [[4, -0.10819999873638153], [6, -0.18950000405311584], [17, 0.012299999594688416], [18, 0.1023000031709671]], "randomAttributes" : null, "addtionalAttributes" : [2423000, 2623000], "gemList" : [20136, 20135, 20124, 0], "getSource" : "绝※生者必灭礼盒·超能力", "detialType" : 0, "star" : 0, "quality" : 0, "equipLevel" : 9 } }], [10, { "data" : { "_t" : "EquipItem", "itemId" : 120461, "itemType" : 1, "count" : 1, "isLock" : true, "serverId" : NumberLong("698414184009907252"), "specialKey" : 10, "specialId" : 0, "mainAttribute" : [[4, 0.089500002562999725], [6, 0.028599999845027924], [8, 0.11450000107288361], [12, -0.17630000412464142]], "randomAttributes" : null, "addtionalAttributes" : [2726000], "gemList" : [20131, 20129, 0, 0], "getSource" : "绝※生者必灭礼盒·超能力", "detialType" : 0, "star" : 0, "quality" : 0, "equipLevel" : 9 } }], [11, { "data" : { "_t" : "EquipItem", "itemId" : 120462, "itemType" : 1, "count" : 1, "isLock" : true, "serverId" : NumberLong("698414184009907253"), "specialKey" : 9, "specialId" : 0, "mainAttribute" : [[21, -0.1914999932050705], [15, -0.1526000052690506], [16, 0.089400000870227814]], "randomAttributes" : null, "addtionalAttributes" : [2726000], "gemList" : [20135, 20136, 0, 0], "getSource" : "绝※生者必灭礼盒·超能力", "detialType" : 0, "star" : 0, "quality" : 0, "equipLevel" : 9 } }]] }#cal#{ "_t" : "UnitSkillComponent", "_id" : NumberLong(10001), "SkillLearnedDic" : [[400001, { "_id" : 400001, "Level" : 1, "IsPassive" : false }], [410101, { "_id" : 410101, "Level" : 7, "IsPassive" : false }], [410201, { "_id" : 410201, "Level" : 6, "IsPassive" : false }], [410302, { "_id" : 410302, "Level" : 5, "IsPassive" : false }], [410402, { "_id" : 410402, "Level" : 5, "IsPassive" : false }], [410502, { "_id" : 410502, "Level" : 4, "IsPassive" : false }]], "SkillUnLearnedDic" : [[410301, { "_id" : 410301, "Level" : 0, "IsPassive" : false }], [410401, { "_id" : 410401, "Level" : 0, "IsPassive" : false }], [410404, { "_id" : 410404, "Level" : 0, "IsPassive" : false }], [410501, { "_id" : 410501, "Level" : 0, "IsPassive" : false }], [410504, { "_id" : 410504, "Level" : 0, "IsPassive" : false }], [410601, { "_id" : 410601, "Level" : 0, "IsPassive" : false }], [410602, { "_id" : 410602, "Level" : 0, "IsPassive" : false }], [410604, { "_id" : 410604, "Level" : 0, "IsPassive" : false }], [420101, { "_id" : 420101, "Level" : 0, "IsPassive" : false }], [420201, { "_id" : 420201, "Level" : 0, "IsPassive" : true }], [410303, { "_id" : 410303, "Level" : 0, "IsPassive" : false }], [410403, { "_id" : 410403, "Level" : 0, "IsPassive" : false }], [410503, { "_id" : 410503, "Level" : 0, "IsPassive" : false }], [410603, { "_id" : 410603, "Level" : 0, "IsPassive" : false }], [410202, { "_id" : 410202, "Level" : 0, "IsPassive" : false }], [410304, { "_id" : 410304, "Level" : 0, "IsPassive" : false }]] }#cal#{ "_t" : "UserSetting", "_id" : NumberLong(10001), "CD" : 4000, "lastCD" : NumberLong("1620142963398"), "canUse" : true, "AutoSkillList" : [410502, 0, 0, 0, 0, 0], "MainUISlotArr" : [{ "_id" : NumberLong("674076219251164237"), "RealId" : 410502, "Count" : 0, "MainUIType" : 1 }, { "_id" : NumberLong("674078315195204920"), "RealId" : 110342, "Count" : 48, "MainUIType" : 2 }, { "_id" : NumberLong("674089653908865481"), "RealId" : 410101, "Count" : 0, "MainUIType" : 1 }, { "_id" : NumberLong("674221870182109009"), "RealId" : 410201, "Count" : 0, "MainUIType" : 1 }, null, null, null, null, null], "IsAutoSkill" : true, "IsDisplayOthers" : false }#cal#{ "_t" : "NumericComponent", "_id" : NumberLong(10001), "NumericDic" : [{ "k" : 10021, "v" : 5963778.0 }, { "k" : 1002, "v" : 5963778.0 }, { "k" : 10041, "v" : 402882.0 }, { "k" : 1004, "v" : 402882.0 }, { "k" : 1036, "v" : 120660.0 }, { "k" : 10051, "v" : 1601.0 }, { "k" : 1005, "v" : 1601.0 }, { "k" : 10061, "v" : 6635.974609375 }, { "k" : 1006, "v" : 6635.974609375 }, { "k" : 10071, "v" : 3389.0 }, { "k" : 1007, "v" : 3389.0 }, { "k" : 10081, "v" : 10005.640625 }, { "k" : 1008, "v" : 10005.640625 }, { "k" : 10091, "v" : 41486.0 }, { "k" : 1009, "v" : 41486.0 }, { "k" : 10101, "v" : 883213.3125 }, { "k" : 1010, "v" : 883213.3125 }, { "k" : 10111, "v" : 376119.28125 }, { "k" : 1011, "v" : 376119.28125 }, { "k" : 10121, "v" : 364528.59375 }, { "k" : 1012, "v" : 364528.59375 }, { "k" : 10131, "v" : 0.19600000977516174 }, { "k" : 1013, "v" : 0.19600000977516174 }, { "k" : 10141, "v" : 1.3120900392532349 }, { "k" : 1014, "v" : 1.3120900392532349 }, { "k" : 10151, "v" : 0.5958399772644043 }, { "k" : 1015, "v" : 0.5958399772644043 }, { "k" : 10161, "v" : 3.526599645614624 }, { "k" : 1016, "v" : 3.526599645614624 }, { "k" : 10181, "v" : 0.29841709136962891 }, { "k" : 1018, "v" : 0.29841709136962891 }, { "k" : 10201, "v" : 0.38467001914978027 }, { "k" : 1020, "v" : 0.38467001914978027 }, { "k" : 10191, "v" : 0.70762801170349121 }, { "k" : 1019, "v" : 0.70762801170349121 }, { "k" : 10211, "v" : 0.78412002325057983 }, { "k" : 1021, "v" : 0.78412002325057983 }, { "k" : 10171, "v" : 1.2730638980865479 }, { "k" : 1017, "v" : 1.2730638980865479 }, { "k" : 10341, "v" : 4524.0 }, { "k" : 1034, "v" : 4524.0 }, { "k" : 10351, "v" : 5007.125 }, { "k" : 1035, "v" : 5007.125 }, { "k" : 10221, "v" : 0.22940999269485474 }, { "k" : 1022, "v" : 0.22940999269485474 }, { "k" : 10231, "v" : 0.23079898953437805 }, { "k" : 1023, "v" : 0.23079898953437805 }, { "k" : 10311, "v" : 9408.06640625 }, { "k" : 1031, "v" : 9408.06640625 }, { "k" : 10321, "v" : 202.04925537109375 }, { "k" : 1032, "v" : 202.04925537109375 }, { "k" : 10331, "v" : 2374.284423828125 }, { "k" : 1033, "v" : 2374.284423828125 }, { "k" : 10421, "v" : 0.20000000298023224 }, { "k" : 1042, "v" : 0.20000000298023224 }, { "k" : 10431, "v" : 0.18000000715255737 }, { "k" : 1043, "v" : 0.18000000715255737 }, { "k" : 10441, "v" : 0.05000000074505806 }, { "k" : 1044, "v" : 0.05000000074505806 }, { "k" : 10451, "v" : 0.10000000149011612 }, { "k" : 1045, "v" : 0.10000000149011612 }, { "k" : 10461, "v" : 0.10000000149011612 }, { "k" : 1046, "v" : 0.10000000149011612 }, { "k" : 1001, "v" : 5207098.0 }, { "k" : 1003, "v" : 402882.0 }, { "k" : 1027, "v" : 0.0 }, { "k" : 1026, "v" : 6000.0 }, { "k" : 1039, "v" : 814.0 }, { "k" : 1028, "v" : 109913784320.0 }, { "k" : 1047, "v" : 50.0 }, { "k" : 1025, "v" : 1215749376.0 }, { "k" : 10092, "v" : 0.0 }, { "k" : 10102, "v" : 0.0 }, { "k" : 10112, "v" : 0.0 }, { "k" : 10122, "v" : 0.0 }, { "k" : 1041, "v" : 3623.0 }, { "k" : 1038, "v" : 120889.0 }] }#cal#{ "_t" : "Pet", "_id" : NumberLong(10001), "petId" : 2101, "name" : "宠物", "level" : 61, "exp" : 420, "petState" : 0, "intimacy" : 646, "isShow" : false, "actionEndTime" : NumberLong("1618478819547"), "addToCharacter" : [[3, 590.0], [4, 590.0], [5, 635.0], [6, 420.0], [20, 450.0], [21, 456.0]] }
\ No newline at end of file
diff --git a/Export/机器人.json b/Export/机器人.json
new file mode 100644
index 00000000..a5784930
--- /dev/null
+++ b/Export/机器人.json
@@ -0,0 +1 @@
+{ "_t" : "Character", "_id" : NumberLong(10001), "attribute" : [[3, 601.0], [4, 601.0], [6, 2101.0], [5, 601.0], [20, 601.0], [21, 601.0]], "pointRecord" : [[3, 0], [6, 1500], [20, 0], [21, 0], [4, 0], [5, 0]] }#cal#{ "_t" : "Bag", "_id" : NumberLong(10001), "ItemCount" : 35, "lastSortTime" : NumberLong("1620112200506"), "lastUseTime" : NumberLong("1620020493364"), "suitAttributes" : [400008], "ItemDic" : [[{ "k" : 0, "v" : 20001 }, { "data" : { "_t" : "MaterialItem", "itemId" : 20001, "itemType" : 3, "count" : 766, "isLock" : true } }], [{ "k" : 1, "v" : 20001 }, { "data" : { "_t" : "MaterialItem", "itemId" : 20001, "itemType" : 3, "count" : 147, "isLock" : false } }], [{ "k" : 2, "v" : 20002 }, { "data" : { "_t" : "MaterialItem", "itemId" : 20002, "itemType" : 3, "count" : 215, "isLock" : true } }], [{ "k" : 3, "v" : 20002 }, { "data" : { "_t" : "MaterialItem", "itemId" : 20002, "itemType" : 3, "count" : 53, "isLock" : false } }], [{ "k" : 4, "v" : 20009 }, { "data" : { "_t" : "MaterialItem", "itemId" : 20009, "itemType" : 3, "count" : 1, "isLock" : false } }], [{ "k" : 5, "v" : 20029 }, { "data" : { "_t" : "MaterialItem", "itemId" : 20029, "itemType" : 3, "count" : 1, "isLock" : false } }], [{ "k" : 6, "v" : 20038 }, { "data" : { "_t" : "MaterialItem", "itemId" : 20038, "itemType" : 3, "count" : 1, "isLock" : false } }], [{ "k" : 7, "v" : 20052 }, { "data" : { "_t" : "MaterialItem", "itemId" : 20052, "itemType" : 3, "count" : 1, "isLock" : false } }], [{ "k" : 8, "v" : 20155 }, { "data" : { "_t" : "MaterialItem", "itemId" : 20155, "itemType" : 3, "count" : 1, "isLock" : true } }], [{ "k" : 9, "v" : 20215 }, { "data" : { "_t" : "MaterialItem", "itemId" : 20215, "itemType" : 3, "count" : 950, "isLock" : false } }], [{ "k" : 10, "v" : 20215 }, { "data" : { "_t" : "MaterialItem", "itemId" : 20215, "itemType" : 3, "count" : 5, "isLock" : true } }], [{ "k" : 11, "v" : 20218 }, { "data" : { "_t" : "MaterialItem", "itemId" : 20218, "itemType" : 3, "count" : 2, "isLock" : true } }], [{ "k" : 12, "v" : 20222 }, { "data" : { "_t" : "MaterialItem", "itemId" : 20222, "itemType" : 3, "count" : 92, "isLock" : true } }], [{ "k" : 13, "v" : 20226 }, { "data" : { "_t" : "MaterialItem", "itemId" : 20226, "itemType" : 3, "count" : 84, "isLock" : true } }], [{ "k" : 14, "v" : 20242 }, { "data" : { "_t" : "MaterialItem", "itemId" : 20242, "itemType" : 3, "count" : 13, "isLock" : true } }], [{ "k" : 15, "v" : 20243 }, { "data" : { "_t" : "MaterialItem", "itemId" : 20243, "itemType" : 3, "count" : 19, "isLock" : true } }], [{ "k" : 16, "v" : 20244 }, { "data" : { "_t" : "MaterialItem", "itemId" : 20244, "itemType" : 3, "count" : 5, "isLock" : true } }], [{ "k" : 17, "v" : 20284 }, { "data" : { "_t" : "MaterialItem", "itemId" : 20284, "itemType" : 3, "count" : 1, "isLock" : false } }], [{ "k" : 18, "v" : 20304 }, { "data" : { "_t" : "MaterialItem", "itemId" : 20304, "itemType" : 3, "count" : 1, "isLock" : false } }], [{ "k" : 19, "v" : 20305 }, { "data" : { "_t" : "MaterialItem", "itemId" : 20305, "itemType" : 3, "count" : 10, "isLock" : false } }], [{ "k" : 20, "v" : 20306 }, { "data" : { "_t" : "MaterialItem", "itemId" : 20306, "itemType" : 3, "count" : 7, "isLock" : false } }], [{ "k" : 21, "v" : 110301 }, { "data" : { "_t" : "GoodsItem", "itemId" : 110301, "itemType" : 2, "count" : 1, "isLock" : false } }], [{ "k" : 22, "v" : 110316 }, { "data" : { "_t" : "GoodsItem", "itemId" : 110316, "itemType" : 2, "count" : 5, "isLock" : false } }], [{ "k" : 23, "v" : 110327 }, { "data" : { "_t" : "GoodsItem", "itemId" : 110327, "itemType" : 2, "count" : 17, "isLock" : true } }], [{ "k" : 24, "v" : 110327 }, { "data" : { "_t" : "GoodsItem", "itemId" : 110327, "itemType" : 2, "count" : 4, "isLock" : false } }], [{ "k" : 25, "v" : 110328 }, { "data" : { "_t" : "GoodsItem", "itemId" : 110328, "itemType" : 2, "count" : 18, "isLock" : true } }], [{ "k" : 26, "v" : 110328 }, { "data" : { "_t" : "GoodsItem", "itemId" : 110328, "itemType" : 2, "count" : 22, "isLock" : false } }], [{ "k" : 27, "v" : 110328 }, { "data" : { "_t" : "GoodsItem", "itemId" : 110328, "itemType" : 2, "count" : 77, "isLock" : false } }], [{ "k" : 28, "v" : 110329 }, { "data" : { "_t" : "GoodsItem", "itemId" : 110329, "itemType" : 2, "count" : 6, "isLock" : false } }], [{ "k" : 29, "v" : 110330 }, { "data" : { "_t" : "GoodsItem", "itemId" : 110330, "itemType" : 2, "count" : 13, "isLock" : true } }], [{ "k" : 30, "v" : 110330 }, { "data" : { "_t" : "GoodsItem", "itemId" : 110330, "itemType" : 2, "count" : 96, "isLock" : false } }], [{ "k" : 31, "v" : 110342 }, { "data" : { "_t" : "GoodsItem", "itemId" : 110342, "itemType" : 2, "count" : 104, "isLock" : true } }], [{ "k" : 32, "v" : 110342 }, { "data" : { "_t" : "GoodsItem", "itemId" : 110342, "itemType" : 2, "count" : 47, "isLock" : false } }], [{ "k" : 33, "v" : 110829 }, { "data" : { "_t" : "GoodsItem", "itemId" : 110829, "itemType" : 2, "count" : 20, "isLock" : true } }], [{ "k" : 34, "v" : 110830 }, { "data" : { "_t" : "GoodsItem", "itemId" : 110830, "itemType" : 2, "count" : 3, "isLock" : false } }], [{ "k" : 35, "v" : 0 }, { "data" : null }], [{ "k" : 36, "v" : 0 }, { "data" : null }], [{ "k" : 37, "v" : 0 }, { "data" : null }], [{ "k" : 38, "v" : 0 }, { "data" : null }], [{ "k" : 39, "v" : 0 }, { "data" : null }], [{ "k" : 40, "v" : 0 }, { "data" : null }], [{ "k" : 41, "v" : 0 }, { "data" : null }], [{ "k" : 42, "v" : 0 }, { "data" : null }], [{ "k" : 43, "v" : 0 }, { "data" : null }], [{ "k" : 44, "v" : 0 }, { "data" : null }], [{ "k" : 45, "v" : 0 }, { "data" : null }], [{ "k" : 46, "v" : 0 }, { "data" : null }], [{ "k" : 47, "v" : 0 }, { "data" : null }]], "WornEquipDic" : [[0, { "data" : { "_t" : "EquipItem", "itemId" : 120544, "itemType" : 1, "count" : 1, "isLock" : true, "serverId" : NumberLong("698414372988468375"), "specialKey" : 8, "specialId" : 0, "mainAttribute" : [[4, 0.11649999767541885], [6, 0.010599999688565731], [8, 0.048500001430511475], [12, 0.17659999430179596], [14, -0.13300000131130219]], "randomAttributes" : null, "addtionalAttributes" : [1516000, 2626000], "gemList" : [20181, 20177, 20127, 20131], "getSource" : "商城", "detialType" : 0, "star" : 0, "quality" : 0, "equipLevel" : 11 } }], [1, { "data" : { "_t" : "EquipItem", "itemId" : 120890, "itemType" : 1, "count" : 1, "isLock" : true, "serverId" : NumberLong("724579537093999339"), "specialKey" : 1, "specialId" : 0, "mainAttribute" : [[9, -0.078699998557567596], [10, -0.035399999469518661]], "randomAttributes" : null, "addtionalAttributes" : [], "gemList" : [0, 0, 0, 0], "getSource" : "商城", "detialType" : 0, "star" : 0, "quality" : 0, "equipLevel" : 0 } }], [2, { "data" : { "_t" : "EquipItem", "itemId" : 120660, "itemType" : 1, "count" : 1, "isLock" : true, "serverId" : NumberLong("698414476067683487"), "specialKey" : 9, "specialId" : 0, "mainAttribute" : [[1, 0.093199998140335083], [2, 0.096799999475479126], [7, 0.030300000682473183], [8, -0.13480000197887421], [13, 0.10719999670982361], [14, -0.02199999988079071]], "randomAttributes" : null, "addtionalAttributes" : [], "gemList" : [20129, 20270, 20277, 20131], "getSource" : "商城", "detialType" : 0, "star" : 0, "quality" : 0, "equipLevel" : 9 } }], [3, { "data" : { "_t" : "EquipItem", "itemId" : 120855, "itemType" : 1, "count" : 1, "isLock" : true, "serverId" : NumberLong("720707881774691022"), "specialKey" : 0, "specialId" : 410, "mainAttribute" : null, "randomAttributes" : [405, 412, 414, 423, 426, 425], "addtionalAttributes" : [3026000, 716000], "gemList" : [20277, 20270, 20124, 0], "getSource" : "Dr丶梦想[手工]", "detialType" : 0, "star" : 6, "quality" : 4, "equipLevel" : 9 } }], [4, { "data" : { "_t" : "EquipItem", "itemId" : 120889, "itemType" : 1, "count" : 1, "isLock" : true, "serverId" : NumberLong("698264324011004492"), "specialKey" : 1, "specialId" : 0, "mainAttribute" : [], "randomAttributes" : null, "addtionalAttributes" : [2723000], "gemList" : [20129, 20181, 20131, 20177], "getSource" : "任务奖励", "detialType" : 0, "star" : 0, "quality" : 0, "equipLevel" : 0 } }], [5, { "data" : { "_t" : "EquipItem", "itemId" : 120856, "itemType" : 1, "count" : 1, "isLock" : true, "serverId" : NumberLong("720716317090464033"), "specialKey" : 0, "specialId" : 408, "mainAttribute" : null, "randomAttributes" : [418, 414, 406, 411, 422, 416, 412], "addtionalAttributes" : [1816000, 2626000], "gemList" : [20181, 20127, 20131, 20129], "getSource" : "Dr丶梦想[手工]", "detialType" : 0, "star" : 7, "quality" : 4, "equipLevel" : 9 } }], [6, { "data" : { "_t" : "EquipItem", "itemId" : 120854, "itemType" : 1, "count" : 1, "isLock" : true, "serverId" : NumberLong("698420678000460137"), "specialKey" : 0, "specialId" : 409, "mainAttribute" : null, "randomAttributes" : [417, 426, 421, 414, 406, 408, 401], "addtionalAttributes" : [3026000], "gemList" : [20177, 20136, 20135, 20124], "getSource" : "Dr丶梦想[手工]", "detialType" : 0, "star" : 7, "quality" : 4, "equipLevel" : 9 } }], [7, { "data" : { "_t" : "EquipItem", "itemId" : 120877, "itemType" : 1, "count" : 1, "isLock" : true, "serverId" : NumberLong("720713259073748009"), "specialKey" : 0, "specialId" : 408, "mainAttribute" : null, "randomAttributes" : [419, 409, 404, 407, 414, 406, 413, 422], "addtionalAttributes" : [1816000, 3026000], "gemList" : [20131, 20129, 20277, 20270], "getSource" : "Dr丶梦想[手工]", "detialType" : 0, "star" : 8, "quality" : 4, "equipLevel" : 10 } }], [8, { "data" : { "_t" : "EquipItem", "itemId" : 120459, "itemType" : 1, "count" : 1, "isLock" : true, "serverId" : NumberLong("698414184009907250"), "specialKey" : 1, "specialId" : 0, "mainAttribute" : [[22, -0.080300003290176392], [23, 0.018899999558925629]], "randomAttributes" : null, "addtionalAttributes" : [2726000], "gemList" : [20136, 20135, 20124, 0], "getSource" : "绝※生者必灭礼盒·超能力", "detialType" : 0, "star" : 0, "quality" : 0, "equipLevel" : 9 } }], [9, { "data" : { "_t" : "EquipItem", "itemId" : 120460, "itemType" : 1, "count" : 1, "isLock" : true, "serverId" : NumberLong("698414184009907251"), "specialKey" : 1, "specialId" : 0, "mainAttribute" : [[4, -0.10819999873638153], [6, -0.18950000405311584], [17, 0.012299999594688416], [18, 0.1023000031709671]], "randomAttributes" : null, "addtionalAttributes" : [2423000, 2623000], "gemList" : [20136, 20135, 20124, 0], "getSource" : "绝※生者必灭礼盒·超能力", "detialType" : 0, "star" : 0, "quality" : 0, "equipLevel" : 9 } }], [10, { "data" : { "_t" : "EquipItem", "itemId" : 120461, "itemType" : 1, "count" : 1, "isLock" : true, "serverId" : NumberLong("698414184009907252"), "specialKey" : 10, "specialId" : 0, "mainAttribute" : [[4, 0.089500002562999725], [6, 0.028599999845027924], [8, 0.11450000107288361], [12, -0.17630000412464142]], "randomAttributes" : null, "addtionalAttributes" : [2726000], "gemList" : [20131, 20129, 0, 0], "getSource" : "绝※生者必灭礼盒·超能力", "detialType" : 0, "star" : 0, "quality" : 0, "equipLevel" : 9 } }], [11, { "data" : { "_t" : "EquipItem", "itemId" : 120462, "itemType" : 1, "count" : 1, "isLock" : true, "serverId" : NumberLong("698414184009907253"), "specialKey" : 9, "specialId" : 0, "mainAttribute" : [[21, -0.1914999932050705], [15, -0.1526000052690506], [16, 0.089400000870227814]], "randomAttributes" : null, "addtionalAttributes" : [2726000], "gemList" : [20135, 20136, 0, 0], "getSource" : "绝※生者必灭礼盒·超能力", "detialType" : 0, "star" : 0, "quality" : 0, "equipLevel" : 9 } }]] }#cal#{ "_t" : "UnitSkillComponent", "_id" : NumberLong(10001), "SkillLearnedDic" : [[400001, { "_id" : 400001, "Level" : 1, "IsPassive" : false }], [410101, { "_id" : 410101, "Level" : 7, "IsPassive" : false }], [410201, { "_id" : 410201, "Level" : 6, "IsPassive" : false }], [410302, { "_id" : 410302, "Level" : 5, "IsPassive" : false }], [410402, { "_id" : 410402, "Level" : 5, "IsPassive" : false }], [410502, { "_id" : 410502, "Level" : 4, "IsPassive" : false }]], "SkillUnLearnedDic" : [[410301, { "_id" : 410301, "Level" : 0, "IsPassive" : false }], [410401, { "_id" : 410401, "Level" : 0, "IsPassive" : false }], [410404, { "_id" : 410404, "Level" : 0, "IsPassive" : false }], [410501, { "_id" : 410501, "Level" : 0, "IsPassive" : false }], [410504, { "_id" : 410504, "Level" : 0, "IsPassive" : false }], [410601, { "_id" : 410601, "Level" : 0, "IsPassive" : false }], [410602, { "_id" : 410602, "Level" : 0, "IsPassive" : false }], [410604, { "_id" : 410604, "Level" : 0, "IsPassive" : false }], [420101, { "_id" : 420101, "Level" : 0, "IsPassive" : false }], [420201, { "_id" : 420201, "Level" : 0, "IsPassive" : true }], [410303, { "_id" : 410303, "Level" : 0, "IsPassive" : false }], [410403, { "_id" : 410403, "Level" : 0, "IsPassive" : false }], [410503, { "_id" : 410503, "Level" : 0, "IsPassive" : false }], [410603, { "_id" : 410603, "Level" : 0, "IsPassive" : false }], [410202, { "_id" : 410202, "Level" : 0, "IsPassive" : false }], [410304, { "_id" : 410304, "Level" : 0, "IsPassive" : false }]] }#cal#{ "_t" : "UserSetting", "_id" : NumberLong(10001), "CD" : 4000, "lastCD" : NumberLong("1620142963398"), "canUse" : true, "AutoSkillList" : [410502, 0, 0, 0, 0, 0], "MainUISlotArr" : [{ "_id" : NumberLong("674076219251164237"), "RealId" : 410502, "Count" : 0, "MainUIType" : 1 }, { "_id" : NumberLong("674078315195204920"), "RealId" : 110342, "Count" : 48, "MainUIType" : 2 }, { "_id" : NumberLong("674089653908865481"), "RealId" : 410101, "Count" : 0, "MainUIType" : 1 }, { "_id" : NumberLong("674221870182109009"), "RealId" : 410201, "Count" : 0, "MainUIType" : 1 }, null, null, null, null, null], "IsAutoSkill" : true, "IsDisplayOthers" : false }#cal#{ "_t" : "Pet", "_id" : NumberLong(10001), "petId" : 2101, "name" : "宠物", "level" : 61, "exp" : 420, "petState" : 0, "intimacy" : 646, "isShow" : false, "actionEndTime" : NumberLong("1618478819547"), "addToCharacter" : [[3, 590.0], [4, 590.0], [5, 635.0], [6, 420.0], [20, 450.0], [21, 456.0]] }#cal#
\ No newline at end of file
diff --git a/FUI_UserData/CTT/assets/Bag/ButtonStarSoulSlot.xml b/FUI_UserData/CTT/assets/Bag/ButtonStarSoulSlot.xml
index 872b9000..d9f12cd6 100644
--- a/FUI_UserData/CTT/assets/Bag/ButtonStarSoulSlot.xml
+++ b/FUI_UserData/CTT/assets/Bag/ButtonStarSoulSlot.xml
@@ -7,20 +7,18 @@
-
-
-
-
+
-
+
+
\ No newline at end of file
diff --git a/FUI_UserData/CTT/assets/Bag/StarSoulBagUI.xml b/FUI_UserData/CTT/assets/Bag/StarSoulBagUI.xml
index 2bf97d0b..add21095 100644
--- a/FUI_UserData/CTT/assets/Bag/StarSoulBagUI.xml
+++ b/FUI_UserData/CTT/assets/Bag/StarSoulBagUI.xml
@@ -1,5 +1,10 @@
+
+
+
+
+
@@ -56,6 +61,34 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/FUI_UserData/CTT/assets/Bag/UpgradeUI.xml b/FUI_UserData/CTT/assets/Bag/UpgradeUI.xml
index dcfc5395..ed457d20 100644
--- a/FUI_UserData/CTT/assets/Bag/UpgradeUI.xml
+++ b/FUI_UserData/CTT/assets/Bag/UpgradeUI.xml
@@ -20,6 +20,7 @@
+
diff --git a/FUI_UserData/CTT/assets/Common/ButtonOnlyText.xml b/FUI_UserData/CTT/assets/Common/ButtonOnlyText.xml
index 86bcfada..faf0ff47 100644
--- a/FUI_UserData/CTT/assets/Common/ButtonOnlyText.xml
+++ b/FUI_UserData/CTT/assets/Common/ButtonOnlyText.xml
@@ -1,11 +1,11 @@
-
+
-
+
-
+
diff --git a/FUI_UserData/CTT/assets/Common/ButtonOnlyTextSingle.xml b/FUI_UserData/CTT/assets/Common/ButtonOnlyTextSingle.xml
index 0c337e13..a754f809 100644
--- a/FUI_UserData/CTT/assets/Common/ButtonOnlyTextSingle.xml
+++ b/FUI_UserData/CTT/assets/Common/ButtonOnlyTextSingle.xml
@@ -1,12 +1,12 @@
-
-
+
+
-
+
-
-
+
+
diff --git a/FUI_UserData/CTT/assets/Common/FrameCommon.xml b/FUI_UserData/CTT/assets/Common/FrameCommon.xml
index 977e5882..b9a280d0 100644
--- a/FUI_UserData/CTT/assets/Common/FrameCommon.xml
+++ b/FUI_UserData/CTT/assets/Common/FrameCommon.xml
@@ -13,7 +13,7 @@
-
+
diff --git a/FUI_UserData/CTT/assets/Common/GM/GMUI.xml b/FUI_UserData/CTT/assets/Common/GM/GMUI.xml
index 42400b26..6fea78e5 100644
--- a/FUI_UserData/CTT/assets/Common/GM/GMUI.xml
+++ b/FUI_UserData/CTT/assets/Common/GM/GMUI.xml
@@ -35,6 +35,7 @@
+
diff --git a/FUI_UserData/CTT/assets/Common/MainUI/MainUI.xml b/FUI_UserData/CTT/assets/Common/MainUI/MainUI.xml
index f0d629e0..ee5989bb 100644
--- a/FUI_UserData/CTT/assets/Common/MainUI/MainUI.xml
+++ b/FUI_UserData/CTT/assets/Common/MainUI/MainUI.xml
@@ -72,9 +72,9 @@
-
+
-
+
@@ -133,7 +133,7 @@
-
+
@@ -141,7 +141,7 @@
-
+
diff --git a/FUI_UserData/CTT/assets/Other/ActiveUI.xml b/FUI_UserData/CTT/assets/Other/ActiveUI.xml
new file mode 100644
index 00000000..9d1f412e
--- /dev/null
+++ b/FUI_UserData/CTT/assets/Other/ActiveUI.xml
@@ -0,0 +1,33 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/FUI_UserData/CTT/assets/Other/ButtonTab.xml b/FUI_UserData/CTT/assets/Other/ButtonTab.xml
new file mode 100644
index 00000000..aa1222a6
--- /dev/null
+++ b/FUI_UserData/CTT/assets/Other/ButtonTab.xml
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/FUI_UserData/CTT/assets/Other/LabelActionItem.xml b/FUI_UserData/CTT/assets/Other/LabelActionItem.xml
new file mode 100644
index 00000000..235fb610
--- /dev/null
+++ b/FUI_UserData/CTT/assets/Other/LabelActionItem.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/FUI_UserData/CTT/assets/Other/package.xml b/FUI_UserData/CTT/assets/Other/package.xml
index 63319917..37e86578 100644
--- a/FUI_UserData/CTT/assets/Other/package.xml
+++ b/FUI_UserData/CTT/assets/Other/package.xml
@@ -2,6 +2,9 @@
+
+
+
\ No newline at end of file
diff --git a/FUI_UserData/CTT/assets/Strength/StartSoulUpgradeUI.xml b/FUI_UserData/CTT/assets/Strength/StartSoulUpgradeUI.xml
index 34c28ab2..fb4a0995 100644
--- a/FUI_UserData/CTT/assets/Strength/StartSoulUpgradeUI.xml
+++ b/FUI_UserData/CTT/assets/Strength/StartSoulUpgradeUI.xml
@@ -27,7 +27,7 @@
-
+
@@ -36,6 +36,9 @@
+
+
+
diff --git a/Proto/OuterMessage.proto b/Proto/OuterMessage.proto
index dc1980eb..2562cea6 100644
--- a/Proto/OuterMessage.proto
+++ b/Proto/OuterMessage.proto
@@ -121,7 +121,6 @@ message EquipTransMessage
int32 Star = 7;
int32 Level = 9;
repeated int32 GemList = 12; //镶嵌的宝石
- int64 starsoulId = 13;
}
//登录相关==================================
enum LoginType //登录类型
@@ -2067,6 +2066,7 @@ message C2M_Upgrade // IActorLocationRequest
int32 RpcId = 90;
int64 ActorId = 93;
int32 Index= 1;
+ bool isLock=2;
}
message M2C_Upgrade // IActorLocationResponse
{
@@ -2920,6 +2920,7 @@ message StarSoulNetItem
int32 main=8;
repeated int32 vice=9;
repeated float viceAdd=10;
+ bool isLocked=11;
}
//ResponseType M2C_GetStarSoulBag
message C2M_GetStarSoulBag // IActorLocationRequest
@@ -2927,12 +2928,29 @@ message C2M_GetStarSoulBag // IActorLocationRequest
int32 RpcId = 90;
int64 ActorId = 93;
}
+message KV_int32_int64
+{
+ int32 key=1;
+ int64 value =2;
+}
+message KV_int32_int32
+{
+ int32 key=1;
+ int32 value =2;
+}
+message KV_string_int32
+{
+ string key=1;
+ int32 value =2;
+}
message M2C_GetStarSoulBag // IActorLocationResponse
{
int32 RpcId = 90;
int32 Error = 91;
string Message = 92;
repeated StarSoulNetItem itemList=1;
+ repeated int64 usedIdMap =2;
+ repeated KV_int32_int32 suitKVs =5;
}
message M2C_SyncStarSoulBag // IActorMessage
{
@@ -2941,6 +2959,14 @@ message M2C_SyncStarSoulBag // IActorMessage
int64 Id =1;
StarSoulNetItem item=2;
}
+message M2C_SyncStarSoulBagItemUsed // IActorMessage
+{
+ int32 RpcId = 90;
+ int64 ActorId = 93;
+ int32 key=3;
+ int64 value=4;
+ repeated KV_int32_int32 suitKVs =5;
+}
//ResponseType M2C_UpgradeStarSoulItem
message C2M_UpgradeStarSoulItem // IActorLocationRequest
{
@@ -2969,3 +2995,37 @@ message M2C_PutonStarSoulItem // IActorLocationResponse
int32 Error = 91;
string Message = 92;
}
+message C2M_LockStarSoulItem // IActorLocationMessage
+{
+ int32 RpcId = 90;
+ int64 ActorId = 93;
+ int64 itemId=2;
+ bool isLock=1;
+}
+//ResponseType M2C_StartActive
+message C2M_StartActive // IActorLocationRequest
+{
+ int32 RpcId = 90;
+ int64 ActorId = 93;
+ int32 itemId=2;
+}
+message M2C_StartActive // IActorLocationResponse
+{
+ int32 RpcId = 90;
+ int32 Error = 91;
+ string Message = 92;
+}
+//ResponseType M2C_GetUIDByName
+message C2M_GetUIDByName // IActorLocationRequest
+{
+ int32 RpcId = 90;
+ int64 ActorId = 93;
+ string name=2;
+}
+message M2C_GetUIDByName // IActorLocationResponse
+{
+ int32 RpcId = 90;
+ int32 Error = 91;
+ string Message = 92;
+ repeated KV_string_int32 map=1;
+}
diff --git a/Server/Hotfix/Game/Common/GlobalMethod.cs b/Server/Hotfix/Game/Common/GlobalMethod.cs
index 603615e2..ab28acb4 100644
--- a/Server/Hotfix/Game/Common/GlobalMethod.cs
+++ b/Server/Hotfix/Game/Common/GlobalMethod.cs
@@ -454,15 +454,12 @@ namespace ET
Log.Info(team.GetMemberName() + $"{self.battleType}胜利了!");
UnitScene unitScene = unit.GetComponent();
int mapId = unitScene.MapId;
- // if (mapId % 100 != 6)
- // {
- // //减少旅行券
- // PlayerData data = unit.GetComponent();
- // data.travelVoucher--;
- // }
await TimerComponent.Instance.WaitAsync(5000L);
- MessageHelper.SendActor(unit, new M2C_BattleVictory { BattleType = (int) self.battleType });
+ foreach (Unit unit1 in team.GetUnits())
+ {
+ MessageHelper.SendActor(unit1, new M2C_BattleVictory { BattleType = (int) self.battleType });
+ }
await TimerComponent.Instance.WaitAsync(500L);
if (MapHelper.GetMapType(mapId / 100) == UnitSceneType.SpaceTravel)
{
@@ -490,6 +487,7 @@ namespace ET
else
{
Log.Error($"{unit.Id.GetPlayerFormatName()} 位置错误 : {mapId}");
+ Game.EventSystem.Publish(new BackMainCity() { unit = unit, isForce = true });
}
await BattleHelper.VictoryOption(self, team, self.configId);
@@ -519,12 +517,6 @@ namespace ET
int mapId = unitScene.MapId;
if (unit.UnitType == UnitType.Player)
Log.Info($"{team.GetMemberName()} {self.battleType}失败了!");
- // if (mapId % 100 != 6)
- // {
- // //减少旅行券
- // PlayerData data = unit.GetComponent();
- // data.travelVoucher--;
- // }
await TimerComponent.Instance.WaitAsync(5500);
await BattleHelper.DefeatOption(self, team);
@@ -534,5 +526,98 @@ namespace ET
Log.Error(e);
}
}
+
+ [DataTableMethod]
+ public static async ETTask ActiveStarSoulCopy(object arg)
+ {
+ try
+ {
+ if(!AppConfig.inst.isTest)
+ return;
+ ActiveArgs args = arg.As();
+ var unit = args.unit;
+ if (!unit.IsTeamLeader)
+ return;
+ if (unit.teamState != TeamState.None)
+ return;
+ string[] param = args.param;
+ byte type = byte.Parse(param[0]);
+ byte difficulty = byte.Parse(param[1]);
+ int sceneId = type switch
+ {
+ 1 => Sys_SceneId.Scene_StarSoulCopyA,
+ 2 => Sys_SceneId.Scene_StarSoulCopyB,
+ 3 => Sys_SceneId.Scene_StarSoulCopyC,
+ 4 => Sys_SceneId.Scene_StarSoulCopyD,
+ 5 => Sys_SceneId.Scene_StarSoulCopyE,
+ _ => throw new ArgumentOutOfRangeException()
+ };
+ var config = unit.GetOrAddComponent();
+ config.type = type;
+ config.difficulty = difficulty;
+ Game.EventSystem.Publish(new ChangeMap() { unit = unit, mapId = sceneId * 100 + 1 });
+ }
+ catch (Exception e)
+ {
+ Log.Error(e);
+ }
+ }
+
+ [DataTableMethod]
+ public static async ETTask ActiveIdleBattle(object arg)
+ {
+ try
+ {
+ Log.Info("ActiveIdleBattle");
+ }
+ catch (Exception e)
+ {
+ Log.Error(e);
+ }
+ }
+
+ [DataTableMethod]
+ public static async ETTask StarSoulBattleVictory(object arg)
+ {
+ try
+ {
+ CopyBattleArgs copyBattleArgs = arg.As();
+ CopyBattle self = copyBattleArgs.copyBattle;
+ Team team = copyBattleArgs.team;
+ Unit unit = MapUnitComponent.Instance.Get(team.LeaderId);
+ Log.Info(team.GetMemberName() + $"{self.battleType}胜利了!");
+ UnitScene unitScene = unit.GetComponent();
+ int mapId = unitScene.MapId;
+ await TimerComponent.Instance.WaitAsync(5000L);
+ foreach (Unit unit1 in team.GetUnits())
+ {
+ MessageHelper.SendActor(unit1, new M2C_BattleVictory { BattleType = (int) self.battleType });
+ }
+ await TimerComponent.Instance.WaitAsync(500L);
+ if (MapHelper.GetMapType(mapId / 100) == UnitSceneType.StarSoulCopy)
+ {
+ int layer = mapId % 100;
+ if (layer == 3)
+ {
+ Game.EventSystem.Publish(new BackMainCity() { unit = unit, isForce = true });
+ }
+ else
+ {
+ Game.EventSystem.Publish(new ChangeMap() { unit = unit, mapId = mapId + 1 });
+ }
+ }
+ else
+ {
+ Log.Error($"{unit.Id.GetPlayerFormatName()} 位置错误 : {mapId}");
+ Game.EventSystem.Publish(new BackMainCity() { unit = unit, isForce = true });
+ }
+
+ await BattleHelper.VictoryOption(self, team, self.configId);
+ }
+ catch (Exception e)
+ {
+ Log.Error(e);
+ }
+ }
}
}
\ No newline at end of file
diff --git a/Server/Hotfix/Game/Event/AfterChangeMapEvent.cs b/Server/Hotfix/Game/Event/AfterChangeMapEvent.cs
index 3d0dd289..cd72bf0c 100644
--- a/Server/Hotfix/Game/Event/AfterChangeMapEvent.cs
+++ b/Server/Hotfix/Game/Event/AfterChangeMapEvent.cs
@@ -29,26 +29,37 @@ namespace ET
CheckMapCoinMonster(unit, mapId);
}
- if (unitSceneType is UnitSceneType.MainStory or UnitSceneType.Beach)
+ try
{
- MainStoryMap.Instance.Init(unit, unitScene.MapId);
+ if (unitSceneType is UnitSceneType.MainStory or UnitSceneType.Beach)
+ {
+ MainStoryMap.Instance.Init(unit, unitScene.MapId);
+ }
+ else if (unitSceneType == UnitSceneType.Trial)
+ {
+ TrialCopyMap.Instance.InitTrailCopyMap(unit, unitScene.MapId);
+ }
+ else if (unitSceneType == UnitSceneType.SpaceTravel)
+ {
+ GenerateSpaceTravelMapMonster(unit, unitScene);
+ }
+ else if (unitSceneType == UnitSceneType.ManulEquip)
+ {
+ GenerateManulEquipMapMonster(unit, unitScene);
+ }
+ else if (unitSceneType == UnitSceneType.StarSoulCopy)
+ {
+ GenerateStarSoulCopyMapMonster(unit, unitScene);
+ }
+ else
+ {
+ await TimerComponent.Instance.WaitAsync(500);
+ StartupTransPoint(unit, unitScene.MapId);
+ }
}
- else if (unitSceneType == UnitSceneType.Trial)
+ catch (Exception e)
{
- TrialCopyMap.Instance.InitTrailCopyMap(unit, unitScene.MapId);
- }
- else if (unitSceneType == UnitSceneType.SpaceTravel)
- {
- GenerateSpaceTravelMapMonster(unit, unitScene);
- }
- else if (unitSceneType == UnitSceneType.ManulEquip)
- {
- GenerateManulEquipMapMonster(unit, unitScene);
- }
- else
- {
- await TimerComponent.Instance.WaitAsync(500);
- StartupTransPoint(unit, unitScene.MapId);
+ Log.Error(e);
}
}
catch (Exception e)
@@ -75,7 +86,8 @@ namespace ET
{
Log.Error($"scene is error where {unit.Id.GetPlayerFormatName()} id = {_unitScene.MapId}");
return;
- }
+ }
+
int id = difficulty * 1000 + layer * 100 + 1;
ManulEquipMonsterConfig manulEquipMonsterConfig = ManulEquipMonsterConfigCategory.Instance.Get(id);
@@ -136,6 +148,39 @@ namespace ET
}).Coroutine();
}
+ private void GenerateStarSoulCopyMapMonster(Unit unit, UnitScene _unitScene)
+ {
+ Unit monster = EntityFactory.CreateWithParent(unit.DomainScene(), UnitType.Monster);
+ MapMonsterConfig mapMonsterConfig = MapMonsterConfigCategory.Instance.GetStarSoulCopyMapMonster(_unitScene.layerId);
+ Team team = TeamComponent.Instance.Get(unit.TeamLeaderId);
+ var leader = team.GetLeader();
+ StarSoulCopyConfigComponent soulCopyConfigComponent = leader.GetComponent();
+ long configId = 0;
+ StarSoulCopyConfig soulCopyConfig = StarSoulCopyConfigCategory.Instance.GetByTypeAndDifficultyAndIndex(soulCopyConfigComponent.type,
+ soulCopyConfigComponent.difficulty, (byte) _unitScene.layerId);
+ if (soulCopyConfig == null)
+ {
+ Log.Error(
+ $"config == null when type = {soulCopyConfigComponent.type} difficult = {soulCopyConfigComponent.difficulty} index = {_unitScene.layerId}");
+ return;
+ }
+
+ configId = soulCopyConfig.Id;
+ monster.AddComponent().configId = configId;
+ UnitScene unitScene = monster.AddComponent();
+ unitScene.Position = new UnityEngine.Vector2(mapMonsterConfig.X, mapMonsterConfig.Y);
+ MapMonsterComponent monsterComponent = unit.GetComponent();
+ monsterComponent.Add(MapMonsterType.StarSoulCopy, monster);
+ Game.EventSystem.Publish(new ET.EventType.OnCreateUnit
+ {
+ actor = unit,
+ monsterId = monster.Id,
+ pos = unitScene.Position,
+ configId = (int) mapMonsterConfig.Id,
+ monsterType = MapMonsterType.StarSoulCopy
+ }).Coroutine();
+ }
+
private void CheckMapCoinMonster(Unit unit, int mapId)
{
Unit monster = MapCoinComponent.instance.GetCoinMonster(mapId);
diff --git a/Server/Hotfix/Game/Event/Battle/BattleEndEvent.cs b/Server/Hotfix/Game/Event/Battle/BattleEndEvent.cs
index 6515e04b..703eace3 100644
--- a/Server/Hotfix/Game/Event/Battle/BattleEndEvent.cs
+++ b/Server/Hotfix/Game/Event/Battle/BattleEndEvent.cs
@@ -224,6 +224,22 @@ namespace ET
await SpaceTravelReward(unit, monsterBase, rewordMap);
return;
+ case BattleType.StarSoulCopy:
+ StarSoulCopyConfig soulCopyConfig =StarSoulCopyConfigCategory.Instance.Get(configId);
+ if (soulCopyConfig == null)
+ {
+ Log.ErrorDetail($"{unit.Id.GetPlayerFormatName()} battle type is {battleType} configId = {configId}");
+ return;
+ }
+ monsterBase = MonsterBaseCategory.Instance.Get(soulCopyConfig.MonsterIdArr[0]);
+ if (monsterBase == null)
+ {
+ Log.ErrorDetail($"{unit.Id.GetPlayerFormatName()} battle type is {battleType} MonsterId = {soulCopyConfig.MonsterIdArr[0]}");
+ return;
+ }
+
+ await StarSoulCopyReward(unit, monsterBase, rewordMap,soulCopyConfig);
+ return;
}
}
catch (Exception e)
@@ -379,6 +395,41 @@ namespace ET
SendMessage(unit, num, rewardRet, 0, 0);
}
+
+ private async ETTask StarSoulCopyReward(Unit unit, MonsterBase monsterBase, UnOrderMultiMap rewordMap,
+ StarSoulCopyConfig starSoulCopyConfig)
+ {
+ await ETTask.CompletedTask;
+ float reduceDrop = 1;
+ PlayerData playerData = unit.GetComponent();
+ if (playerData.ForbidExp)
+ reduceDrop = 0;
+ if (!unit.IsAlive)
+ {
+ reduceDrop *= 0.3f;
+ }
+ NumericComponent num = unit.GetComponent();
+
+ if (reduceDrop == 0) return;
+ M2C_SendReward rewardRet = new M2C_SendReward();
+ DropHelper.Drop(unit, playerData, BattleType.ManulEquip, monsterBase.Dropasubset, rewordMap, reduceDrop, "星魂副本掉落", false, list:rewardRet.ItemList);
+ SendMessage(unit, num, rewardRet, 0, 0);
+ Team team = TeamComponent.Instance.Get(unit.TeamLeaderId);
+ var leader = team.GetLeader();
+ if (!leader)
+ return;
+ StarSoulCopyConfigComponent soulCopyConfigComponent = leader.GetComponent();
+ byte difficulty = soulCopyConfigComponent.difficulty;
+ byte type = soulCopyConfigComponent.type;
+ int count = RandomHelper.RandomNumber(starSoulCopyConfig.StarSoulCountMin, starSoulCopyConfig.StarSoulCountMax+1);
+ StarSoulBag bag = unit.GetComponent();
+ for (int i = 0; i < count; i++)
+ {
+ StarSoulItem item= ItemHelper.GenerateStarSoulItem(type, difficulty);
+ bag.Add(item);
+ }
+
+ }
private static void SendMessage(Unit unit, NumericComponent num, M2C_SendReward rewardRet, long exp, long coin)
{
diff --git a/Server/Hotfix/Game/Handler/GM/C2M_GetUIDByNameHandler.cs b/Server/Hotfix/Game/Handler/GM/C2M_GetUIDByNameHandler.cs
new file mode 100644
index 00000000..be8b8afa
--- /dev/null
+++ b/Server/Hotfix/Game/Handler/GM/C2M_GetUIDByNameHandler.cs
@@ -0,0 +1,27 @@
+using System;
+
+namespace ET
+{
+ [ActorMessageHandler]
+ public class C2M_GetUIDByNameHandler: AMActorLocationRpcHandler
+ {
+ protected override async ETTask Run(Unit unit, C2M_GetUIDByName request, M2C_GetUIDByName respones, Action reply)
+ {
+ if (!AppConfig.inst.whiteIds.Contains(unit.Id))
+ {
+ respones.Message = "对不起,您没有权限!";
+ reply();
+ return;
+ }
+
+ var list = await DBComponent.Instance.Query(t => t.NickName.Contains(request.name));
+ foreach (User user in list)
+ {
+ respones.map.Add(new KV_string_int32() { key = user.NickName, value = (int) user.Id });
+ }
+
+ reply();
+ await ETTask.CompletedTask;
+ }
+ }
+}
\ No newline at end of file
diff --git a/Server/Hotfix/Game/Handler/Map/C2M_ClickMapUnitHandler.cs b/Server/Hotfix/Game/Handler/Map/C2M_ClickMapUnitHandler.cs
index 932d4c3f..9913c0a5 100644
--- a/Server/Hotfix/Game/Handler/Map/C2M_ClickMapUnitHandler.cs
+++ b/Server/Hotfix/Game/Handler/Map/C2M_ClickMapUnitHandler.cs
@@ -46,6 +46,9 @@ namespace ET
case MapMonsterType.SpaceTravel:
strRet = await StartSpaceTravelBattle(unit, monster);
break;
+ case MapMonsterType.StarSoulCopy:
+ strRet = await StartStarSoulCopyBattle(unit, monster);
+ break;
default:
throw new ArgumentOutOfRangeException();
}
@@ -150,5 +153,37 @@ namespace ET
battle.Init(team, battle.targetTeam, CopyConfigId.SpaceTravelBattle, spaceTravelConfig.Id);
return null;
}
+
+ private async ETTask StartStarSoulCopyBattle(Unit unit, Unit monster)
+ {
+ Team team = TeamComponent.Instance.Get(unit.TeamLeaderId);
+
+ if (team.TeamState == TeamState.Fight)
+ {
+ Log.Error($"*【{UserComponent.Instance.Get(unit.Id)?.NickName} ({unit.Id})】多次进行星魂副本战斗");
+ return "系统错误";
+ }
+
+ UnitScene unitScene = unit.GetComponent();
+ UnitSceneType unitSceneType = MapHelper.GetMapType(unitScene.sceneId);
+ if (unitSceneType != UnitSceneType.StarSoulCopy)
+ {
+ Log.Error($"*【{UserComponent.Instance.Get(unit.Id)?.NickName} ({unit.Id})】场景{unitScene.MapId / 100}错误");
+ return "系统错误";
+ }
+
+ long configId = monster.GetComponent().configId;
+ StarSoulCopyConfig soulCopyConfig = StarSoulCopyConfigCategory.Instance.Get(configId);
+ if ((unitScene.Position - monster.Position).sqrMagnitude > MoveHelper.AtkDis)
+ {
+ Log.Error($"*【{UserComponent.Instance.Get(unit.Id)?.NickName} ({unit.Id})】位置{unitScene.Position}错误");
+ return "系统错误";
+ }
+
+ CopyBattle battle = BattleMgrCompnent.Instance.CreateBattle(team);
+ MonsterFactoryHelper.StarSoulGenerate(battle, soulCopyConfig);
+ battle.Init(team, battle.targetTeam, CopyConfigId.StarSoulBattle, soulCopyConfig.Id);
+ return null;
+ }
}
}
\ No newline at end of file
diff --git a/Server/Hotfix/Game/Handler/Other/C2M_StartActiveHandler.cs b/Server/Hotfix/Game/Handler/Other/C2M_StartActiveHandler.cs
new file mode 100644
index 00000000..24b1f401
--- /dev/null
+++ b/Server/Hotfix/Game/Handler/Other/C2M_StartActiveHandler.cs
@@ -0,0 +1,45 @@
+using System;
+using System.Collections.Generic;
+using Cal.DataTable;
+
+namespace ET
+{
+ public class ActiveArgs
+ {
+ public Unit unit;
+ public string[] param;
+ }
+
+ [ActorMessageHandler]
+ public class C2M_StartActiveHandler : AMActorLocationRpcHandler
+ {
+ protected override async ETTask Run(Unit unit, C2M_StartActive request, M2C_StartActive response, Action reply)
+ {
+ ActivePerDayConfig activePerDayConfig = ActivePerDayConfigCategory.Instance.Get(request.itemId);
+ if (activePerDayConfig == null)
+ {
+ Log.Error($"{unit.Id.GetPlayerFormatName()} 活动Id错误:{request.itemId}");
+ response.Message = "系统错误";
+ reply();
+ return;
+ }
+
+ int weekDay = (int) DateTime.Today.DayOfWeek;
+ if (!activePerDayConfig.Day.As>().Contains(weekDay))
+ {
+ Log.Error($"{unit.Id.GetPlayerFormatName()} 活动日期错误:{activePerDayConfig.Day.ToCustomString()} today = {weekDay}");
+ response.Message = "系统错误";
+ reply();
+ return;
+ }
+
+ await GlobalMethodHelper.Call(activePerDayConfig.BattleMethod,new ActiveArgs
+ {
+ unit = unit,param = activePerDayConfig.Params
+ });
+ reply();
+ await ETTask.CompletedTask;
+ }
+ }
+
+}
diff --git a/Server/Hotfix/Game/Handler/UI/Bag/C2M_GetStarSoulBagHandler.cs b/Server/Hotfix/Game/Handler/UI/Bag/C2M_GetStarSoulBagHandler.cs
index 80114775..45c46c7c 100644
--- a/Server/Hotfix/Game/Handler/UI/Bag/C2M_GetStarSoulBagHandler.cs
+++ b/Server/Hotfix/Game/Handler/UI/Bag/C2M_GetStarSoulBagHandler.cs
@@ -24,6 +24,7 @@ namespace ET
netItem.typeId = item.typeId;
netItem.isUsed = item.isUsed;
netItem.main = item.mainId;
+ netItem.isLocked = item.isLocked;
foreach (int id in item.viceIds)
{
netItem.vice.Add(id);
@@ -38,7 +39,15 @@ namespace ET
Log.Error(e);
}
}
-
+ response.usedIdMap.AddRange(bag.usedStarSoulDic.Values);
+ foreach (StarSoulSuit starSoulSuit in bag.Suits)
+ {
+ response.suitKVs.Add(new KV_int32_int32()
+ {
+ key = starSoulSuit.Id,
+ value = (int) starSoulSuit.type
+ });
+ }
reply();
await ETTask.CompletedTask;
}
diff --git a/Server/Hotfix/Game/Handler/UI/Bag/C2M_LockStarSoulItemHandler.cs b/Server/Hotfix/Game/Handler/UI/Bag/C2M_LockStarSoulItemHandler.cs
new file mode 100644
index 00000000..97ceedfd
--- /dev/null
+++ b/Server/Hotfix/Game/Handler/UI/Bag/C2M_LockStarSoulItemHandler.cs
@@ -0,0 +1,14 @@
+
+namespace ET
+{
+ [ActorMessageHandler]
+ public class C2M_LockStarSoulItemHandler : AMActorLocationHandler
+ {
+ protected override async ETTask Run(Unit unit, C2M_LockStarSoulItem message)
+ {
+ StarSoulBag bag = unit.GetComponent();
+ bag.Lock(message.itemId,message.isLock);
+ await ETTask.CompletedTask;
+ }
+ }
+}
\ No newline at end of file
diff --git a/Server/Hotfix/Game/Handler/UI/Bag/C2M_PutonStarSoulItemHandler.cs b/Server/Hotfix/Game/Handler/UI/Bag/C2M_PutonStarSoulItemHandler.cs
index 38c4c905..c0e8b39b 100644
--- a/Server/Hotfix/Game/Handler/UI/Bag/C2M_PutonStarSoulItemHandler.cs
+++ b/Server/Hotfix/Game/Handler/UI/Bag/C2M_PutonStarSoulItemHandler.cs
@@ -12,7 +12,6 @@ namespace ET
response.Message = "战斗中";
reply();
return;
- ;
}
var bag = unit.GetComponent();
string retStr = bag.PutonItem(request.itemId);
diff --git a/Server/Hotfix/Game/Handler/UI/Bag/C2M_UpgradeHandler.cs b/Server/Hotfix/Game/Handler/UI/Bag/C2M_UpgradeHandler.cs
index b4d335d9..5229393b 100644
--- a/Server/Hotfix/Game/Handler/UI/Bag/C2M_UpgradeHandler.cs
+++ b/Server/Hotfix/Game/Handler/UI/Bag/C2M_UpgradeHandler.cs
@@ -7,7 +7,7 @@ namespace ET
{
protected override async ETTask Run(Unit unit, C2M_Upgrade request, M2C_Upgrade response, Action reply)
{
- string ret = await ItemComponent.Instance.UpgradeItem(unit, request.Index);
+ string ret = await ItemComponent.Instance.UpgradeItem(unit, request.Index,request.isLock);
if (!ret.Equals(string.Empty))
{
response.Message = ret;
diff --git a/Server/Hotfix/Game/Helper/CharacterHelper.cs b/Server/Hotfix/Game/Helper/CharacterHelper.cs
index ca2b3602..c9789614 100644
--- a/Server/Hotfix/Game/Helper/CharacterHelper.cs
+++ b/Server/Hotfix/Game/Helper/CharacterHelper.cs
@@ -116,99 +116,99 @@ namespace ET
switch (type)
{
case AttributeType.最大生命:
- num.Set(NumericType.MaxHpBase, combat.GetAtribute(type));
+ num.Set(NumericType.MaxHpBase, combat.GetAtrribute(type));
break;
case AttributeType.最大精力:
- num.Set(NumericType.MaxMpBase, combat.GetAtribute(type));
+ num.Set(NumericType.MaxMpBase, combat.GetAtrribute(type));
break;
case AttributeType.力量:
- num.Set(NumericType.StrBase, combat.GetAtribute(type));
+ num.Set(NumericType.StrBase, combat.GetAtrribute(type));
break;
case AttributeType.敏捷:
- num.Set(NumericType.QukBase, combat.GetAtribute(type));
+ num.Set(NumericType.QukBase, combat.GetAtrribute(type));
break;
case AttributeType.精神:
- num.Set(NumericType.SpiBase, combat.GetAtribute(type));
+ num.Set(NumericType.SpiBase, combat.GetAtrribute(type));
break;
case AttributeType.智慧:
- num.Set(NumericType.WimBase, combat.GetAtribute(type));
+ num.Set(NumericType.WimBase, combat.GetAtrribute(type));
break;
case AttributeType.物理攻击:
- num.Set(NumericType.PhyAtkBase, combat.GetAtribute(type));
+ num.Set(NumericType.PhyAtkBase, combat.GetAtrribute(type));
break;
case AttributeType.精神攻击:
- num.Set(NumericType.SpiAtkBase, combat.GetAtribute(type));
+ num.Set(NumericType.SpiAtkBase, combat.GetAtrribute(type));
break;
case AttributeType.物理防御:
- num.Set(NumericType.PhyDefBase, combat.GetAtribute(type));
+ num.Set(NumericType.PhyDefBase, combat.GetAtrribute(type));
break;
case AttributeType.精神防御:
- num.Set(NumericType.SpiDefBase, combat.GetAtribute(type));
+ num.Set(NumericType.SpiDefBase, combat.GetAtrribute(type));
break;
case AttributeType.物理暴击系数:
- num.Set(NumericType.PcrirBase, combat.GetAtribute(type));
+ num.Set(NumericType.PcrirBase, combat.GetAtrribute(type));
break;
case AttributeType.精神暴击系数:
- num.Set(NumericType.McrirBase, combat.GetAtribute(type));
+ num.Set(NumericType.McrirBase, combat.GetAtrribute(type));
break;
case AttributeType.物理暴击效果:
- num.Set(NumericType.PcriBase, combat.GetAtribute(type));
+ num.Set(NumericType.PcriBase, combat.GetAtrribute(type));
break;
case AttributeType.精神暴击效果:
- num.Set(NumericType.McriBase, combat.GetAtribute(type));
+ num.Set(NumericType.McriBase, combat.GetAtrribute(type));
break;
case AttributeType.抗物理暴击系数:
- num.Set(NumericType.RpcrirBase, combat.GetAtribute(type));
+ num.Set(NumericType.RpcrirBase, combat.GetAtrribute(type));
break;
case AttributeType.抗精神暴击系数:
- num.Set(NumericType.RmcrirBase, combat.GetAtribute(type));
+ num.Set(NumericType.RmcrirBase, combat.GetAtrribute(type));
break;
case AttributeType.抗物理暴击效果:
- num.Set(NumericType.RpcriBase, combat.GetAtribute(type));
+ num.Set(NumericType.RpcriBase, combat.GetAtrribute(type));
break;
case AttributeType.抗精神暴击效果:
- num.Set(NumericType.RmcriBase, combat.GetAtribute(type));
+ num.Set(NumericType.RmcriBase, combat.GetAtrribute(type));
break;
case AttributeType.辅助值:
- num.Set(NumericType.DvoBase, combat.GetAtribute(type));
+ num.Set(NumericType.DvoBase, combat.GetAtrribute(type));
break;
case AttributeType.体质:
- num.Set(NumericType.PhyBase, combat.GetAtribute(type));
+ num.Set(NumericType.PhyBase, combat.GetAtrribute(type));
break;
case AttributeType.耐力:
- num.Set(NumericType.StaBase, combat.GetAtribute(type));
+ num.Set(NumericType.StaBase, combat.GetAtrribute(type));
break;
case AttributeType.物理免伤:
- num.Set(NumericType.NphyiBase, combat.GetAtribute(type));
+ num.Set(NumericType.NphyiBase, combat.GetAtrribute(type));
break;
case AttributeType.精神免伤:
- num.Set(NumericType.NmeniBase, combat.GetAtribute(type));
+ num.Set(NumericType.NmeniBase, combat.GetAtrribute(type));
break;
case AttributeType.速度:
- num.Set(NumericType.SpdBase, combat.GetAtribute(type));
+ num.Set(NumericType.SpdBase, combat.GetAtrribute(type));
break;
case AttributeType.命中:
- num.Set(NumericType.HitBase, combat.GetAtribute(type));
+ num.Set(NumericType.HitBase, combat.GetAtrribute(type));
break;
case AttributeType.抵抗:
- num.Set(NumericType.ResBase, combat.GetAtribute(type));
+ num.Set(NumericType.ResBase, combat.GetAtrribute(type));
break;
case AttributeType.无:
break;
case AttributeType.吸血率:
- num.Set(NumericType.SuckRBase, combat.GetAtribute(type));
+ num.Set(NumericType.SuckRBase, combat.GetAtrribute(type));
break;
case AttributeType.吸血量:
- num.Set(NumericType.SuckVBase, combat.GetAtribute(type));
+ num.Set(NumericType.SuckVBase, combat.GetAtrribute(type));
break;
case AttributeType.生命回复:
- num.Set(NumericType.HpRecoverBase, combat.GetAtribute(type));
+ num.Set(NumericType.HpRecoverBase, combat.GetAtrribute(type));
break;
case AttributeType.物理增伤:
- num.Set(NumericType.PhyDABase, combat.GetAtribute(type));
+ num.Set(NumericType.PhyDABase, combat.GetAtrribute(type));
break;
case AttributeType.精神增伤:
- num.Set(NumericType.MicDABase, combat.GetAtribute(type));
+ num.Set(NumericType.MicDABase, combat.GetAtrribute(type));
break;
default:
break;
diff --git a/Server/Hotfix/Game/Helper/DropHelper.cs b/Server/Hotfix/Game/Helper/DropHelper.cs
index 4c7074c0..9b9c1805 100644
--- a/Server/Hotfix/Game/Helper/DropHelper.cs
+++ b/Server/Hotfix/Game/Helper/DropHelper.cs
@@ -17,11 +17,11 @@ namespace ET
{
int sonSetId = playerData.UpdateDrop(subSet._Id);
SonSet sonSet = SonSetCategory.Instance.Get(sonSetId);
- (int itemId, int itemCount) = GetItemFormSet(sonSet.DropArr, dropProperbility, false);
+ (int itemId, int itemCount) = GetItemFormSet(sonSet.DropArr, dropProperbility, false,out bool sonSetIsLock);
if (itemId == 0) continue;
if (!isLock)
{
- isLock = sonSet.IsLock;
+ isLock = sonSetIsLock;
}
BagHelper.AddItem(unit, itemId, itemCount, isLock, getSource: getSource);
@@ -77,7 +77,7 @@ namespace ET
}
}
- private static (int, int) GetItemFormSet(IReadOnlyList arr, float damagePercent, bool isKilled)
+ private static (int, int) GetItemFormSet(IReadOnlyList arr, float damagePercent, bool isKilled,out bool isLock)
{
using ListComponent listComponent = ListComponent.Create();
List weightList = listComponent.List;
@@ -95,6 +95,7 @@ namespace ET
int index = MathHelper.GetProbabilityIndexByWeight(weightList);
SonSet.Drop item = arr[index];
+ isLock = item.IsLock;
return (item._Id, RandomHelper.RandomNumber(item.MinCount, item.MaxCount + 1));
}
}
diff --git a/Server/Hotfix/Game/Helper/GMTool.cs b/Server/Hotfix/Game/Helper/GMTool.cs
index 47382c7e..f3c92738 100644
--- a/Server/Hotfix/Game/Helper/GMTool.cs
+++ b/Server/Hotfix/Game/Helper/GMTool.cs
@@ -2,6 +2,7 @@
using System.Collections.Generic;
using System.IO;
using System.Linq;
+using System.Text;
namespace ET
{
@@ -278,13 +279,13 @@ namespace ET
{
if (u.UnitType == UnitType.Player)
{
- for (int i = 0; i < 10; i++)
+ for (int i = 0; i < 100; i++)
{
if (value == 0)
{
value = RandomHelper.RandomNumber(1, 5);
}
- var item= ItemHelper.GenerateStarSoulItem((Quality)value );
+ var item= ItemHelper.GenerateStarSoulItem(RandomHelper.RandomNumber(1001,1011),(Quality)value );
StarSoulBag bag = u.GetComponent();
bag.Add(item);
}
@@ -306,6 +307,117 @@ namespace ET
return "成功";
}
else
+ if (cmdType.Equals("exportUser", StringComparison.OrdinalIgnoreCase))
+ {
+ long uid = value;
+ try
+ {
+ User user = await DBComponent.Instance.Query(uid);
+ if (user==null)
+ {
+ return $"user is null where id = {uid}";
+ }
+
+ Character character = await DBComponent.Instance.Query(uid);
+ Bag bag = await DBComponent.Instance.Query(uid);
+ UnitSkillComponent skill = await DBComponent.Instance.Query(uid);
+ UserSetting userSetting = await DBComponent.Instance.Query(uid);
+ NumericComponent num = await DBComponent.Instance.Query(uid);
+ Pet pet = await DBComponent.Instance.Query(uid);
+
+ string path = "../Export";
+ if (!File.Exists(path))
+ {
+ Directory.CreateDirectory(path);
+ }
+
+ StringBuilder sb = new StringBuilder();
+ sb
+ .Append( MongoHelper.ToJson(user)).Append("#cal#")
+ .Append( MongoHelper.ToJson(character)).Append("#cal#")
+ .Append( MongoHelper.ToJson(bag)).Append("#cal#")
+ .Append( MongoHelper.ToJson(skill)).Append("#cal#")
+ .Append( MongoHelper.ToJson(userSetting)).Append("#cal#")
+ .Append( MongoHelper.ToJson(num)).Append("#cal#")
+ .Append( MongoHelper.ToJson(pet))
+ ;
+ path = path + $"/{uid}.json";
+ if(File.Exists(path))
+ File.Delete(path);
+ await File.WriteAllTextAsync(path, sb.ToString());
+ }
+ catch (Exception e)
+ {
+ Log.Error(e);
+ }
+ return "成功";
+ }
+ else
+ if (cmdType.Equals("inportUser", StringComparison.OrdinalIgnoreCase))
+ {
+ if (!AppConfig.inst.isTest)
+ return "测试服专用";
+ long olsId = value;
+ long uid = count;
+ try
+ {
+ User user = await UserComponent.Instance.Query(uid);
+ if (user==null)
+ {
+ return $"user is null where id = {uid}";
+ }
+
+ string path = $"../Export/{olsId}.json";
+ string str = await File.ReadAllTextAsync(path);
+ string[] arrStr = str.Replace($"\"_id\" : NumberLong({olsId})", $"\"_id\" : NumberLong({uid})").Split("#cal#");
+
+
+ int index = 0;
+ User user_ = MongoHelper.FromJson(arrStr[index++]);
+ user.JobId = user_.JobId;
+ Character character = MongoHelper.FromJson(arrStr[index++]);
+ Bag bag = MongoHelper.FromJson(arrStr[index++]);
+ UnitSkillComponent skill =MongoHelper.FromJson(arrStr[index++]);
+ UserSetting userSetting = MongoHelper.FromJson(arrStr[index++]);
+ NumericComponent num = MongoHelper.FromJson(arrStr[index++]);
+ Pet pet = MongoHelper.FromJson(arrStr[index++]);
+
+ Unit unit_ = MapUnitComponent.Instance.Get(uid);
+ if (unit_)
+ {
+ unit_.RemoveComponent();
+ unit_.AddComponent(character);
+ unit_.RemoveComponent();
+ unit_.AddComponent(bag);
+ unit_.RemoveComponent();
+ unit_.AddComponent(skill);
+ unit_.RemoveComponent();
+ unit_.AddComponent(userSetting);
+ unit_.RemoveComponent();
+ unit_.AddComponent(num);
+ unit_.RemoveComponent();
+ unit_.AddComponent(pet);
+ CharacterHelper.SyncNumeric(unit_);
+ }
+ else
+ {
+ DBComponent.Instance.Save(user);
+ UnitHelper.SaveComponenet(character);
+ UnitHelper.SaveComponenet(bag);
+ UnitHelper.SaveComponenet(skill);
+ UnitHelper.SaveComponenet(userSetting);
+ UnitHelper.SaveComponenet(num);
+ UnitHelper.SaveComponenet(pet);
+ }
+
+ }
+ catch (Exception e)
+ {
+ Log.Error(e);
+ }
+ return "成功";
+ }
+ else
if (cmdType.Equals("addAllAITime", StringComparison.OrdinalIgnoreCase))
{
List list = await DBComponent.Instance.QueryJson("{}");
diff --git a/Server/Hotfix/Game/Helper/ItemHelper.cs b/Server/Hotfix/Game/Helper/ItemHelper.cs
index f7e496d9..898bd154 100644
--- a/Server/Hotfix/Game/Helper/ItemHelper.cs
+++ b/Server/Hotfix/Game/Helper/ItemHelper.cs
@@ -176,16 +176,38 @@ namespace ET
private static readonly List starSoulViceCountWeight = new()
{
0,
- 40,
- 40,
- 16,
- 4
+ 15,
+ 60,
+ 20,
+ 5
};
- public static StarSoulItem GenerateStarSoulItem(Quality starQuality = Quality.Common)
+ public static StarSoulItem GenerateStarSoulItem(byte type, byte difficulty)
+ {
+ if (type == 0)
+ {
+ Log.Error($"type={type} difficulty={difficulty}");
+ return null;
+ }
+ if (difficulty == 0)
+ {
+ Log.Error($"type={type} difficulty={difficulty}");
+ return null;
+ }
+
+ var list= StarSoulTypeConfigCategory.Instance.idDic[type];
+ if (list.Count != 0)
+ {
+ int id = list.RandomArray();
+ return GenerateStarSoulItem(id, (Quality)difficulty);
+ }
+
+ return null;
+ }
+ public static StarSoulItem GenerateStarSoulItem(int typeId,Quality starQuality = Quality.Common)
{
StarSoulItem item = new();
- item.typeId = (int) StarSoulTypeConfigCategory.Instance.ids.RandomArray();
+ item.typeId = typeId;
item.level = 0;
item.exp = 0;
int qualityInt = RandomHelper.RandomByWeight(starSoulQualityWeightList);
@@ -196,34 +218,23 @@ namespace ET
item.quality = quality;
item.Id = Game.IdGenerater.GenerateId();
item.posType = (EquipType) RandomHelper.RandomNumber(0, 12);
- long mainId = GenerateMain(item.posType, qualityInt);
+ long mainId = GenerateMain(item.posType, quality);
if (mainId == -1) return null;
item.mainId = (int) mainId;
GenerateVice(item);
return item;
- static long GenerateMain(EquipType type, int qualityInt)
+ static long GenerateMain(EquipType type,Quality qualityInt)
{
StarSoulEquipAttributeTypeConfig starSoulEquipAttributeTypeConfig =
StarSoulEquipAttributeTypeConfigCategory.Instance.Get((long) type);
if (starSoulEquipAttributeTypeConfig == null) return -1;
- var mainAttibuteList = StarSoulAttributeConfigCategory.Instance.mainAttributeDic[qualityInt];
- long Id = -1;
- using var list1 = ListComponent.Create();
using var weightList = ListComponent.Create();
- var orginWeightList = StarSoulAttributeConfigCategory.Instance.mainWeigt;
- for (var i = 0; i < mainAttibuteList.Count; i++)
+ foreach (StarSoulEquipAttributeTypeConfig.AttributeType attributeType in starSoulEquipAttributeTypeConfig.AttributeTypeArr)
{
- var l = mainAttibuteList[i];
- StarSoulAttributeConfig soulAttributeConfig = StarSoulAttributeConfigCategory.Instance.Get(l);
- if (starSoulEquipAttributeTypeConfig.AttributeTypeArr.As>().Contains(soulAttributeConfig.Key))
- {
- list1.List.Add(l);
- weightList.List.Add(orginWeightList[i]);
- }
+ weightList.List.Add(attributeType.Prob);
}
-
int mainIndex = RandomHelper.RandomByWeight(weightList.List);
if (mainIndex == -1)
{
@@ -231,14 +242,9 @@ namespace ET
return -1;
}
- if (mainIndex >= list1.List.Count)
- {
- Log.Error($"{mainIndex}>{list1.List.Count}");
- return -1;
- }
-
- Id = list1.List[mainIndex];
-
+ byte key = starSoulEquipAttributeTypeConfig.AttributeTypeArr[mainIndex].Key;
+ long Id= StarSoulAttributeConfigCategory.Instance.GetMainValue(qualityInt, key);
+
return Id;
}
@@ -276,6 +282,11 @@ namespace ET
starSoulItem.viceIds[index] = (int) id;
}
+ public static float GetRealMainValue(float oldValue, byte level)
+ {
+ return oldValue*MathF.Pow(mainAddCoe, level);
+ }
+ private const float mainAddCoe = 1.1f;
private const float reduceCoe = 0.8f;
private const float reduceCoe1 = 0.6f;
diff --git a/Server/Hotfix/Game/Helper/MapHelper.cs b/Server/Hotfix/Game/Helper/MapHelper.cs
index c3437b97..3831e5f0 100644
--- a/Server/Hotfix/Game/Helper/MapHelper.cs
+++ b/Server/Hotfix/Game/Helper/MapHelper.cs
@@ -56,6 +56,9 @@ namespace ET
>=Sys_SceneId.Scene_SpaceTravel1 and
<=Sys_SceneId.Scene_SpaceTravel6
=> UnitSceneType.SpaceTravel,
+ >=Sys_SceneId.Scene_StarSoulCopyA and
+ <=Sys_SceneId.Scene_StarSoulCopyE
+ => UnitSceneType.StarSoulCopy,
_ => UnitSceneType.Common,
};
}
diff --git a/Server/Hotfix/Game/Helper/MonsterFactoryHelper.cs b/Server/Hotfix/Game/Helper/MonsterFactoryHelper.cs
index 61649909..2bc01fe1 100644
--- a/Server/Hotfix/Game/Helper/MonsterFactoryHelper.cs
+++ b/Server/Hotfix/Game/Helper/MonsterFactoryHelper.cs
@@ -303,6 +303,56 @@ namespace ET
return familyBossConfig;
}
+
+ public static void StarSoulGenerate(CopyBattle self, StarSoulCopyConfig config)
+ {
+ Team team = self.team;
+
+ Team targetTeam = EntityFactory.Create(Game.Scene);
+ targetTeam.LeaderId = team.LeaderId;
+ int difficultIndex = team.MemberCount - 1;
+ float hpDifficult = 1 + ConstDefine.HpDifficultyArr[difficultIndex];
+ float atkDefDifficult = 1 + ConstDefine.AtkDefDifficultyArr[difficultIndex];
+
+ foreach (int monsterId in config.MonsterIdArr)
+ {
+ MonsterBase monsterBase = MonsterBaseCategory.Instance.Get(monsterId);
+ Unit unitMonster = EntityFactory.CreateWithParent(targetTeam, UnitType.Monster);
+ //!设置基础属性
+ unitMonster.AddComponent().Set(NumericType.Level, monsterBase.Level);
+ Character character = unitMonster.AddComponent();
+ unitMonster.AddComponent();
+ character.Set(AttributeType.最大生命, MathHelper.RoundToInt(monsterBase.Hp * hpDifficult));
+ character.Set(AttributeType.物理攻击, MathHelper.RoundToInt(monsterBase.PhyAtk * atkDefDifficult));
+ character.Set(AttributeType.精神攻击, MathHelper.RoundToInt(monsterBase.SpiAtk * atkDefDifficult));
+ character.Set(AttributeType.物理防御, MathHelper.RoundToInt(monsterBase.PhyDef * atkDefDifficult));
+ character.Set(AttributeType.精神防御, MathHelper.RoundToInt(monsterBase.SpiDef * atkDefDifficult));
+
+ character.Set(AttributeType.力量, MathHelper.RoundToInt(monsterBase.Str * atkDefDifficult));
+ character.Set(AttributeType.智慧, MathHelper.RoundToInt(monsterBase.Wim * atkDefDifficult));
+ character.Set(AttributeType.敏捷, MathHelper.RoundToInt(monsterBase.Quk * atkDefDifficult));
+ character.Set(AttributeType.精神, MathHelper.RoundToInt(monsterBase.Spi * atkDefDifficult));
+ character.Set(AttributeType.体质, MathHelper.RoundToInt(monsterBase.Phy * atkDefDifficult));
+ character.Set(AttributeType.耐力, MathHelper.RoundToInt(monsterBase.Sta * atkDefDifficult));
+
+ character.Set(AttributeType.物理暴击系数, monsterBase.Pcrir * atkDefDifficult);
+ character.Set(AttributeType.物理暴击效果, monsterBase.Pcri * atkDefDifficult);
+ character.Set(AttributeType.精神暴击系数, monsterBase.Mcrir * atkDefDifficult);
+ character.Set(AttributeType.精神暴击效果, monsterBase.Mcri * atkDefDifficult);
+ character.Set(AttributeType.抗物理暴击系数, monsterBase.Rpcrir * atkDefDifficult);
+ character.Set(AttributeType.抗物理暴击效果, monsterBase.Rpcri * atkDefDifficult);
+ character.Set(AttributeType.抗精神暴击系数, monsterBase.Rmcrir * atkDefDifficult);
+ character.Set(AttributeType.抗精神暴击效果, monsterBase.Rmcri * atkDefDifficult);
+ character.Set(AttributeType.辅助值, monsterBase.Dvo * atkDefDifficult);
+ character.Set(AttributeType.物理免伤, monsterBase.Nphyi);
+ character.Set(AttributeType.精神免伤, monsterBase.Nmeni);
+
+ MonsterInit(team.GetLeader().GetMap(), unitMonster, team.LeaderId, targetTeam, (int) config.Id, (int) monsterBase.Id,
+ monsterBase.Level, monsterBase.SkillGroupId);
+ }
+
+ self.targetTeam = targetTeam;
+ }
///
/// 3处需要改动
///
diff --git a/Server/Hotfix/Game/Helper/StatisticsHelper.cs b/Server/Hotfix/Game/Helper/StatisticsHelper.cs
index 4b568248..29188c42 100644
--- a/Server/Hotfix/Game/Helper/StatisticsHelper.cs
+++ b/Server/Hotfix/Game/Helper/StatisticsHelper.cs
@@ -8,6 +8,7 @@ namespace ET
{
public struct StatisticsTypes
{
+ public const string EnergyCostType_StarSoul = "EnergyCostType_StarSoul";
public const string EnergyCostType_MainStory = "EnergyCostType_MainStory";
public const string EnergyCostType_IdleBattle = "EnergyCostType_IdleBattle";
public const string CoinSources_IdleBattle = "CoinSources_IdleBattle";
diff --git a/Server/Hotfix/Game/System/Bag/BagSystem.cs b/Server/Hotfix/Game/System/Bag/BagSystem.cs
index 1af37cec..34ae8c7a 100644
--- a/Server/Hotfix/Game/System/Bag/BagSystem.cs
+++ b/Server/Hotfix/Game/System/Bag/BagSystem.cs
@@ -30,7 +30,6 @@ namespace ET
public override void Destroy(Bag self)
{
self.ItemCount = 0;
- self.CurrEquipServerId = 0;
self.ItemDic.Clear();
self.WornEquipDic.Clear();
self.getAttributeFunc = null;
@@ -93,7 +92,7 @@ namespace ET
bounds += equipItem.GetAdditionalAttribute(attributeType);
bounds += equipItem.GetRandomAttribute(attributeType);
bounds += equipItem.GetGemAttribute(attributeType);
- bounds += equipItem.GetStarSoulAttribute(self,attributeType);
+ // bounds += equipItem.GetStarSoulAttribute(self,attributeType);
}
foreach (int suitId in self.suitAttributes)
{
@@ -735,23 +734,23 @@ namespace ET
public static string PutonStarSoulItem(this Bag self,EquipType equipType, long id,out long oldId)
{
oldId = 0;
- if (!self.WornEquipDic.TryGetValue((int) equipType, out Item wornItem))
- {
- Log.Error($"【{self.Id.GetPlayerFormatName()} ({ self.Id})】 系统错误,{equipType}在字典中没有索引");
- return "系统错误";
- }
-
- if (wornItem.IsEmpty)
- {
- return "先穿戴装备";
- }
-
- EquipItem data= wornItem.data.As();
- if (data.starSoulItemServerId != 0)
- {
- oldId = data.starSoulItemServerId;
- }
- data.starSoulItemServerId = id;
+ // if (!self.WornEquipDic.TryGetValue((int) equipType, out Item wornItem))
+ // {
+ // Log.Error($"【{self.Id.GetPlayerFormatName()} ({ self.Id})】 系统错误,{equipType}在字典中没有索引");
+ // return "系统错误";
+ // }
+ //
+ // if (wornItem.IsEmpty)
+ // {
+ // return "先穿戴装备";
+ // }
+ //
+ // EquipItem data= wornItem.data.As();
+ // if (data.starSoulItemServerId != 0)
+ // {
+ // oldId = data.starSoulItemServerId;
+ // }
+ // data.starSoulItemServerId = id;
return null;
}
}
diff --git a/Server/Hotfix/Game/System/Bag/EquipItemSystem.cs b/Server/Hotfix/Game/System/Bag/EquipItemSystem.cs
index 3f7a7b6b..b431122c 100644
--- a/Server/Hotfix/Game/System/Bag/EquipItemSystem.cs
+++ b/Server/Hotfix/Game/System/Bag/EquipItemSystem.cs
@@ -287,41 +287,41 @@ namespace ET
return 0;
}
- public static float GetStarSoulAttribute(this EquipItem self, Bag bag, AttributeType type)
- {
- float value = 0;
- try
- {
- if (self.starSoulItemServerId != 0)
- {
- if(self.starSoulItemServerId==0)
- return value;
- StarSoulBag starSoulBag = bag.Parent.GetComponent();
- StarSoulItem item = starSoulBag.Get(self.starSoulItemServerId);
- if (item == null)
- {
- return value;
- }
-
- StarSoulAttributeConfig soulAttributeConfig = StarSoulAttributeConfigCategory.Instance.Get(item.mainId);
- if (soulAttributeConfig.Key == (int) type)
- value += soulAttributeConfig.Value;
- for (var i = 0; i < item.viceIds.Length; i++)
- {
- if(item.viceIds[i]==0)
- break;
- soulAttributeConfig = StarSoulAttributeConfigCategory.Instance.Get(item.viceIds[i]);
- if (soulAttributeConfig.Key == (int) type)
- value += ItemHelper.GetRealViceValue(soulAttributeConfig.Value*(1+item.viceAdd[i]),item.quality);
- }
- }
- }
- catch (Exception e)
- {
- Log.Error(e);
- }
-
- return value;
- }
+ // public static float GetStarSoulAttribute(this EquipItem self, Bag bag, AttributeType type)
+ // {
+ // float value = 0;
+ // try
+ // {
+ // if (self.starSoulItemServerId != 0)
+ // {
+ // if(self.starSoulItemServerId==0)
+ // return value;
+ // StarSoulBag starSoulBag = bag.Parent.GetComponent();
+ // StarSoulItem item = starSoulBag.Get(self.starSoulItemServerId);
+ // if (item == null)
+ // {
+ // return value;
+ // }
+ //
+ // StarSoulAttributeConfig soulAttributeConfig = StarSoulAttributeConfigCategory.Instance.Get(item.mainId);
+ // if (soulAttributeConfig.Key == (int) type)
+ // value += ItemHelper.GetRealMainValue(soulAttributeConfig.Value,item.level);
+ // for (var i = 0; i < item.viceIds.Length; i++)
+ // {
+ // if(item.viceIds[i]==0)
+ // break;
+ // soulAttributeConfig = StarSoulAttributeConfigCategory.Instance.Get(item.viceIds[i]);
+ // if (soulAttributeConfig.Key == (int) type)
+ // value += ItemHelper.GetRealViceValue(soulAttributeConfig.Value*(1+item.viceAdd[i]),item.quality);
+ // }
+ // }
+ // }
+ // catch (Exception e)
+ // {
+ // Log.Error(e);
+ // }
+ //
+ // return value;
+ // }
}
}
\ No newline at end of file
diff --git a/Server/Hotfix/Game/System/Bag/ItemComponentSystem.cs b/Server/Hotfix/Game/System/Bag/ItemComponentSystem.cs
index d4ea0849..79a05e27 100644
--- a/Server/Hotfix/Game/System/Bag/ItemComponentSystem.cs
+++ b/Server/Hotfix/Game/System/Bag/ItemComponentSystem.cs
@@ -339,14 +339,16 @@ namespace ET
return string.Empty;
}
+
///
/// 进化
///
///
///
///
+ ///
///
- public static async ETTask UpgradeItem(this ItemComponent self, Unit unit, int itemIndex)
+ public static async ETTask UpgradeItem(this ItemComponent self, Unit unit, int itemIndex, bool requestIsLock)
{
Bag bag = unit.GetComponent();
if (!bag.ItemDic.TryGetValueByKey1(itemIndex, out Item item))
@@ -370,7 +372,7 @@ namespace ET
{
return "背包已满,至少留出一个空位!";
}
- bool needUnlocked = !item.IsLock;
+ bool needUnlocked =!requestIsLock && !item.IsLock;
using ListComponent<(int, int)> listComponent = ListComponent<(int, int)>.Create();
List<(int, int)> removeList = listComponent.List;
for (int i = itemUpgrade.UpgradeNeedMaterialArr.Length - 1; i >= 0; i--)
diff --git a/Server/Hotfix/Game/System/Bag/StarSoulBagSystem.cs b/Server/Hotfix/Game/System/Bag/StarSoulBagSystem.cs
index 9cd3fe12..e8b2ae6c 100644
--- a/Server/Hotfix/Game/System/Bag/StarSoulBagSystem.cs
+++ b/Server/Hotfix/Game/System/Bag/StarSoulBagSystem.cs
@@ -1,6 +1,7 @@
using System;
using System.Collections;
using System.Collections.Generic;
+using Cal;
using Cal.DataTable;
namespace ET
@@ -10,6 +11,7 @@ namespace ET
public override void Awake(StarSoulBag self)
{
self.InitData();
+ self.getAttributeFunc = self.GetAttribute;
}
}
@@ -17,6 +19,9 @@ namespace ET
{
public override void Deserialize(StarSoulBag self)
{
+ self.getAttributeFunc = self.GetAttribute;
+ if(self.usedStarSoulDic.Count==0)
+ self.InitData();
}
}
@@ -26,6 +31,10 @@ namespace ET
{
self.ItemCount = 0;
self.itemDic.Clear();
+ self.Suits.Clear();
+ self.typeStarSoulCount.Clear();
+ self.usedStarSoulDic.Clear();
+ self.getAttributeFunc = null;
}
}
@@ -33,12 +42,54 @@ namespace ET
{
public static void InitData(this StarSoulBag self)
{
+ for (int i = 0; i < 12; i++)
+ {
+ self.usedStarSoulDic[(byte) i] = 0;
+ }
#if UNITY
GetDataFromServer(self);
-
#endif
}
+ public static float GetAttribute(this StarSoulBag self, AttributeType attributeType)
+ {
+ var bound = 0f;
+ try
+ {
+ foreach (var kv in self.usedStarSoulDic)
+ {
+ long starSoulId = kv.Value;
+ if (starSoulId != 0)
+ {
+ if(starSoulId==0)
+ return bound;
+ StarSoulBag starSoulBag = self;
+ StarSoulItem item = starSoulBag.Get(starSoulId);
+ if (item == null)
+ {
+ return bound;
+ }
+
+ StarSoulAttributeConfig soulAttributeConfig = StarSoulAttributeConfigCategory.Instance.Get(item.mainId);
+ if (soulAttributeConfig.Key == (int) attributeType)
+ bound += ItemHelper.GetRealMainValue(soulAttributeConfig.Value,item.level);
+ for (var i = 0; i < item.viceIds.Length; i++)
+ {
+ if(item.viceIds[i]==0)
+ break;
+ soulAttributeConfig = StarSoulAttributeConfigCategory.Instance.Get(item.viceIds[i]);
+ if (soulAttributeConfig.Key == (int) attributeType)
+ bound += ItemHelper.GetRealViceValue(soulAttributeConfig.Value*(1+item.viceAdd[i]),item.quality);
+ }
+ }
+ }
+ }
+ catch (Exception e)
+ {
+ Log.Error(e);
+ }
+ return bound;
+ }
public static bool CanAdd(this StarSoulBag self)
{
return self.ItemCount < StarSoulBag.MaxCount;
@@ -80,6 +131,22 @@ namespace ET
return itemBase;
}
+ private static void Sync(this StarSoulBag self,byte key)
+ {
+ self.usedStarSoulDic.TryGetValue(key, out long value);
+ M2C_SyncStarSoulBagItemUsed proto = new();
+ proto.key = key;
+ proto.value = value;
+ foreach (StarSoulSuit starSoulSuit in self.Suits)
+ {
+ proto.suitKVs.Add(new KV_int32_int32()
+ {
+ key = starSoulSuit.Id,
+ value = (int) starSoulSuit.type
+ });
+ }
+ MessageHelper.SendActor(self.GetParent(), proto);
+ }
private static void Sync(this StarSoulBag self, long Id, StarSoulItem item)
{
M2C_SyncStarSoulBag proto = new();
@@ -90,7 +157,6 @@ namespace ET
}
else
{
-
netItem.Id = item.Id;
netItem.level = item.level;
netItem.exp = item.exp;
@@ -99,6 +165,7 @@ namespace ET
netItem.typeId = item.typeId;
netItem.isUsed = item.isUsed;
netItem.main = item.mainId;
+ netItem.isLocked = item.isLocked;
foreach (int id in item.viceIds)
{
netItem.vice.Add(id);
@@ -131,21 +198,22 @@ namespace ET
do
{
if (item.level + addLevel >= 20) break;
+ nextLevel = (byte) (item.level + addLevel + 1);
StarSoulLevelConfig soulLevelConfig = StarSoulLevelConfigCategory.Instance.GetByQualityAndLevel(item.quality, nextLevel);
int needExp = soulLevelConfig.NeedExp;
var (exp, needGold) = expList[0];
+ var payRet = CharacterHelper.ReduceMoney(self.Parent, CharacterHelper.MoneyType.Coin, needGold * 100_00);
+ if (payRet != null)
+ {
+ AddLevel(self, item, addLevel, totalExp);
+ return payRet;
+ }
+
totalExp += exp;
expList.RemoveAt(0);
needCount++;
if (totalExp >= needExp)
{
- var payRet = CharacterHelper.ReduceMoney(self.Parent, CharacterHelper.MoneyType.Coin, needGold * 100_00);
- if (payRet != null)
- {
- AddLevel(self, item, addLevel, totalExp);
- return payRet;
- }
-
totalExp -= needExp;
addLevel++;
}
@@ -157,14 +225,10 @@ namespace ET
static void AddLevel(StarSoulBag self, StarSoulItem item, int addLevel, int totalExp)
{
- if (addLevel > 0)
- {
- item.exp = 0;
- }
byte old = item.level;
item.level = (byte) (item.level + addLevel);
AddAttribute(item, old, 4);
- item.exp += totalExp;
+ item.exp = totalExp;
self.Sync(item.Id, item);
}
}
@@ -263,39 +327,95 @@ namespace ET
return "系统错误";
}
- EquipType equipType = item.posType;
- Bag bag = self.Parent.GetComponent();
- long oldId = 0;
+ byte key = (byte) item.posType;
if (item.isUsed)
{
- var ret = bag.PutonStarSoulItem(equipType,0,out oldId);
- if (ret != null)
+ self.usedStarSoulDic.TryGetValue(key, out var oldId);
+ if (oldId == 0)
{
- return ret;
+ Log.Error($"{self.Id.GetPlayerFormatName()} {item}");
+ item.isUsed = false;
+ self.Sync(item.Id, item);
+ return "未找到星魂";
+ }
+
+ self.usedStarSoulDic[key] = 0;
+ self.typeStarSoulCount.TryGetValue(item.typeId, out int count);
+ if (count > 0)
+ self.typeStarSoulCount[item.typeId] = --count;
+ else
+ {
+ Log.Error($"{self.Id.GetPlayerFormatName()} {item}");
}
item.isUsed = false;
}
+ //放置
else
{
- var ret = bag.PutonStarSoulItem(equipType,item.Id,out oldId);
- if (ret != null)
+ int count = 0;
+ self.usedStarSoulDic.TryGetValue(key, out var oldId);
+ self.usedStarSoulDic[key] = item.Id;
+ if (oldId != 0)
{
- return ret;
+ StarSoulItem oldItem = self.Get(oldId);
+ if (oldItem != null)
+ {
+ self.typeStarSoulCount.TryGetValue(oldItem.typeId, out count);
+ if (count > 0)
+ self.typeStarSoulCount[oldItem.typeId] = --count;
+ else
+ {
+ Log.Error($"{self.Id.GetPlayerFormatName()} {item}");
+ }
+
+ oldItem.isUsed = false;
+ self.Sync(oldItem.Id, oldItem);
+ }
}
+ self.typeStarSoulCount.TryGetValue(item.typeId, out count);
+ self.typeStarSoulCount[item.typeId] = ++count;
item.isUsed = true;
}
+ CheckSuit(self);
CharacterHelper.SyncNumeric(self.Parent);
- var oldItem = self.Get(oldId);
- if (oldItem != null)
- {
- oldItem.isUsed = false;
- self.Sync(oldItem.Id,oldItem);
- }
- self.Sync(item.Id,item);
+ self.Sync(key);
+ self.Sync(item.Id, item);
return null;
}
+
+ private static void CheckSuit(this StarSoulBag self)
+ {
+ self.Suits.Clear();
+ foreach (var kv in self.typeStarSoulCount)
+ {
+ if (kv.Value >= 8)
+ {
+ AddSuit(self, kv.Key, StarSoulSuit.StarSoulSuitType.Suit4And8);
+ }
+ else if (kv.Value >= 4)
+ {
+ AddSuit(self, kv.Key, StarSoulSuit.StarSoulSuitType.Suit4);
+ }
+ }
+
+ static void AddSuit(StarSoulBag self, int id, StarSoulSuit.StarSoulSuitType type)
+ {
+ StarSoulSuit suit = new() { Id = id, type = type };
+ self.Suits.Add(suit);
+ }
+ }
+
+ public static void Lock(this StarSoulBag self, long id, bool messageIsLock)
+ {
+ var item = self.Get(id);
+ if (item != null)
+ {
+ item.isLocked = messageIsLock;
+ self.Sync(item.Id, item);
+ }
+ }
}
}
\ No newline at end of file
diff --git a/Server/Hotfix/Game/System/Battle/New/CopyBattleSystem.cs b/Server/Hotfix/Game/System/Battle/New/CopyBattleSystem.cs
index 4234435f..2afc2e2d 100644
--- a/Server/Hotfix/Game/System/Battle/New/CopyBattleSystem.cs
+++ b/Server/Hotfix/Game/System/Battle/New/CopyBattleSystem.cs
@@ -5,11 +5,11 @@ using Cal.DataTable;
namespace ET
{
- public class CopyBattleAwakeSystem: AwakeSystem
+ public class CopyBattleAwakeSystem: AwakeSystem
{
- public override void Awake(CopyBattle self)
+ public override void Awake(CopyBattle self,Team team)
{
- self.Awake();
+ self.Awake(team);
}
}
@@ -31,11 +31,12 @@ namespace ET
public static class CopyBattleSystem
{
- public static void Awake(this CopyBattle self)
+ public static void Awake(this CopyBattle self, Team team)
{
+ self.team = team;
self.bossDamageMap = new BossDamageMap();
- self.isRunning = false;
- self.quitBattleAction = OnQuitBattle;
+ self.isRunning = false;
+ self.quitBattleAction = OnQuitBattle;
}
public static void Update(this CopyBattle self)
@@ -180,8 +181,10 @@ namespace ET
item.GetMap()?.Leave(item);
item.Dispose();
}
+
self.targetTeam.Dispose();
}
+
self.targetTeam = null;
self.copyConfigId = 0;
self.configId = 0;
@@ -248,7 +251,7 @@ namespace ET
int num2 = num;
num -= copyConfig.NeedEnergy;
component.Set(NumericType.Energy, num);
- StatisticsHelper.AddEnergyCost(u.Id, "EnergyCostType_MainStory", num2 - num);
+ StatisticsHelper.AddEnergyCost(u.Id, StatisticsTypes.EnergyCostType_MainStory, num2 - num);
}
// self.SendMonsterInfo();
@@ -410,8 +413,9 @@ namespace ET
{
Log.Error(e);
}
- }
- private static void OnQuitBattle(CopyBattle self, Team team,long Id)
+ }
+
+ private static void OnQuitBattle(CopyBattle self, Team team, long Id)
{
try
{
diff --git a/Server/Hotfix/Game/System/Map/PvpMapSystem.cs b/Server/Hotfix/Game/System/Map/PvpMapSystem.cs
index 376aaa77..66fa012f 100644
--- a/Server/Hotfix/Game/System/Map/PvpMapSystem.cs
+++ b/Server/Hotfix/Game/System/Map/PvpMapSystem.cs
@@ -27,7 +27,7 @@ namespace ET
public override async ETTask Run(UpdatePer1HourOfDay args)
{
DateTime dateTime = DateTime.Now;
- if (dateTime.DayOfWeek != DayOfWeek.Wednesday && dateTime.DayOfWeek != DayOfWeek.Friday)
+ if (dateTime.DayOfWeek != System.DayOfWeek.Wednesday && dateTime.DayOfWeek != System.DayOfWeek.Friday)
{
return;
}
@@ -170,7 +170,7 @@ namespace ET
DateTime dateTime = DateTime.Now;
if (AppConfig.inst.isTest)
return null;
- if (dateTime.DayOfWeek != DayOfWeek.Wednesday && dateTime.DayOfWeek != DayOfWeek.Friday)
+ if (dateTime.DayOfWeek != System.DayOfWeek.Wednesday && dateTime.DayOfWeek != System.DayOfWeek.Friday)
{
return $"周三、周五 开启!";
}
diff --git a/Server/Hotfix/Game/System/Other/ActiveComponentSystem.cs b/Server/Hotfix/Game/System/Other/ActiveComponentSystem.cs
new file mode 100644
index 00000000..8dd31c44
--- /dev/null
+++ b/Server/Hotfix/Game/System/Other/ActiveComponentSystem.cs
@@ -0,0 +1,15 @@
+namespace ET
+{
+ public class ActiveComponentAwakeSystem:AwakeSystem
+ {
+ public override void Awake(ActiveComponent self)
+ {
+ ActiveComponent.instance = self;
+ }
+ }
+
+ public static class ActiveComponentSystem
+ {
+
+ }
+}
\ No newline at end of file
diff --git a/Server/Hotfix/Game/System/User/CombatSystem.cs b/Server/Hotfix/Game/System/User/CombatSystem.cs
index 2fb97332..4d125429 100644
--- a/Server/Hotfix/Game/System/User/CombatSystem.cs
+++ b/Server/Hotfix/Game/System/User/CombatSystem.cs
@@ -1,20 +1,21 @@
using Cal;
using System;
using System.Collections.Generic;
+using Cal.DataTable;
namespace ET
{
- public class CombatDestroySystem : DestroySystem
+ public class CombatDestroySystem: DestroySystem
{
public override void Destroy(Combat self)
{
self.Destory();
}
}
+
public static class CombatSystem
{
-
- public static float GetAtribute(this Combat self, AttributeType attributeType)
+ public static float GetAtrribute(this Combat self, AttributeType attributeType)
{
float value = 0;
if (self.sources == null)
@@ -22,6 +23,7 @@ namespace ET
Log.Error($"{self.Parent.Id} 没有ICombat组件");
return 0;
}
+
foreach (ICombatBounds item in self.sources)
{
if (item.getAttributeFunc == null)
@@ -29,31 +31,172 @@ namespace ET
else
value += item.getAttributeFunc.Invoke(attributeType);
}
- switch (attributeType)
+
+ if (CanAddByPoint(attributeType))
{
- case AttributeType.最大生命:
- case AttributeType.最大精力:
- case AttributeType.物理攻击:
- case AttributeType.精神攻击:
- case AttributeType.物理防御:
- case AttributeType.精神防御:
- case AttributeType.辅助值:
- case AttributeType.速度:
- case AttributeType.命中:
- case AttributeType.抵抗:
- value += CharacterHelper.GetAttributeByPoint(self,attributeType,
- GetAtribute(self, AttributeType.力量),
- GetAtribute(self, AttributeType.智慧),
- GetAtribute(self, AttributeType.敏捷),
- GetAtribute(self, AttributeType.精神),
- GetAtribute(self, AttributeType.体质),
- GetAtribute(self, AttributeType.耐力));
- break;
- default:
- break;
+ value += CharacterHelper.GetAttributeByPoint(self, attributeType,
+ GetAtrribute(self, AttributeType.力量),
+ GetAtrribute(self, AttributeType.智慧),
+ GetAtrribute(self, AttributeType.敏捷),
+ GetAtrribute(self, AttributeType.精神),
+ GetAtrribute(self, AttributeType.体质),
+ GetAtrribute(self, AttributeType.耐力));
}
+ value += AddAttributeByCharacter(self, attributeType);
return value;
}
+ private static bool CanAddByPoint(AttributeType attributeType)
+ {
+ //递归调用,避免死循环
+ return attributeType is
+ AttributeType.最大生命
+ or AttributeType.最大精力
+ or AttributeType.物理攻击
+ or AttributeType.精神攻击
+ or AttributeType.物理防御
+ or AttributeType.精神防御
+ or AttributeType.辅助值
+ or AttributeType.速度
+ or AttributeType.命中
+ or AttributeType.抵抗;
+ }
+
+ ///
+ /// 是否可以加成
+ ///
+ ///
+ ///
+ ///
+ private static bool CanAddPercentAttribute(this AttributeType self, AttributeType type)
+ {
+ if (self == type)
+ return true;
+ return self switch
+ {
+ AttributeType.攻击加成 => type is AttributeType.物理攻击 or AttributeType.精神攻击,
+ AttributeType.防御加成 => type is AttributeType.物理防御 or AttributeType.精神防御,
+ AttributeType.生命加成 => type is AttributeType.最大生命,
+ AttributeType.精力加成 => type is AttributeType.最大精力,
+ // AttributeType.暴击系数 => type is AttributeType.物理暴击系数 or AttributeType.精神暴击系数,
+ // AttributeType.暴击效果 => type is AttributeType.物理暴击效果 or AttributeType.精神暴击效果,
+ // AttributeType.抗暴击系数 => type is AttributeType.抗物理暴击系数 or AttributeType.抗精神暴击系数,
+ // AttributeType.抗暴击效果 => type is AttributeType.抗物理暴击效果 or AttributeType.抗精神暴击效果,
+ _ => false
+ };
+ }
+
+ ///
+ /// 加成属性
+ ///
+ ///
+ ///
+ ///
+ private static bool CanAddFixedAttribute(this AttributeType self, AttributeType type)
+ {
+ if (self == type)
+ {
+ return true;
+ }
+
+ switch (self)
+ {
+ case AttributeType.暴击系数:
+ return type is AttributeType.物理暴击系数 or AttributeType.精神暴击系数;
+ case AttributeType.暴击效果:
+ return type is AttributeType.物理暴击效果 or AttributeType.精神暴击效果;
+ case AttributeType.抗暴击系数:
+ return type is AttributeType.抗物理暴击系数 or AttributeType.抗精神暴击系数;
+ case AttributeType.抗暴击效果:
+ return type is AttributeType.抗物理暴击效果 or AttributeType.抗精神暴击效果;
+ default:
+ {
+ return false;
+ }
+ }
+ }
+
+ private static float AddAttributeByCharacter(Combat self, AttributeType attributeType)
+ {
+ try
+ {
+ Character character = self.Parent.GetComponent();
+ if (character.getAttributeFunc == null)
+ {
+ Log.Error($"{self.Id.GetPlayerFormatName()}getAttributeFunc == null");
+ return 0;
+ }
+
+ StarSoulBag bag = self.Parent.GetComponent();
+ if (!bag)
+ return 0;
+ if (bag.Suits.Count == 0)
+ return 0;
+ float oldValue = 0;
+ if (CanAddByPoint(attributeType))
+ {
+ oldValue += CharacterHelper.GetAttributeByPoint(self, attributeType,
+ character.getAttributeFunc.Invoke(AttributeType.力量),
+ character.getAttributeFunc.Invoke(AttributeType.智慧),
+ character.getAttributeFunc.Invoke(AttributeType.敏捷),
+ character.getAttributeFunc.Invoke(AttributeType.精神),
+ character.getAttributeFunc.Invoke(AttributeType.体质),
+ character.getAttributeFunc.Invoke(AttributeType.耐力));
+ }
+
+ foreach (StarSoulSuit starSoulSuit in bag.Suits)
+ {
+ StarSoulTypeConfig soulTypeConfig = StarSoulTypeConfigCategory.Instance.Get(starSoulSuit.Id);
+ if (soulTypeConfig == null)
+ continue;
+ if (starSoulSuit.type.HasFlag(StarSoulSuit.StarSoulSuitType.Suit4))
+ {
+ AttributeType type = ((AttributeType) soulTypeConfig.Suit4Key);
+ if (type.CanAddFixedAttribute(attributeType))
+ oldValue += soulTypeConfig.Suit4Value;
+ else if (type.CanAddPercentAttribute(attributeType))
+ {
+ AddValue(attributeType, ref oldValue, soulTypeConfig.Suit4Value);
+ }
+ }
+
+ if (starSoulSuit.type.HasFlag(StarSoulSuit.StarSoulSuitType.Suit8))
+ {
+ AttributeType type = ((AttributeType) soulTypeConfig.Suit8Key);
+ if (type.CanAddFixedAttribute(attributeType))
+ oldValue += soulTypeConfig.Suit8Value;
+ else if (type.CanAddPercentAttribute(attributeType))
+ {
+ AddValue(attributeType, ref oldValue, soulTypeConfig.Suit8Value);
+ }
+ }
+ }
+
+ static void AddValue(AttributeType attributeType, ref float oldValue, float addValue)
+ {
+ switch (attributeType)
+ {
+ case AttributeType.最大生命:
+ case AttributeType.最大精力:
+ case AttributeType.物理攻击:
+ case AttributeType.精神攻击:
+ case AttributeType.物理防御:
+ case AttributeType.精神防御:
+ oldValue = oldValue * (1 + addValue);
+ break;
+ default:
+ throw new ArgumentOutOfRangeException(nameof (attributeType), attributeType, null);
+ }
+ }
+
+ return oldValue;
+ }
+ catch (Exception e)
+ {
+ Log.Error(e);
+ }
+
+ return 0;
+ }
}
-}
+}
\ No newline at end of file
diff --git a/Server/Hotfix/Game/System/User/PlayerDataSystem.cs b/Server/Hotfix/Game/System/User/PlayerDataSystem.cs
index 3f7ad53b..ac26c324 100644
--- a/Server/Hotfix/Game/System/User/PlayerDataSystem.cs
+++ b/Server/Hotfix/Game/System/User/PlayerDataSystem.cs
@@ -119,8 +119,8 @@ namespace ET
data.travelVoucher = 10;
data.hasReceiveTrialCopyReword = false;
- DayOfWeek today = DateTime.Now.DayOfWeek;
- if (today is DayOfWeek.Saturday or DayOfWeek.Sunday)
+ System.DayOfWeek today = DateTime.Now.DayOfWeek;
+ if (today is System.DayOfWeek.Saturday or System.DayOfWeek.Sunday)
data.mainstoryAITime += 4 * 60 * 60 * 1000;
else
data.mainstoryAITime += 2 * 60 * 60 * 1000;
diff --git a/Server/Hotfix/Scene/SceneFactory.cs b/Server/Hotfix/Scene/SceneFactory.cs
index 81312d70..a166ca55 100644
--- a/Server/Hotfix/Scene/SceneFactory.cs
+++ b/Server/Hotfix/Scene/SceneFactory.cs
@@ -37,6 +37,7 @@ namespace ET
case SceneType.Map:
scene.AddComponent();
scene.AddComponent();
+ scene.AddComponent();
scene.AddComponent();
scene.AddComponent();
scene.AddComponent();
diff --git a/Server/Model/Game/Common/UnitSceneType.cs b/Server/Model/Game/Common/UnitSceneType.cs
index 8bd0cc8d..0edae810 100644
--- a/Server/Model/Game/Common/UnitSceneType.cs
+++ b/Server/Model/Game/Common/UnitSceneType.cs
@@ -17,5 +17,6 @@ namespace ET
PersonalPvp = 5,
ManulEquip = 6,
SpaceTravel =7,
+ StarSoulCopy =8,
}
}
diff --git a/Server/Model/Game/Data/ActivePerDayConfig.cs b/Server/Model/Game/Data/ActivePerDayConfig.cs
new file mode 100644
index 00000000..d9ab4267
--- /dev/null
+++ b/Server/Model/Game/Data/ActivePerDayConfig.cs
@@ -0,0 +1,34 @@
+using ET;
+using MongoDB.Bson.Serialization.Attributes;
+
+namespace Cal.DataTable
+{
+ [Config]
+ public partial class ActivePerDayConfigCategory : ACategory
+ {
+ public static ActivePerDayConfigCategory Instance;
+ public ActivePerDayConfigCategory()
+ {
+ Instance = this;
+ }
+ }
+
+ public partial class ActivePerDayConfig:IConfig
+ {
+ public partial class Reward
+ {
+ public int RewardId;
+ public int Count;
+ }
+ [BsonId]
+ public long Id { get; set; }
+ public int[] Day;
+ public byte Type;
+ public string Name;
+ public string Desc;
+ public string BattleMethod;
+ public string[] Params;
+ public string Condition;
+ public Reward[] RewardArr;
+ }
+}
diff --git a/Server/Model/Game/Data/CopyConfigId.cs b/Server/Model/Game/Data/CopyConfigId.cs
index 833d10b4..a30bd6b5 100644
--- a/Server/Model/Game/Data/CopyConfigId.cs
+++ b/Server/Model/Game/Data/CopyConfigId.cs
@@ -54,5 +54,9 @@ namespace Cal.DataTable
/// 时空旅行战斗
///
public const int SpaceTravelBattle = 10013;
+ ///
+ /// 星魂副本战斗
+ ///
+ public const int StarSoulBattle = 10014;
}
}
diff --git a/Server/Model/Game/Data/MapMonsterConfigId.cs b/Server/Model/Game/Data/MapMonsterConfigId.cs
index 1a0b8377..49f75c7b 100644
--- a/Server/Model/Game/Data/MapMonsterConfigId.cs
+++ b/Server/Model/Game/Data/MapMonsterConfigId.cs
@@ -46,5 +46,17 @@ namespace Cal.DataTable
/// 隐藏boss
///
public const int SpaceTravel6 = 1011;
+ ///
+ /// 星魂侍者
+ ///
+ public const int StarSoul1 = 1012;
+ ///
+ /// 星魂操纵者
+ ///
+ public const int StarSoul2 = 1013;
+ ///
+ /// 星魂极巫
+ ///
+ public const int StarSoul3 = 1014;
}
}
diff --git a/Server/Model/Game/Data/SonSet.cs b/Server/Model/Game/Data/SonSet.cs
index 40534aa5..70629553 100644
--- a/Server/Model/Game/Data/SonSet.cs
+++ b/Server/Model/Game/Data/SonSet.cs
@@ -22,10 +22,10 @@ namespace Cal.DataTable
public int Weight;
public int MinCount;
public int MaxCount;
+ public bool IsLock;
}
[BsonId]
public long Id { get; set; }
public Drop[] DropArr;
- public bool IsLock;
}
}
diff --git a/Server/Model/Game/Data/StarSoulAttributeConfig.cs b/Server/Model/Game/Data/StarSoulAttributeConfig.cs
index 1f2124cd..574097f4 100644
--- a/Server/Model/Game/Data/StarSoulAttributeConfig.cs
+++ b/Server/Model/Game/Data/StarSoulAttributeConfig.cs
@@ -17,11 +17,11 @@ namespace Cal.DataTable
{
[BsonId]
public long Id { get; set; }
- public int Type;
- public int Quality;
- public int Key;
+ public byte Type;
+ public byte Quality;
+ public byte Key;
[BsonRepresentation(MongoDB.Bson.BsonType.Double, AllowTruncation = true)]
public float Value;
- public int ViceWeight;
+ public byte ViceWeight;
}
}
diff --git a/Server/Model/Game/Data/StarSoulCopyConfig.cs b/Server/Model/Game/Data/StarSoulCopyConfig.cs
new file mode 100644
index 00000000..5d38718c
--- /dev/null
+++ b/Server/Model/Game/Data/StarSoulCopyConfig.cs
@@ -0,0 +1,27 @@
+using ET;
+using MongoDB.Bson.Serialization.Attributes;
+
+namespace Cal.DataTable
+{
+ [Config]
+ public partial class StarSoulCopyConfigCategory : ACategory
+ {
+ public static StarSoulCopyConfigCategory Instance;
+ public StarSoulCopyConfigCategory()
+ {
+ Instance = this;
+ }
+ }
+
+ public partial class StarSoulCopyConfig:IConfig
+ {
+ [BsonId]
+ public long Id { get; set; }
+ public byte Type;
+ public byte Difficulty;
+ public byte BossIndex;
+ public int[] MonsterIdArr;
+ public byte StarSoulCountMin;
+ public byte StarSoulCountMax;
+ }
+}
diff --git a/Server/Model/Game/Data/StarSoulEquipAttributeTypeConfig.cs b/Server/Model/Game/Data/StarSoulEquipAttributeTypeConfig.cs
index 2a6b753a..69c0de07 100644
--- a/Server/Model/Game/Data/StarSoulEquipAttributeTypeConfig.cs
+++ b/Server/Model/Game/Data/StarSoulEquipAttributeTypeConfig.cs
@@ -15,8 +15,13 @@ namespace Cal.DataTable
public partial class StarSoulEquipAttributeTypeConfig:IConfig
{
+ public partial class AttributeType
+ {
+ public byte Key;
+ public byte Prob;
+ }
[BsonId]
public long Id { get; set; }
- public int[] AttributeTypeArr;
+ public AttributeType[] AttributeTypeArr;
}
}
diff --git a/Server/Model/Game/Data/StarSoulTypeConfig.cs b/Server/Model/Game/Data/StarSoulTypeConfig.cs
index 1930a0f4..89e266ab 100644
--- a/Server/Model/Game/Data/StarSoulTypeConfig.cs
+++ b/Server/Model/Game/Data/StarSoulTypeConfig.cs
@@ -19,5 +19,14 @@ namespace Cal.DataTable
public long Id { get; set; }
public string Name;
public string Icon;
+ public byte CopyType;
+ public byte Suit4Key;
+ [BsonRepresentation(MongoDB.Bson.BsonType.Double, AllowTruncation = true)]
+ public float Suit4Value;
+ public string Suit4;
+ public byte Suit8Key;
+ [BsonRepresentation(MongoDB.Bson.BsonType.Double, AllowTruncation = true)]
+ public float Suit8Value;
+ public string Suit8;
}
}
diff --git a/Server/Model/Game/Data/Sys_SceneId.cs b/Server/Model/Game/Data/Sys_SceneId.cs
index 6a0f41d3..a040c682 100644
--- a/Server/Model/Game/Data/Sys_SceneId.cs
+++ b/Server/Model/Game/Data/Sys_SceneId.cs
@@ -178,5 +178,25 @@ namespace Cal.DataTable
/// 时空旅行6
///
public const int Scene_SpaceTravel6 = 10044;
+ ///
+ /// A星魂副本
+ ///
+ public const int Scene_StarSoulCopyA = 10045;
+ ///
+ /// B星魂副本
+ ///
+ public const int Scene_StarSoulCopyB = 10046;
+ ///
+ /// C星魂副本
+ ///
+ public const int Scene_StarSoulCopyC = 10047;
+ ///
+ /// D星魂副本
+ ///
+ public const int Scene_StarSoulCopyD = 10048;
+ ///
+ /// E星魂副本
+ ///
+ public const int Scene_StarSoulCopyE = 10049;
}
}
diff --git a/Server/Model/Game/Entity/Bag/Bag.cs b/Server/Model/Game/Entity/Bag/Bag.cs
index 570fc16c..eddf0684 100644
--- a/Server/Model/Game/Entity/Bag/Bag.cs
+++ b/Server/Model/Game/Entity/Bag/Bag.cs
@@ -30,7 +30,6 @@ namespace ET
public readonly int SortTimeInterval = 60 * 1000;
public const int UseTimeInterval = 30 * 1000;
public int ItemCount;
- public long CurrEquipServerId;
public long lastSortTime;
public long lastUseTime;
@@ -203,10 +202,10 @@ namespace ET
public Quality quality;
public int equipLevel;
- ///
- /// 星魂
- ///
- public long starSoulItemServerId;
+ // ///
+ // /// 星魂
+ // ///
+ // public long starSoulItemServerId;
public EquipItem()
{
@@ -216,7 +215,7 @@ namespace ET
{
EquipItem equipItem = (EquipItem) base.Clone();
equipItem.serverId = serverId;
- equipItem.starSoulItemServerId = starSoulItemServerId;
+ // equipItem.starSoulItemServerId = starSoulItemServerId;
if (mainAttribute != null)
equipItem.mainAttribute = new Dictionary(mainAttribute);
if (addtionalAttributes != null)
@@ -280,7 +279,7 @@ namespace ET
Quality = (int) equipItem.quality;
Star = equipItem.star;
Level = equipItem.equipLevel;
- this.starsoulId = equipItem.starSoulItemServerId;
+ // this.starsoulId = equipItem.starSoulItemServerId;
}
}
}
\ No newline at end of file
diff --git a/Server/Model/Game/Entity/Bag/StarSoulBag.cs b/Server/Model/Game/Entity/Bag/StarSoulBag.cs
index 7188e220..027dc06a 100644
--- a/Server/Model/Game/Entity/Bag/StarSoulBag.cs
+++ b/Server/Model/Game/Entity/Bag/StarSoulBag.cs
@@ -1,4 +1,5 @@
-using System.Collections.Generic;
+using System;
+using System.Collections.Generic;
using Cal;
using MongoDB.Bson.Serialization.Attributes;
using MongoDB.Bson.Serialization.Options;
@@ -39,6 +40,7 @@ namespace ET
public EquipType posType;
public Quality quality;
public bool isUsed;
+ public bool isLocked;
// [BsonRepresentation(MongoDB.Bson.BsonType.Double, AllowTruncation = true)]
public int mainId;
@@ -48,10 +50,31 @@ namespace ET
public byte addViceCount;
+ public override string ToString()
+ {
+ return $"id={this.Id} type={this.typeId} {this.posType} {this.quality} level={this.level} isUsed={this.isUsed} islocked={this.isLocked}";
+ }
}
+ public class StarSoulSuit
+ {
+ [System.Flags]
+ public enum StarSoulSuitType:byte
+ {
+ None,
+ Suit4=1,
+ ///
+ /// 不要使用,不存在这种情况
+ ///
+ Suit8=1<<1,
+ Suit4And8 = Suit4|Suit8,
+ }
+ public int Id;
+ public StarSoulSuitType type;
+
+ }
[BsonIgnoreExtraElements]
- public class StarSoulBag: Entity
+ public class StarSoulBag: Entity,ICombatBounds
{
public const ushort MaxCount = 1000;
public int ItemCount;
@@ -59,5 +82,16 @@ namespace ET
public SortedDictionary itemDic = new SortedDictionary();
public long lastSortTime;
public const int sortTimeIntervel = 120 * 1000;
+ public List Suits = new List();
+ ///
+ /// 星魂数量,用于计算套装
+ ///
+ [BsonDictionaryOptions(DictionaryRepresentation.ArrayOfArrays)]
+ public Dictionary typeStarSoulCount = new Dictionary();
+ [BsonDictionaryOptions(DictionaryRepresentation.ArrayOfArrays)]
+ public Dictionary usedStarSoulDic = new Dictionary();
+
+ [BsonIgnore]
+ public Func getAttributeFunc { get; set; }
}
}
\ No newline at end of file
diff --git a/Server/Model/Game/Entity/Battle/StarSoulCopyConfigComponent.cs b/Server/Model/Game/Entity/Battle/StarSoulCopyConfigComponent.cs
new file mode 100644
index 00000000..266e70ea
--- /dev/null
+++ b/Server/Model/Game/Entity/Battle/StarSoulCopyConfigComponent.cs
@@ -0,0 +1,8 @@
+namespace ET
+{
+ public class StarSoulCopyConfigComponent:Entity
+ {
+ public byte type;
+ public byte difficulty;
+ }
+}
\ No newline at end of file
diff --git a/Server/Model/Game/Entity/Other/ActiveComponent.cs b/Server/Model/Game/Entity/Other/ActiveComponent.cs
new file mode 100644
index 00000000..3e759d52
--- /dev/null
+++ b/Server/Model/Game/Entity/Other/ActiveComponent.cs
@@ -0,0 +1,8 @@
+namespace ET
+{
+ public class ActiveComponent:Entity
+ {
+ public static ActiveComponent instance;
+
+ }
+}
\ No newline at end of file
diff --git a/Server/Model/Generate/Data/Partial/ActivePerDayConfigCategory.Custom.cs b/Server/Model/Generate/Data/Partial/ActivePerDayConfigCategory.Custom.cs
new file mode 100644
index 00000000..05193590
--- /dev/null
+++ b/Server/Model/Generate/Data/Partial/ActivePerDayConfigCategory.Custom.cs
@@ -0,0 +1,23 @@
+using System.Collections.Generic;
+using ET;
+
+namespace Cal.DataTable
+{
+ public partial class ActivePerDayConfigCategory
+ {
+ public UnOrderMultiMap activeIdDic = new UnOrderMultiMap();
+
+ public override void EndInit()
+ {
+ base.EndInit();
+ foreach (var kv in this.dict)
+ {
+ foreach (var i1 in kv.Value.Day)
+ {
+ var i = (byte) i1;
+ activeIdDic.Add(i,kv.Key);
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/Server/Model/Generate/Data/Partial/MapMonsterConfigCategory.Custom.cs b/Server/Model/Generate/Data/Partial/MapMonsterConfigCategory.Custom.cs
index b0b1ed66..d6d3bfb6 100644
--- a/Server/Model/Generate/Data/Partial/MapMonsterConfigCategory.Custom.cs
+++ b/Server/Model/Generate/Data/Partial/MapMonsterConfigCategory.Custom.cs
@@ -31,5 +31,16 @@ namespace Cal.DataTable
};
return Get(id);
}
+ public MapMonsterConfig GetStarSoulCopyMapMonster(int layer)
+ {
+ long id= layer switch
+ {
+ 1 => MapMonsterConfigId.StarSoul1,
+ 2 => MapMonsterConfigId.StarSoul2,
+ 3 => MapMonsterConfigId.StarSoul3,
+ _ => throw new Exception($"没有更多的层数:{layer}"),
+ };
+ return Get(id);
+ }
}
}
diff --git a/Server/Model/Generate/Data/Partial/StarSoulAttributeConfigCategory.Custom.cs b/Server/Model/Generate/Data/Partial/StarSoulAttributeConfigCategory.Custom.cs
index 2f9237fb..84ece4e2 100644
--- a/Server/Model/Generate/Data/Partial/StarSoulAttributeConfigCategory.Custom.cs
+++ b/Server/Model/Generate/Data/Partial/StarSoulAttributeConfigCategory.Custom.cs
@@ -7,8 +7,13 @@ namespace Cal.DataTable
{
public List> viceKeyList = new List>(40);
public List viceWeigt = new List(40);
- public List mainWeigt = new List(40);
- public UnOrderMultiMap mainAttributeDic = new UnOrderMultiMap();
+ private Dictionary<(byte, byte), long> mainAttributeDic = new Dictionary<(byte, byte), long>();
+
+ public long GetMainValue(Quality quality, int key)
+ {
+ mainAttributeDic.TryGetValue(((byte, byte)) (quality, key), out long value);
+ return value;
+ }
public override void EndInit()
{
base.EndInit();
@@ -22,11 +27,7 @@ namespace Cal.DataTable
}
else
{
- if (config.Quality == 1)
- {
- mainWeigt.Add(config.ViceWeight);
- }
- mainAttributeDic.Add(config.Quality,config.Id);
+ mainAttributeDic.Add((config.Quality,config.Key),kv.Key);
}
}
}
diff --git a/Server/Model/Generate/Data/Partial/StarSoulCopyConfigCategory.Custom.cs b/Server/Model/Generate/Data/Partial/StarSoulCopyConfigCategory.Custom.cs
new file mode 100644
index 00000000..be5020ae
--- /dev/null
+++ b/Server/Model/Generate/Data/Partial/StarSoulCopyConfigCategory.Custom.cs
@@ -0,0 +1,27 @@
+using System.Collections.Generic;
+
+namespace Cal.DataTable
+{
+ public partial class StarSoulCopyConfigCategory
+ {
+ private Dictionary<(byte, byte, byte), long> dic = new Dictionary<(byte, byte, byte), long>();
+
+ public StarSoulCopyConfig GetByTypeAndDifficultyAndIndex(byte type, byte difficulty, byte index)
+ {
+ if (this.dic.TryGetValue((type, difficulty, index), out long id))
+ {
+ return Get(id);
+ }
+
+ return null;
+ }
+ public override void EndInit()
+ {
+ base.EndInit();
+ foreach (var kv in this.dict)
+ {
+ dic.Add((kv.Value.Type, kv.Value.Difficulty, kv.Value.BossIndex), kv.Key);
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/Server/Model/Generate/Data/Partial/StarSoulEquipAttributeTypeConfig.Custom.cs b/Server/Model/Generate/Data/Partial/StarSoulEquipAttributeTypeConfig.Custom.cs
new file mode 100644
index 00000000..7bd79bb8
--- /dev/null
+++ b/Server/Model/Generate/Data/Partial/StarSoulEquipAttributeTypeConfig.Custom.cs
@@ -0,0 +1,9 @@
+using System.Collections.Generic;
+
+namespace Cal.DataTable
+{
+ public partial class StarSoulEquipAttributeTypeConfig
+ {
+
+ }
+}
\ No newline at end of file
diff --git a/Server/Model/Generate/Data/Partial/StarSoulTypeConfigCategory.Custom.cs b/Server/Model/Generate/Data/Partial/StarSoulTypeConfigCategory.Custom.cs
index 093415c8..f120d0ff 100644
--- a/Server/Model/Generate/Data/Partial/StarSoulTypeConfigCategory.Custom.cs
+++ b/Server/Model/Generate/Data/Partial/StarSoulTypeConfigCategory.Custom.cs
@@ -1,16 +1,17 @@
using System.Collections.Generic;
+using ET;
namespace Cal.DataTable
{
public partial class StarSoulTypeConfigCategory
{
- public List ids = new List();
+ public UnOrderMultiMap idDic = new UnOrderMultiMap();
public override void EndInit()
{
base.EndInit();
foreach (var kv in this.dict)
{
- ids.Add(kv.Key);
+ idDic.Add(kv.Value.CopyType,(int) kv.Key);
}
}
}
diff --git a/Server/Model/Generate/Message/OuterMessage.cs b/Server/Model/Generate/Message/OuterMessage.cs
index eebffc46..d791e0c9 100644
--- a/Server/Model/Generate/Message/OuterMessage.cs
+++ b/Server/Model/Generate/Message/OuterMessage.cs
@@ -296,9 +296,6 @@ namespace ET
[ProtoMember(12)]
public List GemList = new List();
- [ProtoMember(13)]
- public long starsoulId { get; set; }
-
}
//登录相关==================================
@@ -4993,6 +4990,9 @@ namespace ET
[ProtoMember(1)]
public int Index { get; set; }
+ [ProtoMember(2)]
+ public bool isLock { get; set; }
+
}
[Message(OuterOpcode.M2C_Upgrade)]
@@ -6997,6 +6997,9 @@ namespace ET
[ProtoMember(10)]
public List viceAdd = new List();
+ [ProtoMember(11)]
+ public bool isLocked { get; set; }
+
}
[ResponseType(typeof(M2C_GetStarSoulBag))]
@@ -7012,6 +7015,42 @@ namespace ET
}
+ [Message(OuterOpcode.KV_int32_int64)]
+ [ProtoContract]
+ public partial class KV_int32_int64
+ {
+ [ProtoMember(1)]
+ public int key { get; set; }
+
+ [ProtoMember(2)]
+ public long value { get; set; }
+
+ }
+
+ [Message(OuterOpcode.KV_int32_int32)]
+ [ProtoContract]
+ public partial class KV_int32_int32
+ {
+ [ProtoMember(1)]
+ public int key { get; set; }
+
+ [ProtoMember(2)]
+ public int value { get; set; }
+
+ }
+
+ [Message(OuterOpcode.KV_string_int32)]
+ [ProtoContract]
+ public partial class KV_string_int32
+ {
+ [ProtoMember(1)]
+ public string key { get; set; }
+
+ [ProtoMember(2)]
+ public int value { get; set; }
+
+ }
+
[Message(OuterOpcode.M2C_GetStarSoulBag)]
[ProtoContract]
public partial class M2C_GetStarSoulBag:IActorLocationResponse
@@ -7028,6 +7067,12 @@ namespace ET
[ProtoMember(1)]
public List itemList = new List();
+ [ProtoMember(2)]
+ public List usedIdMap = new List();
+
+ [ProtoMember(5)]
+ public List suitKVs = new List();
+
}
[Message(OuterOpcode.M2C_SyncStarSoulBag)]
@@ -7048,6 +7093,27 @@ namespace ET
}
+ [Message(OuterOpcode.M2C_SyncStarSoulBagItemUsed)]
+ [ProtoContract]
+ public partial class M2C_SyncStarSoulBagItemUsed:IActorMessage
+ {
+ [ProtoMember(90)]
+ public int RpcId { get; set; }
+
+ [ProtoMember(93)]
+ public long ActorId { get; set; }
+
+ [ProtoMember(3)]
+ public int key { get; set; }
+
+ [ProtoMember(4)]
+ public long value { get; set; }
+
+ [ProtoMember(5)]
+ public List suitKVs = new List();
+
+ }
+
[ResponseType(typeof(M2C_UpgradeStarSoulItem))]
[Message(OuterOpcode.C2M_UpgradeStarSoulItem)]
[ProtoContract]
@@ -7113,4 +7179,87 @@ namespace ET
}
+ [Message(OuterOpcode.C2M_LockStarSoulItem)]
+ [ProtoContract]
+ public partial class C2M_LockStarSoulItem:IActorLocationMessage
+ {
+ [ProtoMember(90)]
+ public int RpcId { get; set; }
+
+ [ProtoMember(93)]
+ public long ActorId { get; set; }
+
+ [ProtoMember(2)]
+ public long itemId { get; set; }
+
+ [ProtoMember(1)]
+ public bool isLock { get; set; }
+
+ }
+
+ [ResponseType(typeof(M2C_StartActive))]
+ [Message(OuterOpcode.C2M_StartActive)]
+ [ProtoContract]
+ public partial class C2M_StartActive:IActorLocationRequest
+ {
+ [ProtoMember(90)]
+ public int RpcId { get; set; }
+
+ [ProtoMember(93)]
+ public long ActorId { get; set; }
+
+ [ProtoMember(2)]
+ public int itemId { get; set; }
+
+ }
+
+ [Message(OuterOpcode.M2C_StartActive)]
+ [ProtoContract]
+ public partial class M2C_StartActive:IActorLocationResponse
+ {
+ [ProtoMember(90)]
+ public int RpcId { get; set; }
+
+ [ProtoMember(91)]
+ public int Error { get; set; }
+
+ [ProtoMember(92)]
+ public string Message { get; set; }
+
+ }
+
+ [ResponseType(typeof(M2C_GetUIDByName))]
+ [Message(OuterOpcode.C2M_GetUIDByName)]
+ [ProtoContract]
+ public partial class C2M_GetUIDByName:IActorLocationRequest
+ {
+ [ProtoMember(90)]
+ public int RpcId { get; set; }
+
+ [ProtoMember(93)]
+ public long ActorId { get; set; }
+
+ [ProtoMember(2)]
+ public string name { get; set; }
+
+ }
+
+ [Message(OuterOpcode.M2C_GetUIDByName)]
+ [ProtoContract]
+ public partial class M2C_GetUIDByName:IActorLocationResponse
+ {
+ [ProtoMember(90)]
+ public int RpcId { get; set; }
+
+ [ProtoMember(91)]
+ public int Error { get; set; }
+
+ [ProtoMember(92)]
+ public string Message { get; set; }
+
+ [ProtoMember(1)]
+ public List map = new List();
+
+ }
+
}
diff --git a/Server/Model/Generate/Message/OuterOpcode.cs b/Server/Model/Generate/Message/OuterOpcode.cs
index f3d5ee3e..dffea01d 100644
--- a/Server/Model/Generate/Message/OuterOpcode.cs
+++ b/Server/Model/Generate/Message/OuterOpcode.cs
@@ -398,11 +398,20 @@ namespace ET
public const ushort M2C_StartSpaceTravel = 20394;
public const ushort StarSoulNetItem = 20395;
public const ushort C2M_GetStarSoulBag = 20396;
- public const ushort M2C_GetStarSoulBag = 20397;
- public const ushort M2C_SyncStarSoulBag = 20398;
- public const ushort C2M_UpgradeStarSoulItem = 20399;
- public const ushort M2C_UpgradeStarSoulItem = 20400;
- public const ushort C2M_PutonStarSoulItem = 20401;
- public const ushort M2C_PutonStarSoulItem = 20402;
+ public const ushort KV_int32_int64 = 20397;
+ public const ushort KV_int32_int32 = 20398;
+ public const ushort KV_string_int32 = 20399;
+ public const ushort M2C_GetStarSoulBag = 20400;
+ public const ushort M2C_SyncStarSoulBag = 20401;
+ public const ushort M2C_SyncStarSoulBagItemUsed = 20402;
+ public const ushort C2M_UpgradeStarSoulItem = 20403;
+ public const ushort M2C_UpgradeStarSoulItem = 20404;
+ public const ushort C2M_PutonStarSoulItem = 20405;
+ public const ushort M2C_PutonStarSoulItem = 20406;
+ public const ushort C2M_LockStarSoulItem = 20407;
+ public const ushort C2M_StartActive = 20408;
+ public const ushort M2C_StartActive = 20409;
+ public const ushort C2M_GetUIDByName = 20410;
+ public const ushort M2C_GetUIDByName = 20411;
}
}
diff --git a/Tools/ExcelTool/Excel/ActivePerDayConfig.xlsx b/Tools/ExcelTool/Excel/ActivePerDayConfig.xlsx
new file mode 100644
index 00000000..6ea6f5c2
Binary files /dev/null and b/Tools/ExcelTool/Excel/ActivePerDayConfig.xlsx differ
diff --git a/Tools/ExcelTool/Excel/CopyConfig.xlsx b/Tools/ExcelTool/Excel/CopyConfig.xlsx
index a49b3f9e..364344fc 100644
Binary files a/Tools/ExcelTool/Excel/CopyConfig.xlsx and b/Tools/ExcelTool/Excel/CopyConfig.xlsx differ
diff --git a/Tools/ExcelTool/Excel/GMConfig.xlsx b/Tools/ExcelTool/Excel/GMConfig.xlsx
index ebfad8cc..5f1c5c48 100644
Binary files a/Tools/ExcelTool/Excel/GMConfig.xlsx and b/Tools/ExcelTool/Excel/GMConfig.xlsx differ
diff --git a/Tools/ExcelTool/Excel/MapMonsterConfig.xlsx b/Tools/ExcelTool/Excel/MapMonsterConfig.xlsx
index 8f89921b..b7da7d93 100644
Binary files a/Tools/ExcelTool/Excel/MapMonsterConfig.xlsx and b/Tools/ExcelTool/Excel/MapMonsterConfig.xlsx differ
diff --git a/Tools/ExcelTool/Excel/MonsterBase.xlsx b/Tools/ExcelTool/Excel/MonsterBase.xlsx
index e8f2c9f0..550d1d49 100644
Binary files a/Tools/ExcelTool/Excel/MonsterBase.xlsx and b/Tools/ExcelTool/Excel/MonsterBase.xlsx differ
diff --git a/Tools/ExcelTool/Excel/SceneTransConfig.xlsx b/Tools/ExcelTool/Excel/SceneTransConfig.xlsx
index e73dfa57..368767d7 100644
Binary files a/Tools/ExcelTool/Excel/SceneTransConfig.xlsx and b/Tools/ExcelTool/Excel/SceneTransConfig.xlsx differ
diff --git a/Tools/ExcelTool/Excel/SonSet.xlsx b/Tools/ExcelTool/Excel/SonSet.xlsx
index 82845983..14423ebb 100644
Binary files a/Tools/ExcelTool/Excel/SonSet.xlsx and b/Tools/ExcelTool/Excel/SonSet.xlsx differ
diff --git a/Tools/ExcelTool/Excel/StarSoulAttributeConfig.xlsx b/Tools/ExcelTool/Excel/StarSoulAttributeConfig.xlsx
index e2b4a65f..ec7ef517 100644
Binary files a/Tools/ExcelTool/Excel/StarSoulAttributeConfig.xlsx and b/Tools/ExcelTool/Excel/StarSoulAttributeConfig.xlsx differ
diff --git a/Tools/ExcelTool/Excel/StarSoulCopyConfig.xlsx b/Tools/ExcelTool/Excel/StarSoulCopyConfig.xlsx
new file mode 100644
index 00000000..126c77a1
Binary files /dev/null and b/Tools/ExcelTool/Excel/StarSoulCopyConfig.xlsx differ
diff --git a/Tools/ExcelTool/Excel/StarSoulEquipAttributeTypeConfig.xlsx b/Tools/ExcelTool/Excel/StarSoulEquipAttributeTypeConfig.xlsx
index 7b7af0ac..11ebd909 100644
Binary files a/Tools/ExcelTool/Excel/StarSoulEquipAttributeTypeConfig.xlsx and b/Tools/ExcelTool/Excel/StarSoulEquipAttributeTypeConfig.xlsx differ
diff --git a/Tools/ExcelTool/Excel/StarSoulLevelConfig.xlsx b/Tools/ExcelTool/Excel/StarSoulLevelConfig.xlsx
index b04ce1b5..36dcd25b 100644
Binary files a/Tools/ExcelTool/Excel/StarSoulLevelConfig.xlsx and b/Tools/ExcelTool/Excel/StarSoulLevelConfig.xlsx differ
diff --git a/Tools/ExcelTool/Excel/StarSoulTypeConfig.xlsx b/Tools/ExcelTool/Excel/StarSoulTypeConfig.xlsx
index 8bb9f61c..478a4f02 100644
Binary files a/Tools/ExcelTool/Excel/StarSoulTypeConfig.xlsx and b/Tools/ExcelTool/Excel/StarSoulTypeConfig.xlsx differ
diff --git a/Tools/ExcelTool/Excel/Sys_Scene.xlsx b/Tools/ExcelTool/Excel/Sys_Scene.xlsx
index 319d327b..acb92364 100644
Binary files a/Tools/ExcelTool/Excel/Sys_Scene.xlsx and b/Tools/ExcelTool/Excel/Sys_Scene.xlsx differ
diff --git a/Tools/ExcelTool/Excel/md5.txt b/Tools/ExcelTool/Excel/md5.txt
index ffe4dca7..8e89c4c5 100644
--- a/Tools/ExcelTool/Excel/md5.txt
+++ b/Tools/ExcelTool/Excel/md5.txt
@@ -1 +1 @@
-{ "fileMD5" : { "Anim.xlsx" : "545a68dfcadddaee53a26a0ba19376c1", "RobotAccount.xlsx" : "31431b89eabb3e5ecb63f20b59d30858", "LevelConfig.xlsx" : "91bc9dc0d28ba5b40afef4365043d3ab", "MapSceneConfig.xlsx" : "08b026a5e74128d9a03bc383fa166489", "PrefabConfig.xlsx" : "46ef389511d1c63705c182088bab0285", "RoleConfig.xlsx" : "b997e8f718e7427c9388ae0e27e93d16", "AnimationConfig.xlsx" : "0a7d708c495799f85a8c2a03ebb0dc49", "BossBase.xlsx" : "b4920d9ab94dfbf7fb7bd8811db3cbe5", "CameraPosition.xlsx" : "fbf71d84ad155465c43ff60240de4284", "CharacterGrowth.xlsx" : "a3d0398ea4ee2e3b8b716f7bb29e5f08", "EquipBase.xlsx" : "42cde788e52858b80e4980e24e8017d9", "EquipForge.xlsx" : "fda15bcdc6b1fb0ec797091089682a23", "FamilyBossConfig.xlsx" : "eac9263d56e558729fa2e2d51ef865bf", "Forbidden.xlsx" : "28bbeeb0ebc58adab5eff9167497c7ac", "GoodsBase.xlsx" : "f902d34806e8737c6a8fffe732bbef3d", "ItemUpgrade.xlsx" : "55b96dc713fe42ed05cbbbd6b0865744", "MainStory.xlsx" : "48cc3d0b944dca80862a27c757d67f01", "MarketBase.xlsx" : "1cf03fdbc8dd3a807c3576cf48544d41", "MaterialBase.xlsx" : "fbaddf46f35c18d6f70db178f1c446a2", "MonsterBase.xlsx" : "851670d1506adfcf9a6c330e58623f9a", "NPCBase.xlsx" : "e64543df667ad4bfcabddd90e50768ce", "OnlineRewardBase.xlsx" : "e376d6f31abc8c39397f03f8c24fc7bc", "QuestConfig.xlsx" : "882de4872ea851fea32138f6d48798b1", "RoleGrowth.xlsx" : "1384845a732285f6affef3cf6c67a672", "RolesPosition.xlsx" : "f5888586a320dfcd693c91c1f7cfc90d", "ShopBase.xlsx" : "717de9348e7b7501a5e819947a7fea7e", "SkillConfig.xlsx" : "99c3580036a107d4ccc1f700164875f9", "SkillGroupBase.xlsx" : "126e96152f3ea559746d6f183d43f58f", "SkinBase.xlsx" : "0ccaf77db20367939303cd68c2896d4d", "Sys_Code.xlsx" : "8eff5c2fd8743578db17c86a81862d39", "Sys_Prefab.xlsx" : "f0d88c3b042ca8749cfba0c1dfc90c8c", "Sys_Scene.xlsx" : "81ca20c5dde1c686a2b23c3bb6803212", "TaskBase.xlsx" : "bf4ab00ad6cc6db58278a782d75c91e7", "TrialCopy.xlsx" : "b85d1a4bdc49dbc63a759a499aed8f5f", "Parentset.xlsx" : "1b4c3c31024f10137e240b4f2ec3df93", "SonAdvancedSet.xlsx" : "7128d07efa77d9de70d956b71c926e31", "SonSet.xlsx" : "e534b68fc5ada32c6d8d8e95750813d0", "EffectConfig.xlsx" : "c49b8ae9632120926c26991a25381e35", "HonorShop.xlsx" : "e7f2f48832e7e5fb6f8d56771c0551a6", "SkillLearn.xlsx" : "fb6cbb056172b57358502f18abd86a62", "FamilyShop.xlsx" : "fceadcf0570b35f1f6f24b0a67c73020", "EquipAffixConfig.xlsx" : "e33e0d8d934d7c145c07f1093f412981", "EquipUpgrade.xlsx" : "dc4758cffc7cf51e2a125969b2fc1d49", "MainStoryExp.xlsx" : "1e191962e19dcae5344f53bda64a5dec", "ManulEquip.xlsx" : "0eb382ad71752f63bf1b235809c0c17f", "ManulEquipAttribute.xlsx" : "c4869a18be4c14784fd26b697fa23f86", "ManulEquipMonsterConfig.xlsx" : "da4ca0343b0c77aed966c3ee9568cf68", "TransmigrationAddConfig.xlsx" : "620912bfbe398914fa8b3bf21afeeccf", "EquipBase .xlsx" : "0d52dbe61e0808bc75f59207e73ad7fb", "TitleConfig.xlsx" : "07d9306032f86e7b9642a61a8a2ee966", "GemInlayConfig.xlsx" : "d2bfb6e76b895f5c8f1caed238eeb0f9", "Strengthentable.xlsx" : "fdb418090e31b0bfb93c9ae9fc9bd9f1", "GemPriceConfig.xlsx" : "011721c1a612634195bffd58fb895279", "MapMonsterConfig.xlsx" : "298a25fd525f84aabc5c999f37eb74f3", "TransferJobConfig.xlsx" : "5b0daa2b0837e66196fbda214d72678a", "GMConfig.xlsx" : "6367ce3807b3b87d1a950107215b5704", "SuitConfig.xlsx" : "b67db1e911e14362e3409cb9f5f94216", "PetConfig.xlsx" : "4612dd8a5c3af3d3f21a4b7307eb169d", "PetLevelConfig.xlsx" : "a86c4cbde022ccd884ccf572ad5edfe7", "PetExploreConfig.xlsx" : "333043bd5c172def36660eca1dc8416a", "AIConfig.xlsx" : "871d248a954d8c59188e41d002135c75", "CopyConfig.xlsx" : "c01abde3689907ec63d80a14f54e3dd1", "CopyRewordConfig.xlsx" : "f4de20211685f21d15a8170061fdc7d2", "SpaceTravelConfig.xlsx" : "be6486259f73db40a93bdecef00a066e", "SceneTransConfig.xlsx" : "fcf6a7efb0051600d95aab41d2534538", "ArenaShop.xlsx" : "3fd4650500dd2bf83064a1fd46e4444d", "StarShop.xlsx" : "e14b5e252416a12318e775d86dd1b2f7", "StarSoulTypeConfig.xlsx" : "2d081de6c4a55ba33b6eb47d0afddfcb", "StarSoulAttributeConfig.xlsx" : "13bb12062c8b69f210d70ea6fd77a57f", "StarSoulEquipAttributeTypeConfig.xlsx" : "52794cf08df4d647f994020d6f041cdf", "StarSoulLevelConfig.xlsx" : "fd7791d46bf700ada720e5724356d7a6" } }
\ No newline at end of file
+{ "fileMD5" : { "Anim.xlsx" : "545a68dfcadddaee53a26a0ba19376c1", "RobotAccount.xlsx" : "31431b89eabb3e5ecb63f20b59d30858", "LevelConfig.xlsx" : "91bc9dc0d28ba5b40afef4365043d3ab", "MapSceneConfig.xlsx" : "08b026a5e74128d9a03bc383fa166489", "PrefabConfig.xlsx" : "46ef389511d1c63705c182088bab0285", "RoleConfig.xlsx" : "b997e8f718e7427c9388ae0e27e93d16", "AnimationConfig.xlsx" : "0a7d708c495799f85a8c2a03ebb0dc49", "BossBase.xlsx" : "b4920d9ab94dfbf7fb7bd8811db3cbe5", "CameraPosition.xlsx" : "fbf71d84ad155465c43ff60240de4284", "CharacterGrowth.xlsx" : "a3d0398ea4ee2e3b8b716f7bb29e5f08", "EquipBase.xlsx" : "42cde788e52858b80e4980e24e8017d9", "EquipForge.xlsx" : "fda15bcdc6b1fb0ec797091089682a23", "FamilyBossConfig.xlsx" : "eac9263d56e558729fa2e2d51ef865bf", "Forbidden.xlsx" : "28bbeeb0ebc58adab5eff9167497c7ac", "GoodsBase.xlsx" : "f902d34806e8737c6a8fffe732bbef3d", "ItemUpgrade.xlsx" : "55b96dc713fe42ed05cbbbd6b0865744", "MainStory.xlsx" : "48cc3d0b944dca80862a27c757d67f01", "MarketBase.xlsx" : "1cf03fdbc8dd3a807c3576cf48544d41", "MaterialBase.xlsx" : "fbaddf46f35c18d6f70db178f1c446a2", "MonsterBase.xlsx" : "8f40f31667572241b763f1334b99809f", "NPCBase.xlsx" : "e64543df667ad4bfcabddd90e50768ce", "OnlineRewardBase.xlsx" : "e376d6f31abc8c39397f03f8c24fc7bc", "QuestConfig.xlsx" : "882de4872ea851fea32138f6d48798b1", "RoleGrowth.xlsx" : "1384845a732285f6affef3cf6c67a672", "RolesPosition.xlsx" : "f5888586a320dfcd693c91c1f7cfc90d", "ShopBase.xlsx" : "717de9348e7b7501a5e819947a7fea7e", "SkillConfig.xlsx" : "99c3580036a107d4ccc1f700164875f9", "SkillGroupBase.xlsx" : "126e96152f3ea559746d6f183d43f58f", "SkinBase.xlsx" : "0ccaf77db20367939303cd68c2896d4d", "Sys_Code.xlsx" : "8eff5c2fd8743578db17c86a81862d39", "Sys_Prefab.xlsx" : "f0d88c3b042ca8749cfba0c1dfc90c8c", "Sys_Scene.xlsx" : "2daaf184fdcfed70a9254ab5a612d5ec", "TaskBase.xlsx" : "bf4ab00ad6cc6db58278a782d75c91e7", "TrialCopy.xlsx" : "b85d1a4bdc49dbc63a759a499aed8f5f", "Parentset.xlsx" : "1b4c3c31024f10137e240b4f2ec3df93", "SonAdvancedSet.xlsx" : "7128d07efa77d9de70d956b71c926e31", "SonSet.xlsx" : "5a4c281ce96e72470de992313b7d6dfd", "EffectConfig.xlsx" : "c49b8ae9632120926c26991a25381e35", "HonorShop.xlsx" : "e7f2f48832e7e5fb6f8d56771c0551a6", "SkillLearn.xlsx" : "fb6cbb056172b57358502f18abd86a62", "FamilyShop.xlsx" : "fceadcf0570b35f1f6f24b0a67c73020", "EquipAffixConfig.xlsx" : "e33e0d8d934d7c145c07f1093f412981", "EquipUpgrade.xlsx" : "dc4758cffc7cf51e2a125969b2fc1d49", "MainStoryExp.xlsx" : "1e191962e19dcae5344f53bda64a5dec", "ManulEquip.xlsx" : "0eb382ad71752f63bf1b235809c0c17f", "ManulEquipAttribute.xlsx" : "c4869a18be4c14784fd26b697fa23f86", "ManulEquipMonsterConfig.xlsx" : "da4ca0343b0c77aed966c3ee9568cf68", "TransmigrationAddConfig.xlsx" : "620912bfbe398914fa8b3bf21afeeccf", "EquipBase .xlsx" : "0d52dbe61e0808bc75f59207e73ad7fb", "TitleConfig.xlsx" : "07d9306032f86e7b9642a61a8a2ee966", "GemInlayConfig.xlsx" : "d2bfb6e76b895f5c8f1caed238eeb0f9", "Strengthentable.xlsx" : "fdb418090e31b0bfb93c9ae9fc9bd9f1", "GemPriceConfig.xlsx" : "011721c1a612634195bffd58fb895279", "MapMonsterConfig.xlsx" : "99b1d7454d78e7679deeb29150abd3db", "TransferJobConfig.xlsx" : "5b0daa2b0837e66196fbda214d72678a", "GMConfig.xlsx" : "ed18fa0021e5931a9a5f36d9600d612b", "SuitConfig.xlsx" : "b67db1e911e14362e3409cb9f5f94216", "PetConfig.xlsx" : "4612dd8a5c3af3d3f21a4b7307eb169d", "PetLevelConfig.xlsx" : "a86c4cbde022ccd884ccf572ad5edfe7", "PetExploreConfig.xlsx" : "333043bd5c172def36660eca1dc8416a", "AIConfig.xlsx" : "871d248a954d8c59188e41d002135c75", "CopyConfig.xlsx" : "0c430ea6eb850380e71b9c6e336ac189", "CopyRewordConfig.xlsx" : "f4de20211685f21d15a8170061fdc7d2", "SpaceTravelConfig.xlsx" : "be6486259f73db40a93bdecef00a066e", "SceneTransConfig.xlsx" : "9e31820e1273e184987f970a20be4a45", "ArenaShop.xlsx" : "3fd4650500dd2bf83064a1fd46e4444d", "StarShop.xlsx" : "e14b5e252416a12318e775d86dd1b2f7", "StarSoulTypeConfig.xlsx" : "8215d4db23c558eef9addbee8b158f08", "StarSoulAttributeConfig.xlsx" : "eae313d2f6cf4fdba87e53f51dc7d57f", "StarSoulEquipAttributeTypeConfig.xlsx" : "0aadceefcf88bc9d2b6d5c643cad79ce", "StarSoulLevelConfig.xlsx" : "0602d7ff6fbb242a4a0ebfcffd13fa9d", "ActivePerDayConfig.xlsx" : "cf0b65ead205b7468f6e06136ae7a172", "StarSoulCopyConfig.xlsx" : "921a5d72a0a56ef33bbe03285dafe9d5" } }
\ No newline at end of file
diff --git a/Unity/Assets/Download/Config/Hotfix.dll.bytes b/Unity/Assets/Download/Config/Hotfix.dll.bytes
index 44167fa0..6e918b91 100644
Binary files a/Unity/Assets/Download/Config/Hotfix.dll.bytes and b/Unity/Assets/Download/Config/Hotfix.dll.bytes differ
diff --git a/Unity/Assets/Download/Config/Hotfix.pdb.bytes b/Unity/Assets/Download/Config/Hotfix.pdb.bytes
index 5831a21f..cf05c7af 100644
Binary files a/Unity/Assets/Download/Config/Hotfix.pdb.bytes and b/Unity/Assets/Download/Config/Hotfix.pdb.bytes differ
diff --git a/Unity/Assets/Download/Config/HotfixView.dll.bytes b/Unity/Assets/Download/Config/HotfixView.dll.bytes
index 46c6e584..7c93ec4b 100644
Binary files a/Unity/Assets/Download/Config/HotfixView.dll.bytes and b/Unity/Assets/Download/Config/HotfixView.dll.bytes differ
diff --git a/Unity/Assets/Download/Config/HotfixView.pdb.bytes b/Unity/Assets/Download/Config/HotfixView.pdb.bytes
index 35740b71..3c97af34 100644
Binary files a/Unity/Assets/Download/Config/HotfixView.pdb.bytes and b/Unity/Assets/Download/Config/HotfixView.pdb.bytes differ
diff --git a/Unity/Assets/Download/DataTable/ActivePerDayConfig.json b/Unity/Assets/Download/DataTable/ActivePerDayConfig.json
new file mode 100644
index 00000000..943d321c
--- /dev/null
+++ b/Unity/Assets/Download/DataTable/ActivePerDayConfig.json
@@ -0,0 +1 @@
+eNq12M9rE0EUwPF7of+DzNU5zJud3ez2lqYeelCK9RaCLM2qgbRbtlslSKEUBEU91hQteJJ60OpR4o/+M90N+S8cSRPyZBcy8N4tszvL7Ifwhce2V1faoJQCeeu5eNjrirXpSmzEA7HWBhlI1ZHiwWA/sbekuBfv2h+iPPs4+XpSvPpWnn8RdnNysGOvFr+Oi4vXxYtPk+Hn8eiiubirfHlWvhvavetxnveTu0n+JLWnieZO3nuabOdxtp0e9lvp/sDu2YqzePfAni/ArkDYN7ifPIuzbjPL7FX7pvn80a0ks+/aSvce9R7fnu4Ss+2b9gQlRSs93LMPqCPZOerIG7FGYl0t1kuJx5fHxdtTQrFmEXtI7FWLveX+4w/fJ+//EIo9FrFBYlMtNkuJr68ux7+HhGLDIvaR2J+JNRL7bh2vE4g1W8cBEgfV4sCtYyoxT8cNJG5UixtuHVOJeToOkTisFoduHVOJeTqOkDiaiT0kjtw6bhGIPa6OQS2K7apS/O+6S8hUZJaQAQ1dADVkcCuZisxSMqCpC3QNWbulTEVmSRnQ2AXzsctgsufW8gYB2bC1jOYuMDVk49YyFZmnZTR4gV9D9t1apiLztIwmLwhqyIFby1RknpbR6AXz0cvH5IZby3cIyD5by2j2grCGHLq1TEXmaRkNXxDVkCO3lqnILC1rNH1pVU3Wyq1lKjJLyxpNX3rhk5eWnjTSr/v09eakPB/NNTfy6x8/x6Or/+5VSje7/WR6Q9CiOqsrfwEj+2Gc
\ No newline at end of file
diff --git a/Unity/Assets/Download/DataTable/ActivePerDayConfig.json.meta b/Unity/Assets/Download/DataTable/ActivePerDayConfig.json.meta
new file mode 100644
index 00000000..9fadaed1
--- /dev/null
+++ b/Unity/Assets/Download/DataTable/ActivePerDayConfig.json.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: ff94e43d6a1fb214fa919e1cfefaf63d
+TextScriptImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Unity/Assets/Download/DataTable/CopyConfig.json b/Unity/Assets/Download/DataTable/CopyConfig.json
index c15c1f4e..b66e77db 100644
--- a/Unity/Assets/Download/DataTable/CopyConfig.json
+++ b/Unity/Assets/Download/DataTable/CopyConfig.json
@@ -1 +1 @@
-eNrdlt9r01AUx98H+x/kPuchadpu62NrB6O0BFv2MobcNncSSHJrkk6KCLMwmOvEB9HqGIoPexBh/niYs4r+M+1N91+YNF2Sm9w0VnGCj7f39Jvz+Z577zlby0tbAs/zAnfjPrityKDgrUANaggUQBUqet3CRreGDQ2qRWhZKgIcuInMlrM9uvhqD3+Ql2eXe8fk4AV5PnD2vKBGt+0IOEqbSssVKOF29xa6hw05LOvFzkKmujsIWlRsCWsa1r0NJ6KGkFzWkXGnCwqityxi07z6iedACeoNBDVQsIwO4kBVmS6rSGsiY5qR99F6C+lohkmOe2RwPrp4bL8+vXz4FDzY5mbGZChjMnFjyqpiIbYv9qfvk/7H/9MXkfJFjPvifpxtS9PZ+QemCH/flCxlStY3pWEoUHXzjBoyef/M7n0bfemPTz4wLcmwLYkILmKJD7wDVZNBHNDkKJqcT8OqbDGppiIbINCYm3sQRpU0XEMhtYYBUZ4iyvtE61BTVOaJHZ+dk8GTRLocmy6qN5cxGhyvVBrWCoW1ErqLekct3+0o7SgWedQffz5lIuWTLiGt9VtHjgkiBiCrFMiqDyIhw8Q6VKXdGIn97hU53BufDNnXJ+FJiQnOxYlF+2QbprQpXXGl3Sw3fB03m4qMdAlbCta9fwb8axT/WsBfiWJLlSgpn0BaWbxebKqUUyjw4eSdVcIIsSGrsXZJjnrEqeB0jIhwZVN6QiD3B83ylxmpMUkQEqaBZERvIrh+xICAmmeEDLtvJwO4vfva0w8VgBo7hGDsqLdhCzUMuItiM6rTq+23QzLYn7w5Yj8SCU02pjk3/1j0Qu/49vLST4E+GPI=
\ No newline at end of file
+eNrdls9rE0EUx++F/g8y5xx286ttjokplJCwmNBLKTJJprKwuxN3N5UgQg0I1lY8iKaWYPHQg6iteqg1iv4zyWzyX7jJpruZnZmkqdiCx8m8fPd9vm9m3ttYXNiQJUmSI7cegrtqFaS8FShAHYEUyEPVKNrYbBSwqUMtDW1bQyACbiOr4m53z384nd/kzclg55A8PSCvW+6eF1Rq1FwBV2ldrQwFMrjWuIMeYLM6KevFjkNGulsI2lRsBus6NrwNN6KAUDVrIPNeA6Ri3jKNLeviJykCMtAoIaiDlG3WUQTk1dEyj/QyMkcZeR8tVpCBxpjksElaZ93z587R8eDxS/BoMzI2JkoZE2WNyWqqjfi+OF9/9fe+/J++xChfYqwvw4/zbSm7OzdgivzvTYlTpsR9U0qmCrVhnmFD+qevnObP7ve9Xvsz15Io35KQ4DyW+MBbULM4xAFNgqJJ+DS8yqZFNY3xAQKNqbkHYVRJJ2soz6xhQJSkiJI+0SrUVY17YnsnZ6T1QkiX4NOF9aYyhoPZSs3CWqKwlibuolHXsvfrai2MRXb3et+OuUhJ0SWkta505LggsQBkmQJZ9kEUZFrYgJqyzZA4H96SZzu9dod/fQRPCiM4FYeJ9snWLGVdueCadbOG4au4XFaryFCwrWLD+2fAv0LxrwT8uTC2kguTSgLS3Pz14lPNOIWyNJm8uxKMEGtVjWmXZL9J3AqOxogQV3xGTwjk/qJZXpqRGpNkWTANiBG9ieD6EQMCap6Ro/y+LQYY9u5rT3+iANTYIQdjR7EGK6hkwm3EzKhur3bed0jrSf/dPv+REDRZRnNq/kz03O+4TI0PcjA+FG1oFnGdJTs4Gnxq9nZPSfsjn0zQfWnBK5dFuhzb5uLCH7K1ZyA=
\ No newline at end of file
diff --git a/Unity/Assets/Download/DataTable/GMConfig.json b/Unity/Assets/Download/DataTable/GMConfig.json
index 7c6b47c8..f92ff694 100644
--- a/Unity/Assets/Download/DataTable/GMConfig.json
+++ b/Unity/Assets/Download/DataTable/GMConfig.json
@@ -1 +1 @@
-eNrNmN1OG0cUx+8j5R0sX6ZE6xnzLfWCkF64aipUuEujaOudNpb8FXtNaqFIJtRgIzuE8OGUuECiIKAQY5QEjDHJy3hm7SteoWOvmZ1Ze9eNjNTeseNz5vx/c2bOmeH+zRv3gcsF+hwzzoc+xTna/HBOxcPIOer0BhRnn3P83l36dzQepX//KAcaP+DkHslncfIQLy/S0e9+lwNhP9KtJFmW6diEHJED46FYUKWTtj7BlC/c8J5P4sLZlQ3UB0lum478hKIxv9qwWVquJ2b5OKM/B2fAU+fTB326Zshrhh01x8KKrKK7crxNeaWMUyc4dUrWi+RoieR2qqUEOXwjsDBvCdjzgC4otiH7WkPpBMmnyVqRZAuXlUytuEeSz8lKtnqRN5DdPLK7I7LXj+TIxHRYV8qwSSmpvZjXDjbJYgLnyyT1iqznaHQa8PZtgVqYoFfy1IG2umfo7+f193feZkhV/YjGN7Rr5ytaIce04511vHgs7rorpx71do7E5A/w8gc6yo8gqkVQX1/IahcFNqdpta/sr3mhB3mlgxZKH8d8ETSphiLIUFv9UsDvstXzFVxeaZNqOFyz3CFe7pCF3EBoGnmC07Lfp3iUe7LPz+2Q3fP6n+/0I6Q938eFk/qzQvX8pFp6X/9rk3xY8ynaxh/6mImpbdZet9DXSGELMMwvwLBdvu7Iv5mzVZvL4Eyyc7ao+TXnaoSXOtJRqqwoHhUFuKL7dhMvbmvpfbwyK6hsWUoAuKALSHRGk1YoavUoZrFrxfrCEq+3tvA3Pj3mIzpo23DccsxAo3kAF0dBPywofkDTyN+G8T6tlXfNGE1TCUD7tWa+NgsuADTtHXzfA3yvBsBK+pjfb8qB3oWWlsnq586ZaLmwZEB3z8loBe2SDL6uggEbojHPlC+A2pia09dOl/HrzyR3Us997ECmu0qDLvsE6f6XlRROzddfbl1W0v+qt7cpoJT6DAYlX5OBUZND6iMU4VEDIcX3a3ziiSKcc7J6ho/mtW0xa8xWIrld/XeJXiaYpU32mIMZkHNnmLwAB/O8rGw0ssk8Gt98XvmyDoasiacicjBqOmu1i0NtdUuANcwk8uqTtluUulQL3crEh98cuITj1gzk0G2rpbIOZUDwpRkMW0M88QXvyI1rCLc9m1e+2lwep/YFEmbba23mAzDFfIUGI9aK/9My3aUmQL5AQ5c1RFiOmrdOtbLdeDrki/Q0ChjMtkHg6nd1WXx9Bo/y7aQXBZFHuUW9vvHLcRSxzwofv4n2sIGGj58ZdHwNh8CaTm1s+e9Dv/AlL1v7eEY3bW02I8BdmXbbUtSvWtpwAAlKbqm/W3Uzgjm01wWyvaC703PCHxLIv8UgtN1yX91T3e7ee6plN4X8kwq6rZX/j67LkH9GwX47zfRxMf6ITuxVm5tWfJI0b6f0VVKbu8AvM/h4kyR22x8nzL9HCLugjIy/CcCBLmRTSA5MqvSJbibTX7fa4glJzLYDMbdrARJiMQ6+18PBLhzClV6f1eJKrxtf827iuzS06dKPYygSH/N6Tf9Y2NqpHb3FpRd46VRQy5tLYie2uHp16tYm7UK0JsGDmzf+Ab7lINU=
\ No newline at end of file
+eNrNmFtPG0cUx98j5TtYfkyJ1jvmLvWBkD64aiJU6FMaRVvvtFnJt9hrEgtFMqEGg3AI4eKUuFyiIKAQY9TUGGOSL+OZtZ/4Cp31mt2Z9V6aGql9847PmfP/7Zk5Z2Yf3LzxgPf5+B7PlPeRJHqHWw/eiVQMeoe9wbDo7fGO3rtLfidSCfL7vhBW/0CZfVzIocwRWl4go988E8KxENSsOEEQyNiYEBfCo9FkRCaTth/5CSmmes9mUPHsygZogzi/TUa+h4lkSFZtlpab6Wk6zvCPkSn+uff5wx5NM6A1A0vNyZgoyPCukOpQXquibBllT/F6CR8v4fxuvZLGRzsMi+7N8c48vAuKY8ie9tB8Ghfm8VoJ54qXtcVGaR9nXuKVXP2iYCD7aWS/JXIwBIX42GRMU6pj40pGeTWrHG7ihTQqVHH2DV7Pk+gk4O3bDDUzQbfk2UNldd/Q30vr77VeZlCWQ5DEN7Qr5ytKMa9rR7vraOGEXXVXTl3qtY6ky++j5fdZyo9DooVR35zLKRdFfU7T276yv+YX3U8r7bdR+iQpxeG4HI1DQ239cxG9z9XPV1B1pUOq4XDNcgdouQM2csPRSRiITAohSQyI9wQpRK2QvfPmb++1LaS8PEDFcvNFsX5erlc+NH/fxH+uSaKy8as2ZmLqmLXbJfQlUvQXMEi/gEGnfN0RfjFnqzGziBYz1tki5tecqyFa6pClVEEUAzIMU0X33SZa2FbmD9DKNKOybcnxvA/4eI7MaNIKWK0B0Sx2rdScW6L1Nub+QKcndEQPaRueW54pYDQP3kdRkAcbiu/gJAx1YHyYV6p7ZoyWKccD53et+zq8cAagZe+h+x5P92qet5M+EgqZcqB1oaVlvPrJOhNtFz0ZwN91MtpBXZJB11W+z4FoJDAhhWEHU2v6xukyevsJ58vN/EcLMs2V6/c5J0jzv6xlUXa2+Xrrsjb/j3p7hwJCqc1gUNI1mbeuyfBZLBqXf0jAOMV4XENzVa2U1D/v4Oljtl1HYynVQd07PpednpREFxoqVjOj9i1DPl2jeesaLUWs5Wd2beUbLv8OQBthAK6imQHoGssbNTYqP4ZxmiIcFaWfU2NPRabO4tUzdDyrbLO7RrflcH5P+58jhznd0mH36A7mlFDuOhctwKN7XtY21N2ke6jP9L6iSzU/ZE88ERciCVOta1wcKatbDKxhxuE3fyl7Jc6lWmtWJj60c+hjyl0rkEezrVeqGpQOAehKDXz2EE+lyB1BPQZSa6915G7MFFD2gCHRbbvtjXQAXTFdoAFvr/g/bZMuNRnQtysA7CFiQsK8dOq1bfXqViiRashg6Latvd7rttu1GQLi1+NBGIEB8Rbx+iokpFrlxSErdPwW2iMVDZ28MOjoixTw29PJ6pL/NvoT3XJyjY9nZNE2phcZuCtTtyVF/OqVDQ/PAc7P9bp1FyOYR3lbxNtzmjvZJ8wmoS9WoNdxyX3xmcbv7/5MY3uaAXTvB332yv9H1xVAd3LQ76SZXO5GH5OJgzLdE9tXwlaXIrfCxswFer2ITjZxeq/zcqj7dwnhFFQno5s8GHAhm4BCeFwWZGgm074uKAtlnJ7uBNLdrgWIiaVz0L0eDLpwMFcqbVabK5VmfM2rie7SwKFLP0nCeGokGDR92NnabRy/Q5VXaOmUUUubc2wntjn6WnVrk3YmWovg4c0bfwNnMbF3
\ No newline at end of file
diff --git a/Unity/Assets/Download/DataTable/MapMonsterConfig.json b/Unity/Assets/Download/DataTable/MapMonsterConfig.json
index 1f45332c..8d3dbafe 100644
--- a/Unity/Assets/Download/DataTable/MapMonsterConfig.json
+++ b/Unity/Assets/Download/DataTable/MapMonsterConfig.json
@@ -1 +1 @@
-eNqtlE1LwzAYx++DfQfJuUrS9GXrVT0ITgQ9KGNINiMU5jrbzYsImwdFFF9AGGyCoDe96K0q+Gna6b6F2YTtYSQUZm954cnv94R/UsxmigRjos0doR13FzmjCVpj+xw5qMBqzeryQdOtE6ShJR5UxOJ3+yV6vxg8nkbhp1hd9/keK6+IUjqsXOWHvDocYywqfK/OgmY54I3RyaaloS3kiJ1t5MyTBf24pP0J6FBAlwjoE4HB05VKQE8SsFUCFApQiQCdCMT3DyoBmiSQUwkYUMCQCBgTgX63IxcwSLJBXmVgQgNzbLDoubWCVwsa3IdX8Br3vgZnt3HY7ree1RJkygCr6BakW2P6Rp1V+KbPxGEgg1HYit9OpsH/CaAN8bYMDxIYfVxK8bPHLwfxORmewu7PpfjZw5eH+LwMD9IX93rpdk8wwIuJBG/Cy79Lt3sCfz9CZHgL/D7dm5/OddkLgnReXimb+QVeLq1a
\ No newline at end of file
+eNqtlF9LwlAYh++FvkOc6xU7+6futroIMgK7KERi2gkEc7a5biJQoSLK/lBgaCTUXRLURWQGfpptum/RNHAv7gzBdrdzxnue5z38zpuai6Qwy2Jm/gjt5HaRPFqgdWWfIBkllIKRXzkwckWMGLRM9Ky72a+0ze8L5/nU7Py4uxsa2VMyq24pP6xcI4ckP/xmWbdCU4uKbmR0UhqdLEoM2kKy+2cbyQt4kTtOM38CHBTgKAKcJ+C8XAUJcNMEokECPBTgKQK8J2A9toIE+GkCsSABAQoIFAHBE7AbdbqAgKcbxIMMRGggjg2W1FwhoRb0EtHgFbxbzZ5zdmt1Knb5NVgCTxiwQXQJ0qUxPVlUsmRTU9zDQAbNTtn6qE6C/xPAKMRHaXiQQLN7ScXPHr8YxMdoeB52f07Fzx6+OMTHaXiQPqvZDLd7zAK8u6DgRXj59+F2j+H0w5iGl8D0adwM6tcZVddDe3kYTj/sTb9kSdGSqgGDbz+0nLeq2asNyidhZR/D2Yd5H56bxNt3tX73028wewDg8MOCz4D3GTxVrK92KAFIz0V+AcgzJEg=
\ No newline at end of file
diff --git a/Unity/Assets/Download/DataTable/MonsterBase.json b/Unity/Assets/Download/DataTable/MonsterBase.json
index 097682c5..ec8c2826 100644
--- a/Unity/Assets/Download/DataTable/MonsterBase.json
+++ b/Unity/Assets/Download/DataTable/MonsterBase.json
@@ -1 +1 @@
-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
\ No newline at end of file
+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
\ No newline at end of file
diff --git a/Unity/Assets/Download/DataTable/SceneTransConfig.json b/Unity/Assets/Download/DataTable/SceneTransConfig.json
index 59ccb9ed..bdee3cfd 100644
--- a/Unity/Assets/Download/DataTable/SceneTransConfig.json
+++ b/Unity/Assets/Download/DataTable/SceneTransConfig.json
@@ -1 +1 @@
-eNrNWF1PG0cUfY+U/1D5tcba+di1zVtC0yRSU6HCG0JohbfEqlmTtUFFUaR8tIWElDYNxiGQ0AhICxEEEOHDBvxnPGvvv+h6nMhzxww0mHb9MtKufe49587de3an7/KlPqRpGgp/cTc0kEyEOutXoW/NYSvUGeoZtGxr4Jv0UNIOhUNfWZlB/2ZlrsiOcv51r2Pame505orjhDrt0VTqXn/4Y0AMAmIpYJdjmVnru3TKOj0KAVGIFOWanbWc67U7pwahIAiVgtwyk3ZXMjvekMcWp73chByzz4+R/YTiv3Sl7e+TQ19++pcAGPjRz0UjumbohnB3PNTZgSI0SqkRvxf+zHgdZwbsD9eD3UzUCdfU6uHaavA1ytcYX+O1FWl8RXzFfCV8pXzlWMSxiGMRxyKOxRyLORZzLOZYzLGYYzHHYo7FHEs4inAU4SjCUYSjCEcRjiIcRWL9jX3UwT7qTfvojFmpVHo003Nn1HQsYT9XJtjbOXZQYguFVne1A2kRIx6LSpuAIwQZsbhiE+rieNkoLwDlBaC8AJQXgFJBqAGEGpLQq5Y5eLuhzn0/wxYLbPPQ/bDnFlf/87Y9UaBAPgrIRyXyN9J22um1hkdSwgZVf12qrj1mC0vuRqn1DUIRpKMTBGA9TnX9bAExICAmCbju91YiadrdpvOD0GIbk+6T5fLB72x+vWUF0XNTjwPqcXno3jZTKcseEiv/Pld5eFg+mGILm4FX3h9HAn3/Sur7dCbTYP7xqrVexxHa9CDrNIajZ3MFhonQCabSk00740jokclXrPSITT1i2/NBMgfOjLCKOZaZV1Zes8OHtV4Jlj94J0BExZ/I/N31Yrnwhh0/8O7PBMkfvI4gquJPmzrn7ay3PhNw8YEHI11FXhdeFn9ZrBTboO2BqSJDxdyQmbdL2wNfRVEV/6jMv13aHtgqiqn4x5o6px3aHhgriqvIxxvky4cvazNz+7jy4IPfPO7SRoD8MXBWrCndSmsSUCx5E9Pl4lx1fy1IAcBusdpukSygWtpjy1v+Jx3bfxikAOC6WOm6CMsC3PyfbPPIy5Xcg9kgBQDbxUrbRYLvVo+Py4WC/13CCrny/mwl9zRIAcB3sdJ3EW0WsFq5/9KbX2NbW0EKAN6Lld6L9CYBmzvu3G5lseTuvA5SALBgrLRgZMgC2PJqZbVQ8+DF6SAFAA/Gsgd/nRw2U+NXzWxW/LhlG7tu/jd38kWrxDXIWjubLrBcLFvulcFscszqNTPCd6y7U2RP/v7/mQJ/xbK/1kt6MyGWtXz4zMtvn/BaUDv7Oz0bAW5IZDfstpxM2jZT3WMjgpt4r/7wni+4s3m29O6EcyRV1vpxl5AbGBlB6txYPG898p7vni93/ZBNExgAJyJYzUCY5F7xJ2/i2akMGgmAU5Bmp/D/fe3OaHIEfhtXCn+5j6fY3kqr3Xfu4xMCHIJQJXHRo/fX24A4cAaiK4mLO/ruRRsQB45ADNWB1cCtZAI+/bzsp51e/YsxAKY5iSqT3zCdhFy4FlODyUxiimew+cSrlnBj9xwJwYAl8oDtGTEHaxs9ZqWEh9LN7/qu6+Z/rr55+vkpKZiyVFOnxBeWEgxXitQpyYWlBNOUYnVKemEpwXylRJ1Sv7CUYDJSqk5pXETK/suX/gEOvHm7
\ No newline at end of file
+eNrNWF1PG0cUfY+U/1D5tcba+di1zVtC0yRSU6HCG0JohbfEqlmTtUFFUaR8tIWElDYNxiGQ0AhICxEEEOHDBvxnPGvvv+h6nMhzxww0mHb9MtKOfe49Z+buPTvTd/lSH9I0DYW/uBsaSCZCnfWn0LfmsBXqDPUMWrY18E16KGmHwqGvrMygP1mZK7KjnP/c65h2pjudueI4oU57NJW61x/+GBCDgFgK2OVYZtb6Lp2yTo9CQBQiRblmZy3nem3m1CAUBKFSkFtm0u5KZscb8tjitJebkGP2+TGyn1D8l660/X1y6MtP/xIAAz/6uWhE1wzdEGbHQ50dKEKjlBrxe+HPjNdxZsD+cD3YzUSdcE2tHq6NBh+jfIzxMV4bkcZHxEfMR8JHykeORRyLOBZxLOJYzLGYYzHHYo7FHIs5FnMs5ljMsYSjCEcRjiIcRTiKcBThKMJRhKMon6d8nvJ5Wp+P9zd2WQe7rDftsjNmpVLp0UzPnVHTsYTdXplgb+fYQYktFFrd8w6kRYx4LCptEY4QZMTiii2qS+eLSvnyUL48lC8P5ctDqSDUAEINSehVyxy83VDnvp9hiwW2eeh+2HOLq/95UZ8oUCAfBeSjEvkbaTvt9FrDIylhg6q/LlXXHrOFJXej1PoGoQjS0QkCsB6nun62gBgQEJMEXPdrK5E07W7T+UEosY1J98ly+eB3Nr/esoLouanHAfW43JJvm6mUZQ+JK/8+V3l4WD6YYgubga+836wE+v6TVPfpTKbB/ONTa7WOI7TpRdZpDEfP5grsFKETLKcnm3bGkVAjk69Y6RGbesS254NkDnwbYRVzLDOvrLxmhw9rtRIsf/DFgIiKP5H5u+vFcuENO37g3Z8Jkj/4WEFUxZ82Vc7bWW99JuDFBx6MdBV5XfiU/GWxUmyDsgemigwVc0Nm3i5lD3wVRVX8ozL/dil7YKsopuIfa6qcdih7YKworiIfb5AvH76s9czt48qDD37xuEsbAfLHwFmxpnQrrUlAseRNTJeLc9X9tSAFALvFartFsoBqaY8tb/kHPrb/MEgBwHWx0nURlgW4+T/Z5pGXK7kHs0EKALaLlbaLBN+tHh+XCwX/XMIKufL+bCX3NEgBwHex0ncRbRawWrn/0ptfY1tbQQoA3ouV3ov0JgGbO+7cbmWx5O68DlIAsGCstGBkyALY8mpltVDz4MXpIAUAD8ayB3+dHDZT41fNbFY83LKNXTf/mzv5olXiGmStnU0XWC6WLffKYDY5ZvWaGeEc6+4U2ZO//3+mwF+x7K/1Jb2ZEJe1fPjMy2+f8FlQuxk8PRsBbkhkN+y2nEzaNlPdYyOCm3iv/vCeL7izebb07oR7JFXW+mWYkBsYGUHq3Fi8jT3ynu+eL3f9Ck4TGAAnIljNQOjkXvEnb+LZqQwaCYBTkGan8P997c5ocgSejSuFv9zHU2xvpdXqO/f1CQEOQaiSuOjR++ttQBw4A9GVxMUdffeiDYgDRyCG6sJq4FYyAd9+vuyn3V79izYAujmJKpPfMJ2EvHAtpgadmcQU72DzjVct4cbuORKCBkvkBtszYg7WNnrMSgkvpZvf9V3Xzf9cffP081NS0GWppk6JLywlaK4UqVOSC0sJuinF6pT0wlKC/kqJOqV+YSlBZ6RUndK4iJT9ly/9A2KOf4M=
\ No newline at end of file
diff --git a/Unity/Assets/Download/DataTable/SonSet.json b/Unity/Assets/Download/DataTable/SonSet.json
index e9ba48b8..b7cb78d0 100644
--- a/Unity/Assets/Download/DataTable/SonSet.json
+++ b/Unity/Assets/Download/DataTable/SonSet.json
@@ -1 +1 @@
-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
\ No newline at end of file
+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
\ No newline at end of file
diff --git a/Unity/Assets/Download/DataTable/StarSoulAttributeConfig.json b/Unity/Assets/Download/DataTable/StarSoulAttributeConfig.json
index 4158c1c6..38eb116a 100644
--- a/Unity/Assets/Download/DataTable/StarSoulAttributeConfig.json
+++ b/Unity/Assets/Download/DataTable/StarSoulAttributeConfig.json
@@ -1 +1 @@
-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
\ No newline at end of file
+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
\ No newline at end of file
diff --git a/Unity/Assets/Download/DataTable/StarSoulCopyConfig.json b/Unity/Assets/Download/DataTable/StarSoulCopyConfig.json
new file mode 100644
index 00000000..80450ca6
--- /dev/null
+++ b/Unity/Assets/Download/DataTable/StarSoulCopyConfig.json
@@ -0,0 +1 @@
+eNrNlr1qG0EURnuD3yFsrWLu3+7KXX4aF66czphgYhsERgqyDDEh7x5zLcRHvAN3t5iZ5kMrEDqwF865OT+7oZRo9elP92Nz3134Q/f99dfD2+dV923z+Lj5+fJ0ePXHL7vn58vt/cNvf7rabZ8PD/vL+8/7fXdxM/hvh7Rgb1fd9eFuf717efq6e9kerjbb7iL9/+Xd29/K39vVOzMjM4eY+SMzHxlo9k4y0xSznpgFmSXELB+Z5Z2ZnITYV3zTcSfZbIptPLEpsmmGjQM3wP5OZ++SGzBkthDz9A04A83eJTfQI3MfYp6+AfYb8GVf8U3HXXIDA7INGTYJ3ID4O529S25gROYxxDx9A85As3fJDayReR1inr4B8RvwZV/xTcddcAOUgO3tYZpNAzeg/k5n74IbIPQXUYh5+gacgWbvghsg9BdxiHn6BtRvwJd9xTcdd8kNoKfo5CluuQcI/UUaYq7dA4T+Igsxl+oBQk9Rn2FrqwcI/UVDiLl2DxD6i8YQc6keIPQUrTNsbfUAo784hZhr9wCjv5hCzKV6gNFTzBm2tnqA0V8sIebaPcDoL9YQc6keYPQUnzwlLfcAo7+4DzHX7gFGf/EQYi7VA4ye4jHD1lYPMPqL1yHm2j0g6C9JIeZSPSDoKaEMW1s9IOgv4RBz7R4Q9JdIiLlUDwh6SjTD1lYPCPpLLMRcuwcE/SV9iLlUDwh6Sk6e0pZ7QNBfMoaYa/eAoL9kHWIu1QOKntKUYWurBxT9pRRirt0Div5SDjGX6gFFT6lk2NrqAUV/qYaYa/eAor/UQsylekDRU9pn2NrqAUV/6RBirt0Div7SMcRcqgcUPaUnT1nLPWDoL0sh5to9YOgvoxBzqR4w9JRxhq2tHjD0l0mIuXYPGPrLNMRcqgcMPWWWYWurBwz9ZX2IuXYPGPrLhhBzqR4w9JSNGba2esDQX7YOMdfugR791acQc5EeuD0/+wdTZDVe
\ No newline at end of file
diff --git a/Unity/Assets/Download/DataTable/StarSoulCopyConfig.json.meta b/Unity/Assets/Download/DataTable/StarSoulCopyConfig.json.meta
new file mode 100644
index 00000000..24a013c0
--- /dev/null
+++ b/Unity/Assets/Download/DataTable/StarSoulCopyConfig.json.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: f6a8926e5a9c91741a7768a1fee9bc96
+TextScriptImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Unity/Assets/Download/DataTable/StarSoulEquipAttributeTypeConfig.json b/Unity/Assets/Download/DataTable/StarSoulEquipAttributeTypeConfig.json
index 677d0094..3f9b5d23 100644
--- a/Unity/Assets/Download/DataTable/StarSoulEquipAttributeTypeConfig.json
+++ b/Unity/Assets/Download/DataTable/StarSoulEquipAttributeTypeConfig.json
@@ -1 +1 @@
-eNp90j8LgzAQBfBd6HcomW/IS0yibn6HbiKFUge3InYopd+98d81wtk9vzzu3TWnrNF0fqtrf1eVJlWP49DfnmN3eT26ehhU1QQqCCAYMo5Apv20FBmYQWQmvi0JelLxi1UZVkZWjoxfHBJmmdnDMFhCvunV5exy0VlNFtt0SZ5j50S3iLkZLsSz8aJZhooV+iQoMApy0DzUFJRMVTAqZDSHIBB2rGRWyoxBuubfeUD/WVkUU2gSh+RCDk4klm7XSnZ7a0/ZFwiEt5g=
\ No newline at end of file
+eNrlljFrwzAQhfdA/kO5tRp0smXL2kLJlKWQbMaUhrjFUOpUyEMo+e9JQ3x2cDedJq+2ePf49Di9crkopXj6hbfmAFYKWHnvmn3n693pWK+cA1tef3qwsPXvbtt2X+ufrjk+HHtpvz+az+eHbyBgU5/A5gJeXbsHi2cRJGS4hLAYKVXnSlwRICFAfgQ0L9Wh1iWflO6lgpWykdKdpyKeai48czaeZsozIZ7JTHgqShVKwpAShjTipgr2bviAIluq1DRVmnDqmeBM2HCmU5wZ4cz4cSLX86emr19OxvN55EDpf5aLIQom4o5FthU73F9Bzou4zvu2NDRGlBGjrriiHioUpcT2MEfdM0L5vAV8mPo3slouLnK1Gr0=
\ No newline at end of file
diff --git a/Unity/Assets/Download/DataTable/StarSoulLevelConfig.json b/Unity/Assets/Download/DataTable/StarSoulLevelConfig.json
index ef483d79..ac74915f 100644
--- a/Unity/Assets/Download/DataTable/StarSoulLevelConfig.json
+++ b/Unity/Assets/Download/DataTable/StarSoulLevelConfig.json
@@ -1 +1 @@
-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
\ No newline at end of file
+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
\ No newline at end of file
diff --git a/Unity/Assets/Download/DataTable/StarSoulTypeConfig.json b/Unity/Assets/Download/DataTable/StarSoulTypeConfig.json
index ebf6cbcc..5eb5a5b9 100644
--- a/Unity/Assets/Download/DataTable/StarSoulTypeConfig.json
+++ b/Unity/Assets/Download/DataTable/StarSoulTypeConfig.json
@@ -1 +1 @@
-eNpl0M8KAVEUBvC9mnfQXc/i3vlzZ8Yb2HgBScLCAg8gpYwomYUsTIMNUcpCbBBvw8x9CzJ1z3Etv1O/zjlfUcsUGaVMz3ZIuVEjuW8ghUqzTnLkudmL+SnuR/FgR3SSr7ZbnykzKLcd0i3pKTYwNn7x+Xm5JxMVu4BNjE2JxXIqHqHCPGAWZpZkcXhPwuCXcQrMxsyW7LU4iqinMAaMY8ZhW+C/DluFGcAczBwo5jr7+42bwFzMXKjk5v8zC5iHmSdZslon0VBhtmSMIvYJ8sjxQ4QjhfGUlbTMG4pZqB4=
\ No newline at end of file
+eNp9001LwzAYB/D7wO8gAU8dkqZJ1+3qSQQvipcxZKiHgW8HPQwRBiobk80XNtysTsShIAi+HdSyfpv05VsYXOmepNLjk/bh90+epDiVKeoY69npA7RaWUeFvwItlrc2UAHx4XPY+/CPbP/kCWXR/NrOtljVCTZZTtRzO7vV5equ+FO0LO1X9ujCRhUVDBJVK+XNffERz9JoQTR7HYfXHY3iGXRYyo51AnUi65/8exS0VN1K0Y0UPey9c/de1g2oG7Ee3l6Gbl9x85JLJJemuH7njl+MZJdCl8au3x8F/bbsmjjFZWnuu8ubtuwy6LLY9W7eQrumuLrkGpJrqi5hYMzXn2LM/ofjdV81wgBvQt6cbLt97L08KjxJ4XMqn9C9bsMb3GgMbj4H9dzkqv10EsM2DUmnkm4lNk8A37yS909AAgsmsCbXzTlOJqApCfKJsbN/EkRnQOEE8jBBPk4QDB4Cu64kYFICBhOQxAQwSMDPv4L7mt+ua4IeL1vjtujorLgter5W3BXWzzQdTE3HILEo4qmdumG/oSQ2UxInzgwn3ii3B3zY0mikl6YyvxYdqfk=
\ No newline at end of file
diff --git a/Unity/Assets/Download/DataTable/Sys_Scene.json b/Unity/Assets/Download/DataTable/Sys_Scene.json
index 08bfbbd0..3689f2c9 100644
--- a/Unity/Assets/Download/DataTable/Sys_Scene.json
+++ b/Unity/Assets/Download/DataTable/Sys_Scene.json
@@ -1 +1 @@
-eNrd2ttOG0cYB/D7SHmHyrcF5Dns2uYuoTlUJRUKXFRCyFrZ28SqD2RtUKwoUg5tISGlTcMhBBIaAWkhggDiaAN+Gc8av0XXNoX9xjO2WUK6+HJ3PWj3xzcz/8/r3suXepHX60UtXz3wBCNhT3vlyPO9FtM97Z7ukB7Xg52JO5G4p8XzjZ4MWScLU1m2P24dl68KP9mhxa8njJAe7vrO0/6jFk3q5XM9uhY7Pr6thxKxmB4Pd+qDetTT7m3xdGpp3UhaN1H6dEw3tK5EMngrEv+hfNV2SrtfOdUVLY2wTl0xDE97r/UMqdK9pJPB8v18fXzdY/ts8D4cG0xbxw9b+h72tRxxYMCBOY4OQ9dS+u1EVBcagMuNQLjlqQl4asI99bV4SjdulM6IHtp+9SI9MwXPTLlnvqVF4h2RVPqk9tnsaHF8SEhg+3BNgZQxUBugFanVBKVzjg1aEWlTvKqichatqI36KFUDwEQBJkqViWFN12hiINl9b0AzdJvNwhD7MMV2c2wmIxGqGnpWKSyQwp+xWiwhrASoogAhFQipnNBVXQvdPWExP42x2Qxb3TM3t83solDmvyGn4fCKPHxtSBGQVE5/ofrxAR0fp3MzEU8YPXqsP2orncPf5g6XnrGZOXMlJwSCo85aNSIi5dyrxg9c/JzLDWtGhCNavEszfrLNqZVh8/l8fvcPNr0shOGGnVHGXw3jP3eXAHAJ8LvtXS0a1eN37NXyabzwZC+/O8JmVsVbsG3MaXYj6nWJiTW5bSalqQ6Xi0QyecJxdCRYVSoXgEClBiQlgRXRbKFtovlSPnuGFUXgAJYRBDIpQoKtuTuVMNLINlmG37LcUzbylK1PS7fo40ENTBU+olo3Um8BPo+t2+9VCK3mIoALZFaEZVyY5yosvGN7T0qTqR4adoZGXIwGIi8iMjTCo5nL2XzmPTt4XHw0VhuNOENTXIwGMjOiMjRaNTE/TBSXx+qWGXU8N91LBiI1UmRkiq3J/nW2kG1oLVMcerm5xEDARqrMS+W9Gl/MVGdq2M1VBoI38snUfLxa46uZz6Gam2sNxHLkl6n5q+ZmY8uZ3/Gu6V4ykNhRQEYWOCHL770pZY31g8LjTWt6mnMrtdUCDtVcXGgYZHrslQZabxVbNlccGs1npw53lurkWq8zN+riasOgEcDyRgDxboe5bTa/xmZH2c6TOm4OGwLq5noDHQGWdgQI827m5F9sdb84njN3J+q4Ycfx1r1uoCnA0qYA2bqCw4ODfCZjbm6zzHh+Z6Iw/qKOm9O2wM31BvoCLO0LEK12Wyw8elOcXmJra3XcHDYHqpvrDTQHWNocIKXKbXXDnNoqzObMjXd13Bw2Caqb6w00CVjaJCCVd2Pzi4XFTKlLmB2t4+awTfC5ud5Am4D5NuF6JKZF01e1VMr+BT1b2TInfzeHXwu9uDG1vnCs//7vf/nCFYMuAPNdwJVQKjKo92hJ21fz5kaWPf9H6AE+7q6v5BH/OlSEAfI95vN95f/8bdheH/m9l8XJdVkzBEac8fXwFygPMF0IiO2Ej+1d1n0m4lq0a7Dflj+Lb/8svpoxJybZ3EfZ21Bu5EVjAamcIDkLtv9yZL/4aqthFnwBWUDoJljOYkuPxezPxaGXDbOQC8gCMjWpztTxgei1ewORfvg2p5D523w2wrYXJLu0fdQpllnqAhAQlgmVgtibs53lJgYBKZgoUhD7vPn4uolBQLwlquy1uHV7YbgVl8uk8XfkJ3/gNIuK3y2vygmIs8QndbqpGWG+dk6hdDT8NEaBgFuMQLolfsmuVP2zgpLMylbNDUn0I4M6Lpi6xQUEXcIH3e5+LaT3GJrV0tn2JXNyy+oezclfDt+/QJ932VFd4kJB5qVeuQsWu+AmdQGhlyK5CxG7kCZ1AamXYrkLFbvQJnUBsZcSuYsidlGa1AWkX0rlLqrYRW0+l77Ll/4F/9iLbw==
\ No newline at end of file
+eNrl2l1TE1cYB/B7Z/wOndwWmZyX3STcAaJ2ih1GuOgM4zA7yVYzTbK4CY4ZxxnFtqhYWquAKJo6qC1a3hzlJUHyZXI27LfoBijZ5+ScJCxql3C5uznM7o/nnPN/shk8eWIQBYNB1PbV9cBQPBbo2D0KfKcl9UBHoD+qp/ShXuNSPBVoC5zW01HnZHmmwD5OOsc7V4Wf7NZSZwwzqsf6vg10/KAl0vrOuQFdS+4fX9CjRjKpp2K9+lU9EegItgV6taxupp2bqHw6qZtan5EeOh9Pfb9z1XVKu7Z7qi9RGeGc6jTNQMeg8wyZyr1k00M79/P1/vWA67ND1+DYoaxzfKPt4o2LbXscGHBgjqPb1LWMfsFI6EIDcLkZCL88NQFPTbin7klldPNs5Yzood1Xj9IzU/DMlHvm81o81R3PZKu1z3IT9uSYkMD14boCGXOkPsAppNYSVM55NjiFSLsSVBWVsziF2mmIUjUCTBRgotSYmM50TRgj6f4rI5qpu2xejbHXM2yjyGbzEqGaoYeVwgIp/AmrxRHCSoQqChBSgZDKCXXpWvRylcVaesRyeba8aX1YswrzQpn/hhyEIyjyCLUjRUCye/oL1U8I6IQ4nXNGyjAH9ORwwlU627/Obb+5y2bnrMWiEAiOOmzViIiUz141YeAS5lzOOjMiFtdSfZr5o2tOLd6x7r0sbfzOni4IYbhhh5QJ18KEP7tLBLhE+N32spZI6KlL7mpZmiyPbpY2xtnssngLdo05yG5Egz4xcSa3y6Qy1eFyYaTTVY69I8GqsnsBCOzWgKQksCKaLbRdNF92zh5iRRE4gGUEgUyKkGBr7s8YZha5JsudZ6x4m43fZu+eSrfo/UFNTBU+ojo30mgB/hxbdzioEFrLRQAXyKwIy7gwz1V+9ZxtjlYmUyM07A2N+BgNRF5EZGiER7MWCqX8C7Z1y775qD4a8Yam+BgNZGZEZWi0ZmK+nrIXHjUsM+p5bvqXDERqpMjIFFeT/UuuXGhqLVM8evm5xEDARqrMS+W9ml/MVG9q2M9VBoI3CsnUQrxa86tZyKOan2sNxHIUlqmFa+Zmc8tZ2POu6V8ykNhRREYWqZKVNp9Ussa7rfKtD870tOYW66tFPKr5uNAwyPQ4KA20wRq2QtEemygVZrbX3zTItUFvbtTH1YZBI4DljQDi3baLa+zlCstNsPXRBm4eGwLq53oDHQGWdgQI827W9J9s+aM9WbQ2phq4Yc/x1r9uoCnA0qYAubqC7a2tUj5vfVhj+cnS+lR58n4DN69tgZ/rDfQFWNoXIFrrNl+++cR++oatrDRw89gcqH6uN9AcYGlzgJQat+X31sxqOVe03j9v4OaxSVD9XG+gScDSJgGpvBt7OV+ez1e6hNxEAzePbULIz/UG2gTMtwln4kktke3SMhn3F/RscdWa/s2681joxY2p94Vj4/d//8sXrhh0AZjvAjqjmfhVfUBLu76at94X2L2/hR7g4/76Sh7xr0NFGCDfYz7f7/6fv4m566O0+cCefidrhsCIQ74e/gLlAaYLAbGd8LG9z7lPI6Ul+q4Ou/Kn/ewP++GsNTXN5t7K3oZyI48aC0jlBMlZsPuXIx/th6tNs+AjyAJCN8FyFld6tAs/2WMPmmYhR5AFZGpSm6lTI4meKyPxYfg2p5z/y7o7ztZeSXZp96gDLLPUByAgLBMqBXE3Z+sLLQwCUjBRpCDuefP2cQuDgHhLVNlrcef2YnAr3imT5t+RV//AQRaVsF9elRMQZ0lI6nROM2N87RxAaW/4QYwiEb8YgXRLwpJdqfZnBRWZxdW6G5LoRwYNXDD1iwsIuoQPuv3DWlQfMDWnpXPtS9b0qtM9WtM/b7+4jz7tsqP6xIWCzEuDchcsdsEt6gJCL0VyFyJ2IS3qAlIvxXIXKnahLeoCYi8lchdF7KK0qAtIv5TKXVSxi9qiLiAEUz4E92c0s98YSXQbw9nOKkyn9ThnL4yyu0vW7D+fFob4BQaEYarWgelyJZhjAAPSLw3VgemuwnQfAxgQeWm4DszpKszpYwADMi+N1IHpqcL0tDbMxZMn/gUUmmDF
\ No newline at end of file
diff --git a/Unity/Assets/Download/FGUI/Bag/Bag_fui.bytes b/Unity/Assets/Download/FGUI/Bag/Bag_fui.bytes
index d3133756..6fb8ed5b 100644
Binary files a/Unity/Assets/Download/FGUI/Bag/Bag_fui.bytes and b/Unity/Assets/Download/FGUI/Bag/Bag_fui.bytes differ
diff --git a/Unity/Assets/Download/FGUI/Common/Common_atlas0.png b/Unity/Assets/Download/FGUI/Common/Common_atlas0.png
index e5bbce64..18f5d0dc 100644
Binary files a/Unity/Assets/Download/FGUI/Common/Common_atlas0.png and b/Unity/Assets/Download/FGUI/Common/Common_atlas0.png differ
diff --git a/Unity/Assets/Download/FGUI/Common/Common_fui.bytes b/Unity/Assets/Download/FGUI/Common/Common_fui.bytes
index 5f5d6e7a..75e9fc6d 100644
Binary files a/Unity/Assets/Download/FGUI/Common/Common_fui.bytes and b/Unity/Assets/Download/FGUI/Common/Common_fui.bytes differ
diff --git a/Unity/Assets/Download/FGUI/Other/Other_fui.bytes b/Unity/Assets/Download/FGUI/Other/Other_fui.bytes
index c17f957d..554f6cd3 100644
Binary files a/Unity/Assets/Download/FGUI/Other/Other_fui.bytes and b/Unity/Assets/Download/FGUI/Other/Other_fui.bytes differ
diff --git a/Unity/Assets/Download/FGUI/Strength/Strength_fui.bytes b/Unity/Assets/Download/FGUI/Strength/Strength_fui.bytes
index 6e119122..47dbf772 100644
Binary files a/Unity/Assets/Download/FGUI/Strength/Strength_fui.bytes and b/Unity/Assets/Download/FGUI/Strength/Strength_fui.bytes differ
diff --git a/Unity/Assets/Editor/CalEditor/Assets/UITool.asset b/Unity/Assets/Editor/CalEditor/Assets/UITool.asset
index 3a143929..b8908a16 100644
--- a/Unity/Assets/Editor/CalEditor/Assets/UITool.asset
+++ b/Unity/Assets/Editor/CalEditor/Assets/UITool.asset
@@ -26,7 +26,7 @@ MonoBehaviour:
templateUIEventTxt: {fileID: 4900000, guid: dee9cbfea24d03d40ac4b2663115c96b, type: 3}
templateUIEventTypeTxt: {fileID: 4900000, guid: affb499ea0bcae741ab7effa4606ad26,
type: 3}
- className: StartSoulUpgradeUI
- uiRootName: Strength
+ className: ActiveUI
+ uiRootName: Other
pathRoot: Assets/HotfixView/UI
pathEvent: Assets/Hotfix/Logic/Model/Game/Common/OpenUI
diff --git a/Unity/Assets/Hotfix/Logic/Behaviour/Game/Event/Battle/StartBossFightEvent.cs b/Unity/Assets/Hotfix/Logic/Behaviour/Game/Event/Battle/StartBossFightEvent.cs
index 6bbb7958..113fd79a 100644
--- a/Unity/Assets/Hotfix/Logic/Behaviour/Game/Event/Battle/StartBossFightEvent.cs
+++ b/Unity/Assets/Hotfix/Logic/Behaviour/Game/Event/Battle/StartBossFightEvent.cs
@@ -44,7 +44,7 @@ namespace ET
MonsterBase monsterBase = MonsterBaseCategory.Instance.Get(bossId);
//!加载预制体
- Unit unitMonster =await UnitFactory.Create(zoneScene,unitId, monsterBase.PrefabId, UnitType.BossMonster);
+ Unit unitMonster =await UnitFactory.Create(zoneScene,unitId, monsterBase.PrefabId, UnitType.Monster);
unitMonster.Position = PosHelper.GetMonsterPos(0);
//!添加怪物属性
int difficultIndex = team.MemberCount - 1;
diff --git a/Unity/Assets/Hotfix/Logic/Behaviour/Game/Event/Battle/StartFamilyBossFightEvent.cs b/Unity/Assets/Hotfix/Logic/Behaviour/Game/Event/Battle/StartFamilyBossFightEvent.cs
index 89933415..4687fa5c 100644
--- a/Unity/Assets/Hotfix/Logic/Behaviour/Game/Event/Battle/StartFamilyBossFightEvent.cs
+++ b/Unity/Assets/Hotfix/Logic/Behaviour/Game/Event/Battle/StartFamilyBossFightEvent.cs
@@ -45,7 +45,7 @@ namespace ET
FamilyBossConfig bossBase = DataTableHelper.Get(bossId);
//!加载预制体
MonsterBase monsterBase = MonsterBaseCategory.Instance.Get(bossBase.MonsterId);
- Unit unitMonster = await UnitFactory.Create(zoneScene,unitId, monsterBase.PrefabId, UnitType.FamilyBossMonster);
+ Unit unitMonster = await UnitFactory.Create(zoneScene,unitId, monsterBase.PrefabId, UnitType.Monster);
unitMonster.Position = PosHelper.GetMonsterPos(0);
//!添加怪物属性
int maxHp = monsterBase.Hp;
diff --git a/Unity/Assets/Hotfix/Logic/Behaviour/Game/Event/Battle/StartManulEquipFightEvent.cs b/Unity/Assets/Hotfix/Logic/Behaviour/Game/Event/Battle/StartManulEquipFightEvent.cs
index 486e4565..cefc0754 100644
--- a/Unity/Assets/Hotfix/Logic/Behaviour/Game/Event/Battle/StartManulEquipFightEvent.cs
+++ b/Unity/Assets/Hotfix/Logic/Behaviour/Game/Event/Battle/StartManulEquipFightEvent.cs
@@ -60,7 +60,7 @@ namespace ET
//!加载预制体
MonsterBase monsterBase = MonsterBaseCategory.Instance.Get(config.MonsterId);
- Unit unitMonster = await UnitFactory.Create(zoneScene,unitId, monsterBase.PrefabId, UnitType.ManulEquipMonster);
+ Unit unitMonster = await UnitFactory.Create(zoneScene,unitId, monsterBase.PrefabId, UnitType.Monster);
unitMonster.Position = PosHelper.GetMonsterPos(i);
//!初始化Hud
ClientUnitCharacterComponent.Instance.Add(unitId, config.Name, monsterBase.Level, monsterBase.Hp, monsterBase.Hp);
diff --git a/Unity/Assets/Hotfix/Logic/Behaviour/Game/Event/Battle/StartTrialCopyFightEvent.cs b/Unity/Assets/Hotfix/Logic/Behaviour/Game/Event/Battle/StartTrialCopyFightEvent.cs
index bc25c1e3..ad867be8 100644
--- a/Unity/Assets/Hotfix/Logic/Behaviour/Game/Event/Battle/StartTrialCopyFightEvent.cs
+++ b/Unity/Assets/Hotfix/Logic/Behaviour/Game/Event/Battle/StartTrialCopyFightEvent.cs
@@ -46,7 +46,7 @@ namespace ET
long unitId = list[i];
//!加载预制体
- Unit unitMonster =await UnitFactory.Create(zoneScene,unitId, monsterBase.PrefabId, UnitType.TrialCopyMonster);
+ Unit unitMonster =await UnitFactory.Create(zoneScene,unitId, monsterBase.PrefabId, UnitType.Monster);
unitMonster.Position = PosHelper.GetMonsterPos(i);
//!初始化Hud
ClientUnitCharacterComponent.Instance.Add(unitId, monsterBase.NickName, monsterBase.Level, monsterBase.Hp, monsterBase.Hp);
diff --git a/Unity/Assets/Hotfix/Logic/Behaviour/Game/Handler/Battle/Mainstory/M2C_BattleVictoryHandler.cs b/Unity/Assets/Hotfix/Logic/Behaviour/Game/Handler/Battle/Mainstory/M2C_BattleVictoryHandler.cs
index f7bc89e0..af3680c8 100644
--- a/Unity/Assets/Hotfix/Logic/Behaviour/Game/Handler/Battle/Mainstory/M2C_BattleVictoryHandler.cs
+++ b/Unity/Assets/Hotfix/Logic/Behaviour/Game/Handler/Battle/Mainstory/M2C_BattleVictoryHandler.cs
@@ -18,8 +18,6 @@ namespace ET
case BattleType.None:
break;
case BattleType.MainStory:
- //!显示主怪
- //MainStoryMonsterzoneScene.GetComponent().SetAllVisile(zoneScene,true);
break;
case BattleType.TrialCopy:
break;
diff --git a/Unity/Assets/Hotfix/Logic/Behaviour/Game/Handler/Battle/Mainstory/M2C_UnitDeadHandler.cs b/Unity/Assets/Hotfix/Logic/Behaviour/Game/Handler/Battle/Mainstory/M2C_UnitDeadHandler.cs
index 25e53960..cf990b4b 100644
--- a/Unity/Assets/Hotfix/Logic/Behaviour/Game/Handler/Battle/Mainstory/M2C_UnitDeadHandler.cs
+++ b/Unity/Assets/Hotfix/Logic/Behaviour/Game/Handler/Battle/Mainstory/M2C_UnitDeadHandler.cs
@@ -18,12 +18,7 @@ namespace ET
Log.Error($"unit is null where Id = {message.UnitId}");
return;
}
- if(unit.UnitType == UnitType.MainStoryMonster ||
- unit.UnitType == UnitType.TrialCopyMonster||
- unit.UnitType == UnitType.BossMonster||
- unit.UnitType == UnitType.ManulEquipMonster||
- unit.UnitType == UnitType.FamilyBossMonster
- )
+ if(unit.UnitType == UnitType.Monster )
{
MonsterUnitComponent monsterUnitComponent = zoneScene.GetComponent().GetComponent();
monsterUnitComponent.RemoveMonsterAsync(unit).Coroutine();
diff --git a/Unity/Assets/Hotfix/Logic/Behaviour/Game/Handler/Other/M2C_CreateMapMonsterHandler.cs b/Unity/Assets/Hotfix/Logic/Behaviour/Game/Handler/Other/M2C_CreateMapMonsterHandler.cs
index 280b7d2b..928e933a 100644
--- a/Unity/Assets/Hotfix/Logic/Behaviour/Game/Handler/Other/M2C_CreateMapMonsterHandler.cs
+++ b/Unity/Assets/Hotfix/Logic/Behaviour/Game/Handler/Other/M2C_CreateMapMonsterHandler.cs
@@ -22,25 +22,6 @@ namespace ET
break;
case MapMonsterType.Trial:
break;
- case MapMonsterType.ManulEquip:
- Game.EventSystem.Publish(new ET.EventType.AddClickAction
- {
- unit = unit,
- action = async () =>
- {
- var ret = await zoneScene.GetComponent().Call(new C2M_ClickMapUnit(){type = (int) MapMonsterType.ManulEquip,Id=unit.Id});
- if (!ret.Message.IsNullOrEmpty())
- {
- Game.EventSystem.Publish(new ET.EventType.ShowTipUI
- {
- tip = ret.Message
- }).Coroutine();
- return;
- }
- zoneScene.GetComponent().Remove(unit);
- }
- }).Coroutine();
- break;
case MapMonsterType.MapCoin:
Game.EventSystem.Publish(new ET.EventType.AddClickAction
{
@@ -61,13 +42,15 @@ namespace ET
}).Coroutine();
break;
case MapMonsterType.SpaceTravel:
+ case MapMonsterType.ManulEquip:
+ case MapMonsterType.StarSoulCopy:
Game.EventSystem.Publish(new ET.EventType.AddClickAction
{
unit = unit,
action = async () =>
{
long id = message.Id;
- var ret = await zoneScene.GetComponent().Call(new C2M_ClickMapUnit(){type = (int) MapMonsterType.SpaceTravel,Id=unit.Id});
+ var ret = await zoneScene.GetComponent().Call(new C2M_ClickMapUnit(){type = message.MapMonsterType,Id=unit.Id});
if (!ret.Message.IsNullOrEmpty())
{
Game.EventSystem.Publish(new ET.EventType.ShowTipUI
diff --git a/Unity/Assets/Hotfix/Logic/Behaviour/Game/Handler/UI/M2C_SyncStarSoulBagHandler.cs b/Unity/Assets/Hotfix/Logic/Behaviour/Game/Handler/UI/M2C_SyncStarSoulBagHandler.cs
index 822941e3..85086d16 100644
--- a/Unity/Assets/Hotfix/Logic/Behaviour/Game/Handler/UI/M2C_SyncStarSoulBagHandler.cs
+++ b/Unity/Assets/Hotfix/Logic/Behaviour/Game/Handler/UI/M2C_SyncStarSoulBagHandler.cs
@@ -28,6 +28,7 @@ namespace ET
exp =item.exp,
posType = (EquipType) item.posType,
quality = (Quality) item.quality,
+ isLocked = item.isLocked,
};
for (var i = 0; i < item.vice.Count; i++)
{
diff --git a/Unity/Assets/Hotfix/Logic/Behaviour/Game/Handler/UI/M2C_SyncStarSoulBagItemUsedHandler.cs b/Unity/Assets/Hotfix/Logic/Behaviour/Game/Handler/UI/M2C_SyncStarSoulBagItemUsedHandler.cs
new file mode 100644
index 00000000..f5344d64
--- /dev/null
+++ b/Unity/Assets/Hotfix/Logic/Behaviour/Game/Handler/UI/M2C_SyncStarSoulBagItemUsedHandler.cs
@@ -0,0 +1,23 @@
+using ET;
+using ET.EventType;
+using UnityEngine;
+
+namespace ET
+{
+ [MessageHandler]
+ public class M2C_SyncStarSoulBagItemUsedHandler: AMHandler
+ {
+ protected override async ETVoid Run(ET.Session session, M2C_SyncStarSoulBagItemUsed message)
+ {
+ var zoneScene = session.ZoneScene();
+ StarSoulBag bag = zoneScene.GetComponent();
+ bag.usedStarSoulDic[(byte) message.key] = message.value;
+ bag.Suits.Clear();
+ foreach (KV_int32_int32 kv in message.suitKVs)
+ {
+ bag.Suits.Add(new StarSoulSuit(){Id = kv.key,type = (StarSoulSuit.StarSoulSuitType) kv.value});
+ }
+ await ETTask.CompletedTask;
+ }
+ }
+}
\ No newline at end of file
diff --git a/Unity/Assets/Hotfix/Logic/Behaviour/Game/Handler/UI/M2C_SyncStarSoulBagItemUsedHandler.cs.meta b/Unity/Assets/Hotfix/Logic/Behaviour/Game/Handler/UI/M2C_SyncStarSoulBagItemUsedHandler.cs.meta
new file mode 100644
index 00000000..ea02fb4b
--- /dev/null
+++ b/Unity/Assets/Hotfix/Logic/Behaviour/Game/Handler/UI/M2C_SyncStarSoulBagItemUsedHandler.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: d98fff3381ad72944bd772566f55785c
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Unity/Assets/Hotfix/Logic/Behaviour/Game/Helper/ItemHelper.cs b/Unity/Assets/Hotfix/Logic/Behaviour/Game/Helper/ItemHelper.cs
index 4083833c..223232fe 100644
--- a/Unity/Assets/Hotfix/Logic/Behaviour/Game/Helper/ItemHelper.cs
+++ b/Unity/Assets/Hotfix/Logic/Behaviour/Game/Helper/ItemHelper.cs
@@ -4,6 +4,11 @@ namespace ET
{
public static class ItemHelper
{
+ public static float GetRealMainValue(float oldValue, byte level)
+ {
+ return (float) (oldValue*Math.Pow(mainAddCoe, level));
+ }
+ private const float mainAddCoe = 1.1f;
private const float reduceCoe = 0.8f;
private const float reduceCoe1 = 0.6f;
diff --git a/Unity/Assets/Hotfix/Logic/Behaviour/Game/System/StarSoulBagSystem.cs b/Unity/Assets/Hotfix/Logic/Behaviour/Game/System/StarSoulBagSystem.cs
index f76be9a0..2f48c392 100644
--- a/Unity/Assets/Hotfix/Logic/Behaviour/Game/System/StarSoulBagSystem.cs
+++ b/Unity/Assets/Hotfix/Logic/Behaviour/Game/System/StarSoulBagSystem.cs
@@ -47,6 +47,15 @@ namespace ET
Game.EventSystem.Publish(new ShowTipUI() { tip = ret.Message, tipType = TipType.Single, isClearIpt = true, });
return;
}
+ for (var i = 0; i < ret.usedIdMap.Count; i++)
+ {
+ self.usedStarSoulDic[(byte) i] = ret.usedIdMap[i];
+ }
+ self.Suits.Clear();
+ foreach (KV_int32_int32 kv in ret.suitKVs)
+ {
+ self.Suits.Add(new StarSoulSuit(){Id = kv.key,type = (StarSoulSuit.StarSoulSuitType) kv.value});
+ }
foreach (StarSoulNetItem starSoulNetItem in ret.itemList)
{
try
@@ -60,12 +69,14 @@ namespace ET
typeId = starSoulNetItem.typeId,
level = (byte) starSoulNetItem.level,
exp = starSoulNetItem.exp,
+ isLocked = starSoulNetItem.isLocked,
+ mainAttribute = starSoulNetItem.main,
};
- item.mainAttribute = starSoulNetItem.main;
for (var i = 0; i < starSoulNetItem.vice.Count; i++)
{
item.viceAttribute[i] = starSoulNetItem.vice[i];
- } for (var i = 0; i < starSoulNetItem.viceAdd.Count; i++)
+ }
+ for (var i = 0; i < starSoulNetItem.viceAdd.Count; i++)
{
item.viceAdd[i] = starSoulNetItem.viceAdd[i];
}
diff --git a/Unity/Assets/Hotfix/Logic/Model/Game/Common/BattleType.cs b/Unity/Assets/Hotfix/Logic/Model/Game/Common/BattleType.cs
index 9ddd7726..5a070114 100644
--- a/Unity/Assets/Hotfix/Logic/Model/Game/Common/BattleType.cs
+++ b/Unity/Assets/Hotfix/Logic/Model/Game/Common/BattleType.cs
@@ -15,5 +15,6 @@ namespace ET
PK = 20,
PersonalPvp = 21,
SpaceTravel =22,
+ StarSoulCopy =23,
}
}
diff --git a/Unity/Assets/Hotfix/Logic/Model/Game/Common/MapMonsterType.cs b/Unity/Assets/Hotfix/Logic/Model/Game/Common/MapMonsterType.cs
index 930ff524..6097bb90 100644
--- a/Unity/Assets/Hotfix/Logic/Model/Game/Common/MapMonsterType.cs
+++ b/Unity/Assets/Hotfix/Logic/Model/Game/Common/MapMonsterType.cs
@@ -10,5 +10,6 @@ namespace ET
ManulEquip,
MapCoin,
SpaceTravel,
+ StarSoulCopy,
}
}
diff --git a/Unity/Assets/Hotfix/Logic/Model/Game/Common/OpenUI/EventType.OpenActiveUI.cs b/Unity/Assets/Hotfix/Logic/Model/Game/Common/OpenUI/EventType.OpenActiveUI.cs
new file mode 100644
index 00000000..ea550ed2
--- /dev/null
+++ b/Unity/Assets/Hotfix/Logic/Model/Game/Common/OpenUI/EventType.OpenActiveUI.cs
@@ -0,0 +1,7 @@
+namespace ET.EventType
+{
+ public struct OpenActiveUI
+ {
+ public Scene zoneScene;
+ }
+}
\ No newline at end of file
diff --git a/Unity/Assets/Hotfix/Logic/Model/Game/Common/OpenUI/EventType.OpenActiveUI.cs.meta b/Unity/Assets/Hotfix/Logic/Model/Game/Common/OpenUI/EventType.OpenActiveUI.cs.meta
new file mode 100644
index 00000000..68a27ccf
--- /dev/null
+++ b/Unity/Assets/Hotfix/Logic/Model/Game/Common/OpenUI/EventType.OpenActiveUI.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 392a9a0f6bf9bd4499849aeadaf91a16
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Unity/Assets/Hotfix/Logic/Model/Game/Common/SkillEventType.cs b/Unity/Assets/Hotfix/Logic/Model/Game/Common/SkillEventType.cs
index 8a5770c4..150c0ad2 100644
--- a/Unity/Assets/Hotfix/Logic/Model/Game/Common/SkillEventType.cs
+++ b/Unity/Assets/Hotfix/Logic/Model/Game/Common/SkillEventType.cs
@@ -5,7 +5,7 @@ using System.Collections.Generic;
namespace Cal
{
- public enum AttributeType:byte
+ public enum AttributeType: byte
{
无 = 0,
最大生命 = 1,
@@ -22,7 +22,7 @@ namespace Cal
精神暴击系数,
物理暴击效果,
精神暴击效果,
- 抗物理暴击系数,
+ 抗物理暴击系数=15,
抗精神暴击系数,
抗物理暴击效果,
抗精神暴击效果,
@@ -39,42 +39,62 @@ namespace Cal
生命回复,
物理增伤 = 30,
精神增伤,
+ 攻击加成 = 32,
+ 防御加成 = 33,
+ 生命加成 = 34,
+ 精力加成 = 35,
+ 暴击系数 = 36,
+ 暴击效果 =37,
+ 抗暴击系数 = 38,
+ 抗暴击效果 =39,
}
+
public enum ValueChangeType
{
Zero,
Plus,
Minus
}
+
public enum EffectType
{
None = 0,
+
[LabelText("弹道型攻击特效")]
BulletAtk,
+
[LabelText("单点型攻击特效")]
PositionAtk,
+
[LabelText("目标获得效果时的特效")]
Acception,
+
[LabelText("持续型特效")]
Continue,
}
+
public enum EffectTargetType
{
[LabelText("目标")]
Target,
+
[LabelText("施法者")]
Caster,
+
[LabelText("己方队伍")]
TeamPosition,
+
[LabelText("敌方队伍")]
EnermyPosition
}
+
public enum EffectAttachType
{
Center,
Top,
Foot
}
+
public enum SkillTypes
{
普通,
@@ -82,12 +102,14 @@ namespace Cal
引导,
开关,
}
+
public enum SkillCastType
{
无消耗,
消耗精力,
消耗血量
}
+
public enum CastBaseType
{
Level,
@@ -95,12 +117,14 @@ namespace Cal
Max,
Other
}
+
public enum SkillSourcetype
{
None,
Changable,
Constage,
}
+
public enum SkillDataTableArgs
{
Args0,
@@ -135,6 +159,7 @@ namespace Cal
Args29,
Args30,
}
+
public enum SkillDamageType
{
///
@@ -146,6 +171,7 @@ namespace Cal
真实伤害,
护盾治疗,
}
+
public enum ValueCalculateType
{
物理攻击力x系数,
@@ -158,31 +184,32 @@ namespace Cal
{
当技能施法开始,
当技能施法时,
- 当技能引导开始,//不做
- 当技能引导完成,//不做
+ 当技能引导开始, //不做
+ 当技能引导完成, //不做
当拥有者出生,
当拥有者死亡,
- 当切换为关闭状态,//不做
- 当切换为开启状态,//不做
+ 当切换为关闭状态, //不做
+ 当切换为开启状态, //不做
当技能添加,
当技能升级,
当技能移除,
- 当人物升级,//不做
- 当技能引导时,//不做
- __,//不做
+ 当人物升级, //不做
+ 当技能引导时, //不做
+ __, //不做
___,
当技能中途释放,
}
+
public enum SkillOptionType
{
添加技能,
- 升级技能,//不做
+ 升级技能, //不做
移除技能,
使目标模型做出某个动作,
应用Modifier,
移除Modifier,
附着特效,
- 范围攻击,//不做
+ 范围攻击, //不做
创建定时器,
伤害,
延迟操作,
@@ -211,10 +238,11 @@ namespace Cal
根据人数改变伤害,
改变释放次数,
}
+
public enum ModifierTag
{
- 无=0,
- 控制 =1,
+ 无 = 0,
+ 控制 = 1,
护盾,
持续治疗,
毒,
@@ -245,19 +273,24 @@ namespace Cal
反击,
反伤,
}
+
[Flags]
public enum ModifierAttribute
{
[LabelText("无,此类型的不能重复添加,无任何效果")]
无 = 0,
+
[LabelText("无敌状态也能添加这个modifier")]
忽视无敌 = 1 << 1,
+
[LabelText("叠加层数,用于持续伤害")]
可叠加 = 1 << 2,
+
[LabelText("重新计时,失去旧的,添加新的,并触发事件")]
可刷新 = 1 << 3,
所有 = 可叠加 | 可刷新 | 忽视无敌,
}
+
[LabelText("可叠加的buff类型")]
public enum OverlableBuffType
{
@@ -267,12 +300,14 @@ namespace Cal
燃烧,
治疗,
}
+
public enum BuffType
{
Buff,
Debuff,
Unknow,
}
+
public enum ModifierStateType
{
无 = 0,
@@ -302,6 +337,7 @@ namespace Cal
燃烧,
治疗,
}
+
public enum ModifierValueType
{
无,
@@ -339,41 +375,44 @@ namespace Cal
修改命中,
修改抵抗,
}
+
public enum ModifierEventCondition
{
当modifier被创建后,
当modifier被移除前,
当拥有modifier的单位被攻击时,
- 当拥有modifier的单位攻击到某个目标时,//没做
+ 当拥有modifier的单位攻击到某个目标时, //没做
当拥有modifier的单位开始攻击某个目标,
- 当拥有modifier的单位施加伤害时,//没做
+ 当拥有modifier的单位施加伤害时, //没做
当拥有modifier的单位受到伤害时,
- 当拥有modifier的单位暴击时,//没做
+ 当拥有modifier的单位暴击时, //没做
循环执行定时器操作,
当拥有modifier的单位被暴击时,
- 当拥有modifier的单位攻击失败时,//没做
- 当拥有modifier的单位攻击友方时,//没做
- 当拥有modifier的单位装备物品,//没做
- 当拥有modifier的单位结束持续施法,//没做
- 当拥有modifier的单位开始使用技能,//没做
- 当拥有modifier的单位状态改变时,//没做
+ 当拥有modifier的单位攻击失败时, //没做
+ 当拥有modifier的单位攻击友方时, //没做
+ 当拥有modifier的单位装备物品, //没做
+ 当拥有modifier的单位结束持续施法, //没做
+ 当拥有modifier的单位开始使用技能, //没做
+ 当拥有modifier的单位状态改变时, //没做
当拥有modifier的单位复活时,
当拥有modifier的单位死亡时,
- 当拥有modifier的单位花费魔法时,//没做
- 当拥有modifier的单位获得最大生命值时,//没做
- 当拥有modifier的单位获得最大精力时,//没做
+ 当拥有modifier的单位花费魔法时, //没做
+ 当拥有modifier的单位获得最大生命值时, //没做
+ 当拥有modifier的单位获得最大精力时, //没做
当拥有modifier的单位受到治疗时,
- 当拥有modifier的单位击杀目标时,//没做
+ 当拥有modifier的单位击杀目标时, //没做
当拥有modifier的单位生命值变化时,
当modifier被创建前,
当modifier被移除后,
}
+
public enum StateStateType
{
启用,
不作为,
禁用,
}
+
public enum ThinkerType
{
无,
@@ -383,5 +422,4 @@ namespace Cal
治疗,
自定义
}
-}
-
+}
\ No newline at end of file
diff --git a/Unity/Assets/Hotfix/Logic/Model/Game/Common/UnitType.cs b/Unity/Assets/Hotfix/Logic/Model/Game/Common/UnitType.cs
index 13c40938..c031905a 100644
--- a/Unity/Assets/Hotfix/Logic/Model/Game/Common/UnitType.cs
+++ b/Unity/Assets/Hotfix/Logic/Model/Game/Common/UnitType.cs
@@ -9,18 +9,13 @@ namespace ET
{
None,
Player,
- MainStoryMonster,
- TrialCopyMonster,
- BossMonster,
+ Monster,
OtherPlayer,
Enermy,
TeamMember,
NPC,
MapMonster,
TransPoint,
- FamilyBossMonster,
- ManulEquipMonster,
- SpaceTravelMonster,
SceneUnit,
Pet,
}
diff --git a/Unity/Assets/Hotfix/Logic/Model/Game/Entity/UI/ClientItemData.cs b/Unity/Assets/Hotfix/Logic/Model/Game/Entity/UI/ClientItemData.cs
index 88817326..39dd47d7 100644
--- a/Unity/Assets/Hotfix/Logic/Model/Game/Entity/UI/ClientItemData.cs
+++ b/Unity/Assets/Hotfix/Logic/Model/Game/Entity/UI/ClientItemData.cs
@@ -24,7 +24,6 @@ namespace ET
public List addtionalAttributes;
public List gemList;
- public long starSoulId;
public Equip() { }
public Equip(EquipTransMessage equip)
{
@@ -47,7 +46,6 @@ namespace ET
star = equip.Star;
quality = (Quality)equip.Quality;
level = equip.Level;
- starSoulId = equip.starsoulId;
}
}
diff --git a/Unity/Assets/Hotfix/Logic/Model/Game/Entity/UI/ClientUnitCharacterComponent.cs b/Unity/Assets/Hotfix/Logic/Model/Game/Entity/UI/ClientUnitCharacterComponent.cs
index eaf3336b..6276e546 100644
--- a/Unity/Assets/Hotfix/Logic/Model/Game/Entity/UI/ClientUnitCharacterComponent.cs
+++ b/Unity/Assets/Hotfix/Logic/Model/Game/Entity/UI/ClientUnitCharacterComponent.cs
@@ -98,13 +98,10 @@ namespace ET
case UnitType.None:
break;
case UnitType.Player:
- case UnitType.MainStoryMonster:
- case UnitType.TrialCopyMonster:
- case UnitType.BossMonster:
+ case UnitType.Monster:
case UnitType.OtherPlayer:
case UnitType.Enermy:
case UnitType.TeamMember:
- case UnitType.ManulEquipMonster:
Remove(unit.Id);
break;
case UnitType.NPC:
diff --git a/Unity/Assets/Hotfix/Logic/Model/Game/Entity/UI/StarSoulBag.cs b/Unity/Assets/Hotfix/Logic/Model/Game/Entity/UI/StarSoulBag.cs
index d5d6fef0..a68d5147 100644
--- a/Unity/Assets/Hotfix/Logic/Model/Game/Entity/UI/StarSoulBag.cs
+++ b/Unity/Assets/Hotfix/Logic/Model/Game/Entity/UI/StarSoulBag.cs
@@ -40,6 +40,8 @@ namespace ET
public Quality quality;
public bool isUsed;
+ public bool isLocked;
+
// [BsonRepresentation(MongoDB.Bson.BsonType.Double, AllowTruncation = true)]
public int mainAttribute;
public int[] viceAttribute = new int[4];
@@ -47,7 +49,23 @@ namespace ET
public float[] viceAdd = new float[4];
}
+ public class StarSoulSuit
+ {
+ [System.Flags]
+ public enum StarSoulSuitType:byte
+ {
+ None,
+ Suit4=1,
+ ///
+ /// 不要使用,不存在这种情况
+ ///
+ Suit8=1<<1,
+ Suit4And8 = Suit4|Suit8,
+ }
+ public int Id;
+ public StarSoulSuitType type;
+ }
public class StarSoulBag: Entity
{
public const ushort MaxCount = 1000;
@@ -57,5 +75,8 @@ namespace ET
public SortedDictionary itemDic = new SortedDictionary();
public long lastSortTime;
public const int sortTimeIntervel = 120 * 1000;
+ public List Suits = new List();
+ [BsonDictionaryOptions(DictionaryRepresentation.ArrayOfArrays)]
+ public Dictionary usedStarSoulDic = new Dictionary();
}
}
\ No newline at end of file
diff --git a/Unity/Assets/Hotfix/Logic/Model/Game/Entity/User/Unit.cs b/Unity/Assets/Hotfix/Logic/Model/Game/Entity/User/Unit.cs
index bd5f9993..8c363bb3 100644
--- a/Unity/Assets/Hotfix/Logic/Model/Game/Entity/User/Unit.cs
+++ b/Unity/Assets/Hotfix/Logic/Model/Game/Entity/User/Unit.cs
@@ -47,10 +47,7 @@ namespace ET
{
case UnitType.None:
case UnitType.Player:
- case UnitType.MainStoryMonster:
- case UnitType.TrialCopyMonster:
- case UnitType.ManulEquipMonster:
- case UnitType.BossMonster:
+ case UnitType.Monster:
case UnitType.Enermy:
case UnitType.TeamMember:
HideUnitComponent.Remove(this);
diff --git a/Unity/Assets/Hotfix/Logic/Model/Game/Entity/User/UnitFactory.cs b/Unity/Assets/Hotfix/Logic/Model/Game/Entity/User/UnitFactory.cs
index 0bc921d2..45a2cd83 100644
--- a/Unity/Assets/Hotfix/Logic/Model/Game/Entity/User/UnitFactory.cs
+++ b/Unity/Assets/Hotfix/Logic/Model/Game/Entity/User/UnitFactory.cs
@@ -44,16 +44,7 @@ namespace ET
{
UnitComponent unitComponent = zoneScene.GetComponent();
Unit unit = EntityFactory.CreateWithParentAndId(unitComponent, id);
- unit.UnitType = battleType switch
- {
- BattleType.MainStory => UnitType.MainStoryMonster,
- BattleType.TrialCopy => UnitType.TrialCopyMonster,
- BattleType.IdleBattle => UnitType.MainStoryMonster,
- BattleType.ManulEquip => UnitType.ManulEquipMonster,
- BattleType.Boss => UnitType.BossMonster,
- BattleType.FamilyBoss => UnitType.FamilyBossMonster,
- BattleType.SpaceTravel => UnitType.SpaceTravelMonster,
- };
+ unit.UnitType = UnitType.Monster;
unit.AddComponent();
diff --git a/Unity/Assets/Hotfix/Logic/Model/Generate/Data/ActivePerDayConfigCategory.Custom.cs b/Unity/Assets/Hotfix/Logic/Model/Generate/Data/ActivePerDayConfigCategory.Custom.cs
new file mode 100644
index 00000000..05193590
--- /dev/null
+++ b/Unity/Assets/Hotfix/Logic/Model/Generate/Data/ActivePerDayConfigCategory.Custom.cs
@@ -0,0 +1,23 @@
+using System.Collections.Generic;
+using ET;
+
+namespace Cal.DataTable
+{
+ public partial class ActivePerDayConfigCategory
+ {
+ public UnOrderMultiMap activeIdDic = new UnOrderMultiMap();
+
+ public override void EndInit()
+ {
+ base.EndInit();
+ foreach (var kv in this.dict)
+ {
+ foreach (var i1 in kv.Value.Day)
+ {
+ var i = (byte) i1;
+ activeIdDic.Add(i,kv.Key);
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/Unity/Assets/Hotfix/Logic/Model/Generate/Data/ActivePerDayConfigCategory.Custom.cs.meta b/Unity/Assets/Hotfix/Logic/Model/Generate/Data/ActivePerDayConfigCategory.Custom.cs.meta
new file mode 100644
index 00000000..03077729
--- /dev/null
+++ b/Unity/Assets/Hotfix/Logic/Model/Generate/Data/ActivePerDayConfigCategory.Custom.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: b537ede57c0ad15499ff81f7ddad75ab
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Unity/Assets/Hotfix/Logic/Model/Generate/Message/OuterMessage.cs b/Unity/Assets/Hotfix/Logic/Model/Generate/Message/OuterMessage.cs
index eebffc46..d791e0c9 100644
--- a/Unity/Assets/Hotfix/Logic/Model/Generate/Message/OuterMessage.cs
+++ b/Unity/Assets/Hotfix/Logic/Model/Generate/Message/OuterMessage.cs
@@ -296,9 +296,6 @@ namespace ET
[ProtoMember(12)]
public List GemList = new List();
- [ProtoMember(13)]
- public long starsoulId { get; set; }
-
}
//登录相关==================================
@@ -4993,6 +4990,9 @@ namespace ET
[ProtoMember(1)]
public int Index { get; set; }
+ [ProtoMember(2)]
+ public bool isLock { get; set; }
+
}
[Message(OuterOpcode.M2C_Upgrade)]
@@ -6997,6 +6997,9 @@ namespace ET
[ProtoMember(10)]
public List viceAdd = new List();
+ [ProtoMember(11)]
+ public bool isLocked { get; set; }
+
}
[ResponseType(typeof(M2C_GetStarSoulBag))]
@@ -7012,6 +7015,42 @@ namespace ET
}
+ [Message(OuterOpcode.KV_int32_int64)]
+ [ProtoContract]
+ public partial class KV_int32_int64
+ {
+ [ProtoMember(1)]
+ public int key { get; set; }
+
+ [ProtoMember(2)]
+ public long value { get; set; }
+
+ }
+
+ [Message(OuterOpcode.KV_int32_int32)]
+ [ProtoContract]
+ public partial class KV_int32_int32
+ {
+ [ProtoMember(1)]
+ public int key { get; set; }
+
+ [ProtoMember(2)]
+ public int value { get; set; }
+
+ }
+
+ [Message(OuterOpcode.KV_string_int32)]
+ [ProtoContract]
+ public partial class KV_string_int32
+ {
+ [ProtoMember(1)]
+ public string key { get; set; }
+
+ [ProtoMember(2)]
+ public int value { get; set; }
+
+ }
+
[Message(OuterOpcode.M2C_GetStarSoulBag)]
[ProtoContract]
public partial class M2C_GetStarSoulBag:IActorLocationResponse
@@ -7028,6 +7067,12 @@ namespace ET
[ProtoMember(1)]
public List itemList = new List();
+ [ProtoMember(2)]
+ public List usedIdMap = new List();
+
+ [ProtoMember(5)]
+ public List suitKVs = new List();
+
}
[Message(OuterOpcode.M2C_SyncStarSoulBag)]
@@ -7048,6 +7093,27 @@ namespace ET
}
+ [Message(OuterOpcode.M2C_SyncStarSoulBagItemUsed)]
+ [ProtoContract]
+ public partial class M2C_SyncStarSoulBagItemUsed:IActorMessage
+ {
+ [ProtoMember(90)]
+ public int RpcId { get; set; }
+
+ [ProtoMember(93)]
+ public long ActorId { get; set; }
+
+ [ProtoMember(3)]
+ public int key { get; set; }
+
+ [ProtoMember(4)]
+ public long value { get; set; }
+
+ [ProtoMember(5)]
+ public List suitKVs = new List();
+
+ }
+
[ResponseType(typeof(M2C_UpgradeStarSoulItem))]
[Message(OuterOpcode.C2M_UpgradeStarSoulItem)]
[ProtoContract]
@@ -7113,4 +7179,87 @@ namespace ET
}
+ [Message(OuterOpcode.C2M_LockStarSoulItem)]
+ [ProtoContract]
+ public partial class C2M_LockStarSoulItem:IActorLocationMessage
+ {
+ [ProtoMember(90)]
+ public int RpcId { get; set; }
+
+ [ProtoMember(93)]
+ public long ActorId { get; set; }
+
+ [ProtoMember(2)]
+ public long itemId { get; set; }
+
+ [ProtoMember(1)]
+ public bool isLock { get; set; }
+
+ }
+
+ [ResponseType(typeof(M2C_StartActive))]
+ [Message(OuterOpcode.C2M_StartActive)]
+ [ProtoContract]
+ public partial class C2M_StartActive:IActorLocationRequest
+ {
+ [ProtoMember(90)]
+ public int RpcId { get; set; }
+
+ [ProtoMember(93)]
+ public long ActorId { get; set; }
+
+ [ProtoMember(2)]
+ public int itemId { get; set; }
+
+ }
+
+ [Message(OuterOpcode.M2C_StartActive)]
+ [ProtoContract]
+ public partial class M2C_StartActive:IActorLocationResponse
+ {
+ [ProtoMember(90)]
+ public int RpcId { get; set; }
+
+ [ProtoMember(91)]
+ public int Error { get; set; }
+
+ [ProtoMember(92)]
+ public string Message { get; set; }
+
+ }
+
+ [ResponseType(typeof(M2C_GetUIDByName))]
+ [Message(OuterOpcode.C2M_GetUIDByName)]
+ [ProtoContract]
+ public partial class C2M_GetUIDByName:IActorLocationRequest
+ {
+ [ProtoMember(90)]
+ public int RpcId { get; set; }
+
+ [ProtoMember(93)]
+ public long ActorId { get; set; }
+
+ [ProtoMember(2)]
+ public string name { get; set; }
+
+ }
+
+ [Message(OuterOpcode.M2C_GetUIDByName)]
+ [ProtoContract]
+ public partial class M2C_GetUIDByName:IActorLocationResponse
+ {
+ [ProtoMember(90)]
+ public int RpcId { get; set; }
+
+ [ProtoMember(91)]
+ public int Error { get; set; }
+
+ [ProtoMember(92)]
+ public string Message { get; set; }
+
+ [ProtoMember(1)]
+ public List map = new List();
+
+ }
+
}
diff --git a/Unity/Assets/Hotfix/Logic/Model/Generate/Message/OuterOpcode.cs b/Unity/Assets/Hotfix/Logic/Model/Generate/Message/OuterOpcode.cs
index f3d5ee3e..dffea01d 100644
--- a/Unity/Assets/Hotfix/Logic/Model/Generate/Message/OuterOpcode.cs
+++ b/Unity/Assets/Hotfix/Logic/Model/Generate/Message/OuterOpcode.cs
@@ -398,11 +398,20 @@ namespace ET
public const ushort M2C_StartSpaceTravel = 20394;
public const ushort StarSoulNetItem = 20395;
public const ushort C2M_GetStarSoulBag = 20396;
- public const ushort M2C_GetStarSoulBag = 20397;
- public const ushort M2C_SyncStarSoulBag = 20398;
- public const ushort C2M_UpgradeStarSoulItem = 20399;
- public const ushort M2C_UpgradeStarSoulItem = 20400;
- public const ushort C2M_PutonStarSoulItem = 20401;
- public const ushort M2C_PutonStarSoulItem = 20402;
+ public const ushort KV_int32_int64 = 20397;
+ public const ushort KV_int32_int32 = 20398;
+ public const ushort KV_string_int32 = 20399;
+ public const ushort M2C_GetStarSoulBag = 20400;
+ public const ushort M2C_SyncStarSoulBag = 20401;
+ public const ushort M2C_SyncStarSoulBagItemUsed = 20402;
+ public const ushort C2M_UpgradeStarSoulItem = 20403;
+ public const ushort M2C_UpgradeStarSoulItem = 20404;
+ public const ushort C2M_PutonStarSoulItem = 20405;
+ public const ushort M2C_PutonStarSoulItem = 20406;
+ public const ushort C2M_LockStarSoulItem = 20407;
+ public const ushort C2M_StartActive = 20408;
+ public const ushort M2C_StartActive = 20409;
+ public const ushort C2M_GetUIDByName = 20410;
+ public const ushort M2C_GetUIDByName = 20411;
}
}
diff --git a/Unity/Assets/Hotfix/Logic/Model/Module/Data/DataTable/ActivePerDayConfig.cs b/Unity/Assets/Hotfix/Logic/Model/Module/Data/DataTable/ActivePerDayConfig.cs
new file mode 100644
index 00000000..d9ab4267
--- /dev/null
+++ b/Unity/Assets/Hotfix/Logic/Model/Module/Data/DataTable/ActivePerDayConfig.cs
@@ -0,0 +1,34 @@
+using ET;
+using MongoDB.Bson.Serialization.Attributes;
+
+namespace Cal.DataTable
+{
+ [Config]
+ public partial class ActivePerDayConfigCategory : ACategory
+ {
+ public static ActivePerDayConfigCategory Instance;
+ public ActivePerDayConfigCategory()
+ {
+ Instance = this;
+ }
+ }
+
+ public partial class ActivePerDayConfig:IConfig
+ {
+ public partial class Reward
+ {
+ public int RewardId;
+ public int Count;
+ }
+ [BsonId]
+ public long Id { get; set; }
+ public int[] Day;
+ public byte Type;
+ public string Name;
+ public string Desc;
+ public string BattleMethod;
+ public string[] Params;
+ public string Condition;
+ public Reward[] RewardArr;
+ }
+}
diff --git a/Unity/Assets/Hotfix/Logic/Model/Module/Data/DataTable/ActivePerDayConfig.cs.meta b/Unity/Assets/Hotfix/Logic/Model/Module/Data/DataTable/ActivePerDayConfig.cs.meta
new file mode 100644
index 00000000..00e3e968
--- /dev/null
+++ b/Unity/Assets/Hotfix/Logic/Model/Module/Data/DataTable/ActivePerDayConfig.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 103742119dfd78f4cbb9986b8246f565
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Unity/Assets/Hotfix/Logic/Model/Module/Data/DataTable/CopyConfigId.cs b/Unity/Assets/Hotfix/Logic/Model/Module/Data/DataTable/CopyConfigId.cs
index 833d10b4..a30bd6b5 100644
--- a/Unity/Assets/Hotfix/Logic/Model/Module/Data/DataTable/CopyConfigId.cs
+++ b/Unity/Assets/Hotfix/Logic/Model/Module/Data/DataTable/CopyConfigId.cs
@@ -54,5 +54,9 @@ namespace Cal.DataTable
/// 时空旅行战斗
///
public const int SpaceTravelBattle = 10013;
+ ///
+ /// 星魂副本战斗
+ ///
+ public const int StarSoulBattle = 10014;
}
}
diff --git a/Unity/Assets/Hotfix/Logic/Model/Module/Data/DataTable/MapMonsterConfigId.cs b/Unity/Assets/Hotfix/Logic/Model/Module/Data/DataTable/MapMonsterConfigId.cs
index 1a0b8377..49f75c7b 100644
--- a/Unity/Assets/Hotfix/Logic/Model/Module/Data/DataTable/MapMonsterConfigId.cs
+++ b/Unity/Assets/Hotfix/Logic/Model/Module/Data/DataTable/MapMonsterConfigId.cs
@@ -46,5 +46,17 @@ namespace Cal.DataTable
/// 隐藏boss
///
public const int SpaceTravel6 = 1011;
+ ///
+ /// 星魂侍者
+ ///
+ public const int StarSoul1 = 1012;
+ ///
+ /// 星魂操纵者
+ ///
+ public const int StarSoul2 = 1013;
+ ///
+ /// 星魂极巫
+ ///
+ public const int StarSoul3 = 1014;
}
}
diff --git a/Unity/Assets/Hotfix/Logic/Model/Module/Data/DataTable/SonSet.cs b/Unity/Assets/Hotfix/Logic/Model/Module/Data/DataTable/SonSet.cs
index 40534aa5..70629553 100644
--- a/Unity/Assets/Hotfix/Logic/Model/Module/Data/DataTable/SonSet.cs
+++ b/Unity/Assets/Hotfix/Logic/Model/Module/Data/DataTable/SonSet.cs
@@ -22,10 +22,10 @@ namespace Cal.DataTable
public int Weight;
public int MinCount;
public int MaxCount;
+ public bool IsLock;
}
[BsonId]
public long Id { get; set; }
public Drop[] DropArr;
- public bool IsLock;
}
}
diff --git a/Unity/Assets/Hotfix/Logic/Model/Module/Data/DataTable/StarSoulAttributeConfig.cs b/Unity/Assets/Hotfix/Logic/Model/Module/Data/DataTable/StarSoulAttributeConfig.cs
index 1f2124cd..574097f4 100644
--- a/Unity/Assets/Hotfix/Logic/Model/Module/Data/DataTable/StarSoulAttributeConfig.cs
+++ b/Unity/Assets/Hotfix/Logic/Model/Module/Data/DataTable/StarSoulAttributeConfig.cs
@@ -17,11 +17,11 @@ namespace Cal.DataTable
{
[BsonId]
public long Id { get; set; }
- public int Type;
- public int Quality;
- public int Key;
+ public byte Type;
+ public byte Quality;
+ public byte Key;
[BsonRepresentation(MongoDB.Bson.BsonType.Double, AllowTruncation = true)]
public float Value;
- public int ViceWeight;
+ public byte ViceWeight;
}
}
diff --git a/Unity/Assets/Hotfix/Logic/Model/Module/Data/DataTable/StarSoulCopyConfig.cs b/Unity/Assets/Hotfix/Logic/Model/Module/Data/DataTable/StarSoulCopyConfig.cs
new file mode 100644
index 00000000..5d38718c
--- /dev/null
+++ b/Unity/Assets/Hotfix/Logic/Model/Module/Data/DataTable/StarSoulCopyConfig.cs
@@ -0,0 +1,27 @@
+using ET;
+using MongoDB.Bson.Serialization.Attributes;
+
+namespace Cal.DataTable
+{
+ [Config]
+ public partial class StarSoulCopyConfigCategory : ACategory
+ {
+ public static StarSoulCopyConfigCategory Instance;
+ public StarSoulCopyConfigCategory()
+ {
+ Instance = this;
+ }
+ }
+
+ public partial class StarSoulCopyConfig:IConfig
+ {
+ [BsonId]
+ public long Id { get; set; }
+ public byte Type;
+ public byte Difficulty;
+ public byte BossIndex;
+ public int[] MonsterIdArr;
+ public byte StarSoulCountMin;
+ public byte StarSoulCountMax;
+ }
+}
diff --git a/Unity/Assets/Hotfix/Logic/Model/Module/Data/DataTable/StarSoulCopyConfig.cs.meta b/Unity/Assets/Hotfix/Logic/Model/Module/Data/DataTable/StarSoulCopyConfig.cs.meta
new file mode 100644
index 00000000..20c50f45
--- /dev/null
+++ b/Unity/Assets/Hotfix/Logic/Model/Module/Data/DataTable/StarSoulCopyConfig.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: d9ce817d699004e48911564edadd5779
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Unity/Assets/Hotfix/Logic/Model/Module/Data/DataTable/StarSoulEquipAttributeTypeConfig.cs b/Unity/Assets/Hotfix/Logic/Model/Module/Data/DataTable/StarSoulEquipAttributeTypeConfig.cs
index 2a6b753a..69c0de07 100644
--- a/Unity/Assets/Hotfix/Logic/Model/Module/Data/DataTable/StarSoulEquipAttributeTypeConfig.cs
+++ b/Unity/Assets/Hotfix/Logic/Model/Module/Data/DataTable/StarSoulEquipAttributeTypeConfig.cs
@@ -15,8 +15,13 @@ namespace Cal.DataTable
public partial class StarSoulEquipAttributeTypeConfig:IConfig
{
+ public partial class AttributeType
+ {
+ public byte Key;
+ public byte Prob;
+ }
[BsonId]
public long Id { get; set; }
- public int[] AttributeTypeArr;
+ public AttributeType[] AttributeTypeArr;
}
}
diff --git a/Unity/Assets/Hotfix/Logic/Model/Module/Data/DataTable/StarSoulTypeConfig.cs b/Unity/Assets/Hotfix/Logic/Model/Module/Data/DataTable/StarSoulTypeConfig.cs
index 1930a0f4..89e266ab 100644
--- a/Unity/Assets/Hotfix/Logic/Model/Module/Data/DataTable/StarSoulTypeConfig.cs
+++ b/Unity/Assets/Hotfix/Logic/Model/Module/Data/DataTable/StarSoulTypeConfig.cs
@@ -19,5 +19,14 @@ namespace Cal.DataTable
public long Id { get; set; }
public string Name;
public string Icon;
+ public byte CopyType;
+ public byte Suit4Key;
+ [BsonRepresentation(MongoDB.Bson.BsonType.Double, AllowTruncation = true)]
+ public float Suit4Value;
+ public string Suit4;
+ public byte Suit8Key;
+ [BsonRepresentation(MongoDB.Bson.BsonType.Double, AllowTruncation = true)]
+ public float Suit8Value;
+ public string Suit8;
}
}
diff --git a/Unity/Assets/Hotfix/Logic/Model/Module/Data/DataTable/Sys_SceneId.cs b/Unity/Assets/Hotfix/Logic/Model/Module/Data/DataTable/Sys_SceneId.cs
index 6a0f41d3..a040c682 100644
--- a/Unity/Assets/Hotfix/Logic/Model/Module/Data/DataTable/Sys_SceneId.cs
+++ b/Unity/Assets/Hotfix/Logic/Model/Module/Data/DataTable/Sys_SceneId.cs
@@ -178,5 +178,25 @@ namespace Cal.DataTable
/// 时空旅行6
///
public const int Scene_SpaceTravel6 = 10044;
+ ///
+ /// A星魂副本
+ ///
+ public const int Scene_StarSoulCopyA = 10045;
+ ///
+ /// B星魂副本
+ ///
+ public const int Scene_StarSoulCopyB = 10046;
+ ///
+ /// C星魂副本
+ ///
+ public const int Scene_StarSoulCopyC = 10047;
+ ///
+ /// D星魂副本
+ ///
+ public const int Scene_StarSoulCopyD = 10048;
+ ///
+ /// E星魂副本
+ ///
+ public const int Scene_StarSoulCopyE = 10049;
}
}
diff --git a/Unity/Assets/HotfixView/Entity/HudCharacter.cs b/Unity/Assets/HotfixView/Entity/HudCharacter.cs
index 0de6c8e6..17741660 100644
--- a/Unity/Assets/HotfixView/Entity/HudCharacter.cs
+++ b/Unity/Assets/HotfixView/Entity/HudCharacter.cs
@@ -107,13 +107,8 @@ namespace ET
color = Color.blue;
HideHpBar();
break;
- case UnitType.MainStoryMonster:
- case UnitType.TrialCopyMonster:
- case UnitType.ManulEquipMonster:
+ case UnitType.Monster:
case UnitType.Enermy:
- case UnitType.BossMonster:
- case UnitType.FamilyBossMonster:
- case UnitType.SpaceTravelMonster:
color = Color.red;
ShowHpBar(unit);
break;
diff --git a/Unity/Assets/HotfixView/Event/ChangeMapEvent.cs b/Unity/Assets/HotfixView/Event/ChangeMapEvent.cs
index 1a9ed1cd..fe977e72 100644
--- a/Unity/Assets/HotfixView/Event/ChangeMapEvent.cs
+++ b/Unity/Assets/HotfixView/Event/ChangeMapEvent.cs
@@ -66,14 +66,7 @@ namespace ET
ClientUnitCharacter clientUnitCharacter = ClientUnitCharacterComponent.Instance.Get(u.Id);
MainUI.AddUnit(clientUnitCharacter.Id, clientUnitCharacter.Job, clientUnitCharacter.NickName);
break;
- case UnitType.MainStoryMonster:
- break;
- case UnitType.TrialCopyMonster:
- break;
- case UnitType.ManulEquipMonster:
- break;
- case UnitType.BossMonster:
- break;
+ case UnitType.Monster:
case UnitType.Enermy:
break;
case UnitType.NPC:
@@ -88,7 +81,6 @@ namespace ET
case UnitType.SceneUnit:
MainUI.AddUnit(u.Id, "交互", "");
break;
- case UnitType.FamilyBossMonster:
break;
default:
break;
diff --git a/Unity/Assets/HotfixView/Event/UI/RefreshStarSoulBagUIEvent.cs b/Unity/Assets/HotfixView/Event/UI/RefreshStarSoulBagUIEvent.cs
index 66051019..105b17fa 100644
--- a/Unity/Assets/HotfixView/Event/UI/RefreshStarSoulBagUIEvent.cs
+++ b/Unity/Assets/HotfixView/Event/UI/RefreshStarSoulBagUIEvent.cs
@@ -9,7 +9,7 @@ namespace ET
await ETTask.CompletedTask;
if (FUIComponent.Instance.Get(FUIPackage.Bag_StarSoulBagUI) is FUI_StarSoulBagUI ui )
{
- ui.GetComponent().ReFresh();
+ ui.GetComponent()?.ReFresh();
}
}
}
diff --git a/Unity/Assets/HotfixView/Helper/FUIHelper.cs b/Unity/Assets/HotfixView/Helper/FUIHelper.cs
index 53d2ecb4..bbcf1b37 100644
--- a/Unity/Assets/HotfixView/Helper/FUIHelper.cs
+++ b/Unity/Assets/HotfixView/Helper/FUIHelper.cs
@@ -130,6 +130,10 @@ namespace ET
}
}
+ public static void HideWindow(this FUI self)
+ {
+ self.GetComponent()?.Hide();
+ }
public static async ETTask Open(Scene scene, string uiType, WindowPos windowPos, Action effcetAction = null) where T : FUI
{
FUI fui = await Create(scene, uiType);
diff --git a/Unity/Assets/HotfixView/Helper/TabHelper.cs b/Unity/Assets/HotfixView/Helper/TabHelper.cs
index 0fa9f880..6ac1b3aa 100644
--- a/Unity/Assets/HotfixView/Helper/TabHelper.cs
+++ b/Unity/Assets/HotfixView/Helper/TabHelper.cs
@@ -129,7 +129,8 @@ namespace ET
public static void SetTab(GObject btn, EventCallback0 _action, bool isVisal = false)
{
#if UNITY_STANDALONE
- btn.onRollOver.Set(()=>OnRollOver(_action).Coroutine());
+ btn.data = _action;
+ btn.onRollOver.Set1(OnRollOver);
btn.onRollOut.Set(TabHelper.HideUI);
#else
if(isVisal)
@@ -139,12 +140,12 @@ namespace ET
#endif
}
- private static async ETVoid OnRollOver(EventCallback0 _action)
+ private static async void OnRollOver(EventContext context)
{
- action = _action;
+ action = context.sender.As().data as EventCallback0;
token?.Cancel();
token = new ETCancellationToken();
- bool ret = await TimerComponent.Instance.WaitAsync(400, token);
+ bool ret = await TimerComponent.Instance.WaitAsync(350, token);
if (ret)
action?.Invoke();
}
@@ -156,6 +157,7 @@ namespace ET
ClientItemData wornEquipData = null;
sb.Length = 0;
itemDescList.Clear();
+ string starSoulString = null;
switch (data.ItemType)
{
default:
@@ -257,33 +259,13 @@ namespace ET
}
}
- if (data.Equip.starSoulId != 0)
+ StarSoulBag bag = FUI_TabUI.ZoneScene().GetComponent();
+ long starSoulId = bag.usedStarSoulDic[(byte) index];
+ if (starSoulId != 0)
{
sb.AppendLine("[size=3] [/size]");
sb.AppendLine("----星魂----");
- StarSoulBag bag = FUI_TabUI.ZoneScene().GetComponent();
- StarSoulItem starSoulItem = bag.Get(data.Equip.starSoulId);
- StarSoulTypeConfig starSoulTypeConfig = StarSoulTypeConfigCategory.Instance.Get(starSoulItem.typeId);
- sb.AppendLine(
- $"[color={GetQualityColor(starSoulItem.quality)}][size={TitleSize}][b]{starSoulTypeConfig.Name} +{starSoulItem.level}[/b][/size][/color]");
-
- StarSoulAttributeConfig soulAttributeConfig = StarSoulAttributeConfigCategory.Instance.Get(starSoulItem.mainAttribute);
- sb.AppendLine("[size=3] [/size]");
- sb.AppendLine("固定属性:");
- sb.AppendLine(
- $"[color=#99bf88]{GetAttributeString((Cal.AttributeType) soulAttributeConfig.Key, soulAttributeConfig.Value)}[/color]");
-
- sb.AppendLine("[size=3] [/size]");
- sb.AppendLine("随机属性:");
- for (var i = 0; i < starSoulItem.viceAttribute.Length; i++)
- {
- int __id = starSoulItem.viceAttribute[i];
- if (__id == 0)
- break;
- soulAttributeConfig = StarSoulAttributeConfigCategory.Instance.Get(__id);
- sb.AppendLine(
- $"[color=#99bf88]{GetAttributeString((Cal.AttributeType) soulAttributeConfig.Key, ItemHelper.GetRealViceValue(soulAttributeConfig.Value * (1 + starSoulItem.viceAdd[i]), starSoulItem.quality))}[/color]");
- }
+ starSoulString = GenerateStarSoulString(sb, bag, starSoulId, needReturn: true);
}
sb.AppendFormat($"[color=#ffff99]{equipBase.Description}[/color]");
@@ -401,33 +383,11 @@ namespace ET
sb.AppendLine($"来源:[color=#ffff00][i]{wornEquipData.getSource}[/i][/color]");
}
- if (wornEquipData.Equip.starSoulId != 0)
+ if (starSoulString != null)
{
sb.AppendLine("[size=3] [/size]");
sb.AppendLine("----星魂----");
- StarSoulBag bag = FUI_TabUI.ZoneScene().GetComponent();
- StarSoulItem starSoulItem = bag.Get(wornEquipData.Equip.starSoulId);
- StarSoulTypeConfig starSoulTypeConfig = StarSoulTypeConfigCategory.Instance.Get(starSoulItem.typeId);
- sb.AppendLine(
- $"[color={GetQualityColor(starSoulItem.quality)}][size={TitleSize}][b]{starSoulTypeConfig.Name} +{starSoulItem.level}[/b][/size][/color]");
-
- StarSoulAttributeConfig soulAttributeConfig = StarSoulAttributeConfigCategory.Instance.Get(starSoulItem.mainAttribute);
- sb.AppendLine("[size=3] [/size]");
- sb.AppendLine("固定属性:");
- sb.AppendLine(
- $"[color=#99bf88]{GetAttributeString((Cal.AttributeType) soulAttributeConfig.Key, soulAttributeConfig.Value)}[/color]");
-
- sb.AppendLine("[size=3] [/size]");
- sb.AppendLine("随机属性:");
- for (var i = 0; i < starSoulItem.viceAttribute.Length; i++)
- {
- int __id = starSoulItem.viceAttribute[i];
- if (__id == 0)
- break;
- soulAttributeConfig = StarSoulAttributeConfigCategory.Instance.Get(__id);
- sb.AppendLine(
- $"[color=#99bf88]{GetAttributeString((Cal.AttributeType) soulAttributeConfig.Key, ItemHelper.GetRealViceValue(soulAttributeConfig.Value * (1 + starSoulItem.viceAdd[i]), starSoulItem.quality))}[/color]");
- }
+ sb.Append(starSoulString);
}
sb.AppendFormat($"[color=#ffff99]{equipBase.Description}[/color]");
@@ -436,7 +396,67 @@ namespace ET
}
}
- static Vector2 GetComprasionPos(GObject gObject, Vector2 oldPos)
+ private static string GenerateStarSoulString(StringBuilder sb, StarSoulBag bag, long equipStarSoulId, bool showPosType = false,
+ bool needReturn = false)
+ {
+ if (equipStarSoulId == 0)
+ return string.Empty;
+ StarSoulItem starSoulItem = bag.Get(equipStarSoulId);
+ return GenerateStarSoulString(sb, bag, starSoulItem, showPosType, needReturn);
+ }
+
+ public static string GenerateStarSoulString(StringBuilder sb, StarSoulBag bag, StarSoulItem starSoulItem, bool showPosType = false,
+ bool needReturn = false)
+ {
+ int startIndex = sb.Length;
+ StarSoulTypeConfig starSoulTypeConfig = StarSoulTypeConfigCategory.Instance.Get(starSoulItem.typeId);
+ sb.AppendLine(
+ $"[color={GetQualityColor(starSoulItem.quality)}][size={TitleSize}][b]{starSoulTypeConfig.Name} +{starSoulItem.level}[/b][/size][/color]");
+
+ if (showPosType)
+ {
+ sb.AppendLine($"可放置位置:{starSoulItem.posType}");
+ }
+
+ StarSoulAttributeConfig soulAttributeConfig = StarSoulAttributeConfigCategory.Instance.Get(starSoulItem.mainAttribute);
+ sb.AppendLine("[size=3] [/size]");
+ sb.AppendLine("固定属性:");
+ sb.AppendLine(
+ $"[color=#99bf88]{GetAttributeString((Cal.AttributeType) soulAttributeConfig.Key, ItemHelper.GetRealMainValue(soulAttributeConfig.Value, starSoulItem.level))}[/color]");
+
+ sb.AppendLine("[size=3] [/size]");
+ sb.AppendLine("随机属性:");
+ for (var i = 0; i < starSoulItem.viceAttribute.Length; i++)
+ {
+ int __id = starSoulItem.viceAttribute[i];
+ if (__id == 0)
+ break;
+ soulAttributeConfig = StarSoulAttributeConfigCategory.Instance.Get(__id);
+ sb.AppendLine(
+ $"[color=#99bf88]{GetAttributeString((Cal.AttributeType) soulAttributeConfig.Key, ItemHelper.GetRealViceValue(soulAttributeConfig.Value * (1 + starSoulItem.viceAdd[i]), starSoulItem.quality))}[/color]");
+ }
+
+ sb.AppendLine("[size=3] [/size]");
+ sb.AppendLine("套装属性:");
+ StarSoulSuit suit = bag.Suits.Find(t => t.Id == starSoulItem.typeId);
+ string color = "#999999";
+ if (suit!=null&&suit.type.HasFlag(StarSoulSuit.StarSoulSuitType.Suit4))
+ color = "#ccee00";
+ sb.AppendLine($"[color={color}]4件套:\n {starSoulTypeConfig.Suit4}[/color]");
+ color = "#999999";
+ if (suit!=null&&suit.type.HasFlag(StarSoulSuit.StarSoulSuitType.Suit8))
+ color = "#cc9900";
+ if (!starSoulTypeConfig.Suit8.IsNullOrEmpty())
+ {
+ sb.AppendLine($"[color={color}]8件套:\n {starSoulTypeConfig.Suit8}[/color]");
+ }
+
+ if (needReturn)
+ return sb.ToString(startIndex, sb.Length - startIndex);
+ return null;
+ }
+
+ static Vector2 GetComprasionPos(GObject gObject, Vector2 oldPos)
{
Vector2 tempPos = oldPos + new Vector2(-gObject.width, 0);
@@ -956,32 +976,11 @@ namespace ET
public static void OpenStarSoulUI(StarSoulBag bag, long id)
{
sb.Length = 0;
+ GenerateStarSoulString(sb, bag, id, true);
StarSoulItem data = bag.Get(id);
- StarSoulTypeConfig starSoulTypeConfig = StarSoulTypeConfigCategory.Instance.Get(data.typeId);
- sb.AppendLine($"[color={GetQualityColor(data.quality)}][size={TitleSize}][b]{starSoulTypeConfig.Name} +{data.level}[/b][/size][/color]");
sb.AppendLine("[size=3] [/size]");
- sb.AppendLine($"可放置类型:{data.posType}");
-
- StarSoulAttributeConfig soulAttributeConfig = StarSoulAttributeConfigCategory.Instance.Get(data.mainAttribute);
- sb.AppendLine("[size=3] [/size]");
- sb.AppendLine("固定属性:");
- sb.AppendLine($"[color=#99bf88]{GetAttributeString((Cal.AttributeType) soulAttributeConfig.Key, soulAttributeConfig.Value)}[/color]");
-
- sb.AppendLine("[size=3] [/size]");
- sb.AppendLine("随机属性:");
- for (var i = 0; i < data.viceAttribute.Length; i++)
- {
- int __id = data.viceAttribute[i];
- if (__id == 0)
- break;
- soulAttributeConfig = StarSoulAttributeConfigCategory.Instance.Get(__id);
- sb.AppendLine(
- $"[color=#99bf88]{GetAttributeString((Cal.AttributeType) soulAttributeConfig.Key, ItemHelper.GetRealViceValue(soulAttributeConfig.Value * (1 + data.viceAdd[i]), data.quality))}[/color]");
- }
-
- sb.AppendLine("[size=3] [/size]");
- sb.Append("[color=#ffff99]星魂可以通过消耗其他星魂进行升级,每升级4级产生或者强化某一个随机属性[/color]");
+ sb.Append("[color=#ffff99]星魂可以通过消耗其他星魂进行升级,升级会提升固定属性;每升级4级产生或者强化某一个随机属性[/color]");
FUI_TabUI ui = OpenUI();
ui.m_title.text = sb.ToString();
Vector2 pos = GRoot.inst.GetPoupPosition(ui.self, null, null);
@@ -993,44 +992,19 @@ namespace ET
{
return;
}
- EquipType equipType = data.posType;
- if (!ClientItemDataComponent.Instance.WornEquipDic.TryGetValue((int) equipType, out var wornEquipData))
- {
- return;
- }
- if (wornEquipData.Equip.starSoulId == 0)
+ EquipType equipType = data.posType;
+ long usedId = bag.usedStarSoulDic[(byte) equipType];
+ if (usedId == 0)
return;
FUI_TabUI comUI = OpenComprasionUI();
Vector2 newPos = GetComprasionPos(comUI.self, pos);
comUI.self.position = newPos;
sb.Length = 0;
- StarSoulItem equipData = bag.Get(wornEquipData.Equip.starSoulId);
- starSoulTypeConfig = StarSoulTypeConfigCategory.Instance.Get(equipData.typeId);
- sb.AppendLine($"[color={GetQualityColor(equipData.quality)}][size={TitleSize}][b]{starSoulTypeConfig.Name} +{equipData.level}[/b][/size][/color]");
+ GenerateStarSoulString(sb, bag, usedId);
sb.AppendLine("[size=3] [/size]");
- sb.AppendLine($"可放置类型:{equipData.posType}");
-
- soulAttributeConfig = StarSoulAttributeConfigCategory.Instance.Get(equipData.mainAttribute);
- sb.AppendLine("[size=3] [/size]");
- sb.AppendLine("固定属性:");
- sb.AppendLine($"[color=#99bf88]{GetAttributeString((Cal.AttributeType) soulAttributeConfig.Key, soulAttributeConfig.Value)}[/color]");
-
- sb.AppendLine("[size=3] [/size]");
- sb.AppendLine("随机属性:");
- for (var i = 0; i < equipData.viceAttribute.Length; i++)
- {
- int __id = equipData.viceAttribute[i];
- if (__id == 0)
- break;
- soulAttributeConfig = StarSoulAttributeConfigCategory.Instance.Get(__id);
- sb.AppendLine(
- $"[color=#99bf88]{GetAttributeString((Cal.AttributeType) soulAttributeConfig.Key, ItemHelper.GetRealViceValue(soulAttributeConfig.Value * (1 + equipData.viceAdd[i]), equipData.quality))}[/color]");
- }
-
- sb.AppendLine("[size=3] [/size]");
- sb.Append("[color=#ffff99]星魂可以通过消耗其他星魂进行升级,每升级4级产生或者强化某一个随机属性[/color]");
+ sb.Append("[color=#ffff99]星魂可以通过消耗其他星魂进行升级,升级会提升固定属性;每升级4级产生或者强化某一个随机属性[/color]");
comUI.m_title.text = sb.ToString();
}
diff --git a/Unity/Assets/HotfixView/Model/FGUI/AutoCode/Bag/FUI_ButtonStarSoulSlot.cs b/Unity/Assets/HotfixView/Model/FGUI/AutoCode/Bag/FUI_ButtonStarSoulSlot.cs
index 1afb52b3..8056d854 100644
--- a/Unity/Assets/HotfixView/Model/FGUI/AutoCode/Bag/FUI_ButtonStarSoulSlot.cs
+++ b/Unity/Assets/HotfixView/Model/FGUI/AutoCode/Bag/FUI_ButtonStarSoulSlot.cs
@@ -30,6 +30,7 @@ namespace ET
public GTextField m_txtLevel;
public GTextField m_txtUsed;
public GRichTextField m_txtStar;
+ public FUI_ButtonSingle m_btnLock;
public const string URL = "ui://71ktouo7m7kbtne";
private static GObject CreateGObject()
@@ -106,9 +107,10 @@ namespace ET
m_bg = (GImage)com.GetChildAt(0);
m_img = (GImage)com.GetChildAt(1);
- m_txtLevel = (GTextField)com.GetChildAt(6);
- m_txtUsed = (GTextField)com.GetChildAt(7);
- m_txtStar = (GRichTextField)com.GetChildAt(8);
+ m_txtLevel = (GTextField)com.GetChildAt(5);
+ m_txtUsed = (GTextField)com.GetChildAt(6);
+ m_txtStar = (GRichTextField)com.GetChildAt(7);
+ m_btnLock = FUI_ButtonSingle.Create(domain,com.GetChildAt(8));
}
}
public override void Dispose()
@@ -128,6 +130,7 @@ public override void Dispose()
m_txtLevel = null;
m_txtUsed = null;
m_txtStar = null;
+ m_btnLock = null;
}
}
}
\ No newline at end of file
diff --git a/Unity/Assets/HotfixView/Model/FGUI/AutoCode/Bag/FUI_StarSoulBagUI.cs b/Unity/Assets/HotfixView/Model/FGUI/AutoCode/Bag/FUI_StarSoulBagUI.cs
index c78810de..fe5491a2 100644
--- a/Unity/Assets/HotfixView/Model/FGUI/AutoCode/Bag/FUI_StarSoulBagUI.cs
+++ b/Unity/Assets/HotfixView/Model/FGUI/AutoCode/Bag/FUI_StarSoulBagUI.cs
@@ -25,10 +25,14 @@ namespace ET
///
public GComponent self;
+ public Controller m_quality;
+ public Controller m_sortType;
public FUI_FrameBag m_frame;
public GList m_slotList;
public GTextField m_txtCapity;
public GGroup m_gorup;
+ public FUI_ButtonSingle m_btnType;
+ public FUI_ButtonSingle m_btnPosType;
public Transition m_Effect;
public const string URL = "ui://71ktouo7f0oatmn";
@@ -104,10 +108,14 @@ namespace ET
if(com != null)
{
+ m_quality = com.GetControllerAt(0);
+ m_sortType = com.GetControllerAt(1);
m_frame = FUI_FrameBag.Create(domain,com.GetChildAt(0));
m_slotList = (GList)com.GetChildAt(1);
m_txtCapity = (GTextField)com.GetChildAt(2);
m_gorup = (GGroup)com.GetChildAt(3);
+ m_btnType = FUI_ButtonSingle.Create(domain,com.GetChildAt(4));
+ m_btnPosType = FUI_ButtonSingle.Create(domain,com.GetChildAt(6));
m_Effect = com.GetTransitionAt(0);
}
}
@@ -123,11 +131,15 @@ public override void Dispose()
self.Remove();
self = null;
+ m_quality = null;
+ m_sortType = null;
m_frame.Dispose();
m_frame = null;
m_slotList = null;
m_txtCapity = null;
m_gorup = null;
+ m_btnType = null;
+ m_btnPosType = null;
m_Effect = null;
}
}
diff --git a/Unity/Assets/HotfixView/Model/FGUI/AutoCode/Bag/FUI_UpgradeUI.cs b/Unity/Assets/HotfixView/Model/FGUI/AutoCode/Bag/FUI_UpgradeUI.cs
index 4085f38c..f6ef0af0 100644
--- a/Unity/Assets/HotfixView/Model/FGUI/AutoCode/Bag/FUI_UpgradeUI.cs
+++ b/Unity/Assets/HotfixView/Model/FGUI/AutoCode/Bag/FUI_UpgradeUI.cs
@@ -31,6 +31,7 @@ namespace ET
public FUI_ButtonText_Blue m_btnUpgrade;
public FUI_ButtonText_Blue m_btnTree;
public GTextField m_txtMaterial;
+ public FUI_ButtonSingle m_btnLock;
public Transition m_Effect;
public const string URL = "ui://71ktouo7il72ki";
@@ -112,6 +113,7 @@ namespace ET
m_btnUpgrade = FUI_ButtonText_Blue.Create(domain,com.GetChildAt(8));
m_btnTree = FUI_ButtonText_Blue.Create(domain,com.GetChildAt(9));
m_txtMaterial = (GTextField)com.GetChildAt(10);
+ m_btnLock = FUI_ButtonSingle.Create(domain,com.GetChildAt(13));
m_Effect = com.GetTransitionAt(0);
}
}
@@ -134,6 +136,7 @@ public override void Dispose()
m_btnUpgrade = null;
m_btnTree = null;
m_txtMaterial = null;
+ m_btnLock = null;
m_Effect = null;
}
}
diff --git a/Unity/Assets/HotfixView/Model/FGUI/AutoCode/Common/FUI_ButtonBuff.cs b/Unity/Assets/HotfixView/Model/FGUI/AutoCode/Common/FUI_ButtonBuff.cs
index 4b4a6adf..8ca136fc 100644
--- a/Unity/Assets/HotfixView/Model/FGUI/AutoCode/Common/FUI_ButtonBuff.cs
+++ b/Unity/Assets/HotfixView/Model/FGUI/AutoCode/Common/FUI_ButtonBuff.cs
@@ -65,7 +65,7 @@ namespace ET
///
public static FUI_ButtonBuff GetFormPool(Entity domain,GObject go)
{
- FUI_ButtonBuff fui = go.Get();
+ var fui = go.Get();
if(fui == null)
{
@@ -95,7 +95,7 @@ namespace ET
self.Add(this);
- GComponent com = go.asCom;
+ var com = go.asCom;
if(com != null)
{
diff --git a/Unity/Assets/HotfixView/Model/FGUI/AutoCode/Common/FUI_ButtonChatCenter.cs b/Unity/Assets/HotfixView/Model/FGUI/AutoCode/Common/FUI_ButtonChatCenter.cs
index 8e3fc0f4..116cacfb 100644
--- a/Unity/Assets/HotfixView/Model/FGUI/AutoCode/Common/FUI_ButtonChatCenter.cs
+++ b/Unity/Assets/HotfixView/Model/FGUI/AutoCode/Common/FUI_ButtonChatCenter.cs
@@ -65,7 +65,7 @@ namespace ET
///
public static FUI_ButtonChatCenter GetFormPool(Entity domain,GObject go)
{
- FUI_ButtonChatCenter fui = go.Get();
+ var fui = go.Get();
if(fui == null)
{
@@ -95,7 +95,7 @@ namespace ET
self.Add(this);
- GComponent com = go.asCom;
+ var com = go.asCom;
if(com != null)
{
diff --git a/Unity/Assets/HotfixView/Model/FGUI/AutoCode/Common/FUI_ButtonChatLeft.cs b/Unity/Assets/HotfixView/Model/FGUI/AutoCode/Common/FUI_ButtonChatLeft.cs
index a5a3e843..fad2adb2 100644
--- a/Unity/Assets/HotfixView/Model/FGUI/AutoCode/Common/FUI_ButtonChatLeft.cs
+++ b/Unity/Assets/HotfixView/Model/FGUI/AutoCode/Common/FUI_ButtonChatLeft.cs
@@ -66,7 +66,7 @@ namespace ET
///
public static FUI_ButtonChatLeft GetFormPool(Entity domain,GObject go)
{
- FUI_ButtonChatLeft fui = go.Get();
+ var fui = go.Get();
if(fui == null)
{
@@ -96,7 +96,7 @@ namespace ET
self.Add(this);
- GComponent com = go.asCom;
+ var com = go.asCom;
if(com != null)
{
diff --git a/Unity/Assets/HotfixView/Model/FGUI/AutoCode/Common/FUI_ButtonChatRight.cs b/Unity/Assets/HotfixView/Model/FGUI/AutoCode/Common/FUI_ButtonChatRight.cs
index 643817bb..261df37e 100644
--- a/Unity/Assets/HotfixView/Model/FGUI/AutoCode/Common/FUI_ButtonChatRight.cs
+++ b/Unity/Assets/HotfixView/Model/FGUI/AutoCode/Common/FUI_ButtonChatRight.cs
@@ -65,7 +65,7 @@ namespace ET
///
public static FUI_ButtonChatRight GetFormPool(Entity domain,GObject go)
{
- FUI_ButtonChatRight fui = go.Get();
+ var fui = go.Get();
if(fui == null)
{
@@ -95,7 +95,7 @@ namespace ET
self.Add(this);
- GComponent com = go.asCom;
+ var com = go.asCom;
if(com != null)
{
diff --git a/Unity/Assets/HotfixView/Model/FGUI/AutoCode/Common/FUI_ButtonClose.cs b/Unity/Assets/HotfixView/Model/FGUI/AutoCode/Common/FUI_ButtonClose.cs
index 9fc2cdcd..a6a59806 100644
--- a/Unity/Assets/HotfixView/Model/FGUI/AutoCode/Common/FUI_ButtonClose.cs
+++ b/Unity/Assets/HotfixView/Model/FGUI/AutoCode/Common/FUI_ButtonClose.cs
@@ -65,7 +65,7 @@ namespace ET
///
public static FUI_ButtonClose GetFormPool(Entity domain,GObject go)
{
- FUI_ButtonClose fui = go.Get();
+ var fui = go.Get();
if(fui == null)
{
@@ -95,7 +95,7 @@ namespace ET
self.Add(this);
- GComponent com = go.asCom;
+ var com = go.asCom;
if(com != null)
{
diff --git a/Unity/Assets/HotfixView/Model/FGUI/AutoCode/Common/FUI_ButtonClose_Blue.cs b/Unity/Assets/HotfixView/Model/FGUI/AutoCode/Common/FUI_ButtonClose_Blue.cs
index b4f86b7b..17789660 100644
--- a/Unity/Assets/HotfixView/Model/FGUI/AutoCode/Common/FUI_ButtonClose_Blue.cs
+++ b/Unity/Assets/HotfixView/Model/FGUI/AutoCode/Common/FUI_ButtonClose_Blue.cs
@@ -65,7 +65,7 @@ namespace ET
///
public static FUI_ButtonClose_Blue GetFormPool(Entity domain,GObject go)
{
- FUI_ButtonClose_Blue fui = go.Get();
+ var fui = go.Get();
if(fui == null)
{
@@ -95,7 +95,7 @@ namespace ET
self.Add(this);
- GComponent com = go.asCom;
+ var com = go.asCom;
if(com != null)
{
diff --git a/Unity/Assets/HotfixView/Model/FGUI/AutoCode/Common/FUI_ButtonClose_ToonBlue.cs b/Unity/Assets/HotfixView/Model/FGUI/AutoCode/Common/FUI_ButtonClose_ToonBlue.cs
index ae3da023..0ec15a73 100644
--- a/Unity/Assets/HotfixView/Model/FGUI/AutoCode/Common/FUI_ButtonClose_ToonBlue.cs
+++ b/Unity/Assets/HotfixView/Model/FGUI/AutoCode/Common/FUI_ButtonClose_ToonBlue.cs
@@ -65,7 +65,7 @@ namespace ET
///
public static FUI_ButtonClose_ToonBlue GetFormPool(Entity domain,GObject go)
{
- FUI_ButtonClose_ToonBlue fui = go.Get();
+ var fui = go.Get();
if(fui == null)
{
@@ -95,7 +95,7 @@ namespace ET
self.Add(this);
- GComponent com = go.asCom;
+ var com = go.asCom;
if(com != null)
{
diff --git a/Unity/Assets/HotfixView/Model/FGUI/AutoCode/Common/FUI_ButtonClose_Yellow.cs b/Unity/Assets/HotfixView/Model/FGUI/AutoCode/Common/FUI_ButtonClose_Yellow.cs
index 8a33d12f..6cb45151 100644
--- a/Unity/Assets/HotfixView/Model/FGUI/AutoCode/Common/FUI_ButtonClose_Yellow.cs
+++ b/Unity/Assets/HotfixView/Model/FGUI/AutoCode/Common/FUI_ButtonClose_Yellow.cs
@@ -65,7 +65,7 @@ namespace ET
///
public static FUI_ButtonClose_Yellow GetFormPool(Entity domain,GObject go)
{
- FUI_ButtonClose_Yellow fui = go.Get();
+ var fui = go.Get();
if(fui == null)
{
@@ -95,7 +95,7 @@ namespace ET
self.Add(this);
- GComponent com = go.asCom;
+ var com = go.asCom;
if(com != null)
{
diff --git a/Unity/Assets/HotfixView/Model/FGUI/AutoCode/Common/FUI_ButtonCycle.cs b/Unity/Assets/HotfixView/Model/FGUI/AutoCode/Common/FUI_ButtonCycle.cs
index 3218f594..08768734 100644
--- a/Unity/Assets/HotfixView/Model/FGUI/AutoCode/Common/FUI_ButtonCycle.cs
+++ b/Unity/Assets/HotfixView/Model/FGUI/AutoCode/Common/FUI_ButtonCycle.cs
@@ -65,7 +65,7 @@ namespace ET
///
public static FUI_ButtonCycle GetFormPool(Entity domain,GObject go)
{
- FUI_ButtonCycle fui = go.Get();
+ var fui = go.Get();
if(fui == null)
{
@@ -95,7 +95,7 @@ namespace ET
self.Add(this);
- GComponent com = go.asCom;
+ var com = go.asCom;
if(com != null)
{
diff --git a/Unity/Assets/HotfixView/Model/FGUI/AutoCode/Common/FUI_ButtonHelp.cs b/Unity/Assets/HotfixView/Model/FGUI/AutoCode/Common/FUI_ButtonHelp.cs
index 101e9318..4f776b3a 100644
--- a/Unity/Assets/HotfixView/Model/FGUI/AutoCode/Common/FUI_ButtonHelp.cs
+++ b/Unity/Assets/HotfixView/Model/FGUI/AutoCode/Common/FUI_ButtonHelp.cs
@@ -65,7 +65,7 @@ namespace ET
///
public static FUI_ButtonHelp GetFormPool(Entity domain,GObject go)
{
- FUI_ButtonHelp fui = go.Get();
+ var fui = go.Get();
if(fui == null)
{
@@ -95,7 +95,7 @@ namespace ET
self.Add(this);
- GComponent com = go.asCom;
+ var com = go.asCom;
if(com != null)
{
diff --git a/Unity/Assets/HotfixView/Model/FGUI/AutoCode/Common/FUI_ButtonLastPage.cs b/Unity/Assets/HotfixView/Model/FGUI/AutoCode/Common/FUI_ButtonLastPage.cs
index 24e3bdf8..b998e2b8 100644
--- a/Unity/Assets/HotfixView/Model/FGUI/AutoCode/Common/FUI_ButtonLastPage.cs
+++ b/Unity/Assets/HotfixView/Model/FGUI/AutoCode/Common/FUI_ButtonLastPage.cs
@@ -65,7 +65,7 @@ namespace ET
///
public static FUI_ButtonLastPage GetFormPool(Entity domain,GObject go)
{
- FUI_ButtonLastPage fui = go.Get();
+ var fui = go.Get();
if(fui == null)
{
@@ -95,7 +95,7 @@ namespace ET
self.Add(this);
- GComponent com = go.asCom;
+ var com = go.asCom;
if(com != null)
{
diff --git a/Unity/Assets/HotfixView/Model/FGUI/AutoCode/Common/FUI_ButtonLastPageNew1.cs b/Unity/Assets/HotfixView/Model/FGUI/AutoCode/Common/FUI_ButtonLastPageNew1.cs
index 53a9e127..d4f53e6f 100644
--- a/Unity/Assets/HotfixView/Model/FGUI/AutoCode/Common/FUI_ButtonLastPageNew1.cs
+++ b/Unity/Assets/HotfixView/Model/FGUI/AutoCode/Common/FUI_ButtonLastPageNew1.cs
@@ -65,7 +65,7 @@ namespace ET
///
public static FUI_ButtonLastPageNew1 GetFormPool(Entity domain,GObject go)
{
- FUI_ButtonLastPageNew1 fui = go.Get();
+ var fui = go.Get();
if(fui == null)
{
@@ -95,7 +95,7 @@ namespace ET
self.Add(this);
- GComponent com = go.asCom;
+ var com = go.asCom;
if(com != null)
{
diff --git a/Unity/Assets/HotfixView/Model/FGUI/AutoCode/Common/FUI_ButtonMianUISlot.cs b/Unity/Assets/HotfixView/Model/FGUI/AutoCode/Common/FUI_ButtonMianUISlot.cs
index cd58cfc8..92c964c7 100644
--- a/Unity/Assets/HotfixView/Model/FGUI/AutoCode/Common/FUI_ButtonMianUISlot.cs
+++ b/Unity/Assets/HotfixView/Model/FGUI/AutoCode/Common/FUI_ButtonMianUISlot.cs
@@ -66,7 +66,7 @@ namespace ET
///
public static FUI_ButtonMianUISlot GetFormPool(Entity domain,GObject go)
{
- FUI_ButtonMianUISlot fui = go.Get();
+ var fui = go.Get();
if(fui == null)
{
@@ -96,7 +96,7 @@ namespace ET
self.Add(this);
- GComponent com = go.asCom;
+ var com = go.asCom;
if(com != null)
{
diff --git a/Unity/Assets/HotfixView/Model/FGUI/AutoCode/Common/FUI_ButtonMinus.cs b/Unity/Assets/HotfixView/Model/FGUI/AutoCode/Common/FUI_ButtonMinus.cs
index 615503f5..71206949 100644
--- a/Unity/Assets/HotfixView/Model/FGUI/AutoCode/Common/FUI_ButtonMinus.cs
+++ b/Unity/Assets/HotfixView/Model/FGUI/AutoCode/Common/FUI_ButtonMinus.cs
@@ -65,7 +65,7 @@ namespace ET
///
public static FUI_ButtonMinus GetFormPool(Entity domain,GObject go)
{
- FUI_ButtonMinus fui = go.Get();
+ var fui = go.Get();
if(fui == null)
{
@@ -95,7 +95,7 @@ namespace ET
self.Add(this);
- GComponent com = go.asCom;
+ var com = go.asCom;
if(com != null)
{
diff --git a/Unity/Assets/HotfixView/Model/FGUI/AutoCode/Common/FUI_ButtonNextPage.cs b/Unity/Assets/HotfixView/Model/FGUI/AutoCode/Common/FUI_ButtonNextPage.cs
index ba54add5..7fadd2c6 100644
--- a/Unity/Assets/HotfixView/Model/FGUI/AutoCode/Common/FUI_ButtonNextPage.cs
+++ b/Unity/Assets/HotfixView/Model/FGUI/AutoCode/Common/FUI_ButtonNextPage.cs
@@ -65,7 +65,7 @@ namespace ET
///
public static FUI_ButtonNextPage GetFormPool(Entity domain,GObject go)
{
- FUI_ButtonNextPage fui = go.Get();
+ var fui = go.Get();
if(fui == null)
{
@@ -95,7 +95,7 @@ namespace ET
self.Add(this);
- GComponent com = go.asCom;
+ var com = go.asCom;
if(com != null)
{
diff --git a/Unity/Assets/HotfixView/Model/FGUI/AutoCode/Common/FUI_ButtonNextPageNew1.cs b/Unity/Assets/HotfixView/Model/FGUI/AutoCode/Common/FUI_ButtonNextPageNew1.cs
index e93fc290..f75c3fe7 100644
--- a/Unity/Assets/HotfixView/Model/FGUI/AutoCode/Common/FUI_ButtonNextPageNew1.cs
+++ b/Unity/Assets/HotfixView/Model/FGUI/AutoCode/Common/FUI_ButtonNextPageNew1.cs
@@ -65,7 +65,7 @@ namespace ET
///
public static FUI_ButtonNextPageNew1 GetFormPool(Entity domain,GObject go)
{
- FUI_ButtonNextPageNew1 fui = go.Get();
+ var fui = go.Get();
if(fui == null)
{
@@ -95,7 +95,7 @@ namespace ET
self.Add(this);
- GComponent com = go.asCom;
+ var com = go.asCom;
if(com != null)
{
diff --git a/Unity/Assets/HotfixView/Model/FGUI/AutoCode/Common/FUI_ButtonOnlyText.cs b/Unity/Assets/HotfixView/Model/FGUI/AutoCode/Common/FUI_ButtonOnlyText.cs
index 5f65a1a2..cd23ee7a 100644
--- a/Unity/Assets/HotfixView/Model/FGUI/AutoCode/Common/FUI_ButtonOnlyText.cs
+++ b/Unity/Assets/HotfixView/Model/FGUI/AutoCode/Common/FUI_ButtonOnlyText.cs
@@ -65,7 +65,7 @@ namespace ET
///
public static FUI_ButtonOnlyText GetFormPool(Entity domain,GObject go)
{
- FUI_ButtonOnlyText fui = go.Get();
+ var fui = go.Get();
if(fui == null)
{
@@ -95,7 +95,7 @@ namespace ET
self.Add(this);
- GComponent com = go.asCom;
+ var com = go.asCom;
if(com != null)
{
diff --git a/Unity/Assets/HotfixView/Model/FGUI/AutoCode/Common/FUI_ButtonOnlyTextSingle.cs b/Unity/Assets/HotfixView/Model/FGUI/AutoCode/Common/FUI_ButtonOnlyTextSingle.cs
index 057b6a41..1fe2c610 100644
--- a/Unity/Assets/HotfixView/Model/FGUI/AutoCode/Common/FUI_ButtonOnlyTextSingle.cs
+++ b/Unity/Assets/HotfixView/Model/FGUI/AutoCode/Common/FUI_ButtonOnlyTextSingle.cs
@@ -65,7 +65,7 @@ namespace ET
///
public static FUI_ButtonOnlyTextSingle GetFormPool(Entity domain,GObject go)
{
- FUI_ButtonOnlyTextSingle fui = go.Get();
+ var fui = go.Get();
if(fui == null)
{
@@ -95,7 +95,7 @@ namespace ET
self.Add(this);
- GComponent com = go.asCom;
+ var com = go.asCom;
if(com != null)
{
diff --git a/Unity/Assets/HotfixView/Model/FGUI/AutoCode/Common/FUI_ButtonPlus.cs b/Unity/Assets/HotfixView/Model/FGUI/AutoCode/Common/FUI_ButtonPlus.cs
index 0e71ab7e..2cb7ceda 100644
--- a/Unity/Assets/HotfixView/Model/FGUI/AutoCode/Common/FUI_ButtonPlus.cs
+++ b/Unity/Assets/HotfixView/Model/FGUI/AutoCode/Common/FUI_ButtonPlus.cs
@@ -65,7 +65,7 @@ namespace ET
///
public static FUI_ButtonPlus GetFormPool(Entity domain,GObject go)
{
- FUI_ButtonPlus fui = go.Get();
+ var fui = go.Get();
if(fui == null)
{
@@ -95,7 +95,7 @@ namespace ET
self.Add(this);
- GComponent com = go.asCom;
+ var com = go.asCom;
if(com != null)
{
diff --git a/Unity/Assets/HotfixView/Model/FGUI/AutoCode/Common/FUI_ButtonSingle.cs b/Unity/Assets/HotfixView/Model/FGUI/AutoCode/Common/FUI_ButtonSingle.cs
index f58abf2d..f3617066 100644
--- a/Unity/Assets/HotfixView/Model/FGUI/AutoCode/Common/FUI_ButtonSingle.cs
+++ b/Unity/Assets/HotfixView/Model/FGUI/AutoCode/Common/FUI_ButtonSingle.cs
@@ -66,7 +66,7 @@ namespace ET
///
public static FUI_ButtonSingle GetFormPool(Entity domain,GObject go)
{
- FUI_ButtonSingle fui = go.Get();
+ var fui = go.Get();
if(fui == null)
{
@@ -96,7 +96,7 @@ namespace ET
self.Add(this);
- GComponent com = go.asCom;
+ var com = go.asCom;
if(com != null)
{
diff --git a/Unity/Assets/HotfixView/Model/FGUI/AutoCode/Common/FUI_ButtonSlot.cs b/Unity/Assets/HotfixView/Model/FGUI/AutoCode/Common/FUI_ButtonSlot.cs
index f790fa60..84e69d63 100644
--- a/Unity/Assets/HotfixView/Model/FGUI/AutoCode/Common/FUI_ButtonSlot.cs
+++ b/Unity/Assets/HotfixView/Model/FGUI/AutoCode/Common/FUI_ButtonSlot.cs
@@ -65,7 +65,7 @@ namespace ET
///
public static FUI_ButtonSlot GetFormPool(Entity domain,GObject go)
{
- FUI_ButtonSlot fui = go.Get();
+ var fui = go.Get();
if(fui == null)
{
@@ -95,7 +95,7 @@ namespace ET
self.Add(this);
- GComponent com = go.asCom;
+ var com = go.asCom;
if(com != null)
{
diff --git a/Unity/Assets/HotfixView/Model/FGUI/AutoCode/Common/FUI_ButtonSlot_BlackBG.cs b/Unity/Assets/HotfixView/Model/FGUI/AutoCode/Common/FUI_ButtonSlot_BlackBG.cs
index 96681da0..030baced 100644
--- a/Unity/Assets/HotfixView/Model/FGUI/AutoCode/Common/FUI_ButtonSlot_BlackBG.cs
+++ b/Unity/Assets/HotfixView/Model/FGUI/AutoCode/Common/FUI_ButtonSlot_BlackBG.cs
@@ -65,7 +65,7 @@ namespace ET
///
public static FUI_ButtonSlot_BlackBG GetFormPool(Entity domain,GObject go)
{
- FUI_ButtonSlot_BlackBG fui = go.Get();
+ var fui = go.Get();
if(fui == null)
{
@@ -95,7 +95,7 @@ namespace ET
self.Add(this);
- GComponent com = go.asCom;
+ var com = go.asCom;
if(com != null)
{
diff --git a/Unity/Assets/HotfixView/Model/FGUI/AutoCode/Common/FUI_ButtonText.cs b/Unity/Assets/HotfixView/Model/FGUI/AutoCode/Common/FUI_ButtonText.cs
index 7d433e7a..e809aff4 100644
--- a/Unity/Assets/HotfixView/Model/FGUI/AutoCode/Common/FUI_ButtonText.cs
+++ b/Unity/Assets/HotfixView/Model/FGUI/AutoCode/Common/FUI_ButtonText.cs
@@ -65,7 +65,7 @@ namespace ET
///
public static FUI_ButtonText GetFormPool(Entity domain,GObject go)
{
- FUI_ButtonText fui = go.Get();
+ var fui = go.Get();
if(fui == null)
{
@@ -95,7 +95,7 @@ namespace ET
self.Add(this);
- GComponent com = go.asCom;
+ var com = go.asCom;
if(com != null)
{
diff --git a/Unity/Assets/HotfixView/Model/FGUI/AutoCode/Common/FUI_ButtonText_Blue.cs b/Unity/Assets/HotfixView/Model/FGUI/AutoCode/Common/FUI_ButtonText_Blue.cs
index 82ca81de..7d59620f 100644
--- a/Unity/Assets/HotfixView/Model/FGUI/AutoCode/Common/FUI_ButtonText_Blue.cs
+++ b/Unity/Assets/HotfixView/Model/FGUI/AutoCode/Common/FUI_ButtonText_Blue.cs
@@ -65,7 +65,7 @@ namespace ET
///
public static FUI_ButtonText_Blue GetFormPool(Entity domain,GObject go)
{
- FUI_ButtonText_Blue fui = go.Get();
+ var fui = go.Get();
if(fui == null)
{
@@ -95,7 +95,7 @@ namespace ET
self.Add(this);
- GComponent com = go.asCom;
+ var com = go.asCom;
if(com != null)
{
diff --git a/Unity/Assets/HotfixView/Model/FGUI/AutoCode/Common/FUI_ButtonText_Yellow.cs b/Unity/Assets/HotfixView/Model/FGUI/AutoCode/Common/FUI_ButtonText_Yellow.cs
index 0c4d3126..d878257a 100644
--- a/Unity/Assets/HotfixView/Model/FGUI/AutoCode/Common/FUI_ButtonText_Yellow.cs
+++ b/Unity/Assets/HotfixView/Model/FGUI/AutoCode/Common/FUI_ButtonText_Yellow.cs
@@ -65,7 +65,7 @@ namespace ET
///
public static FUI_ButtonText_Yellow GetFormPool(Entity domain,GObject go)
{
- FUI_ButtonText_Yellow fui = go.Get();
+ var fui = go.Get();
if(fui == null)
{
@@ -95,7 +95,7 @@ namespace ET
self.Add(this);
- GComponent com = go.asCom;
+ var com = go.asCom;
if(com != null)
{
diff --git a/Unity/Assets/HotfixView/Model/FGUI/AutoCode/Common/FUI_ComHelp.cs b/Unity/Assets/HotfixView/Model/FGUI/AutoCode/Common/FUI_ComHelp.cs
index d94610ba..ba8c85cd 100644
--- a/Unity/Assets/HotfixView/Model/FGUI/AutoCode/Common/FUI_ComHelp.cs
+++ b/Unity/Assets/HotfixView/Model/FGUI/AutoCode/Common/FUI_ComHelp.cs
@@ -66,7 +66,7 @@ namespace ET
///
public static FUI_ComHelp GetFormPool(Entity domain,GObject go)
{
- FUI_ComHelp fui = go.Get();
+ var fui = go.Get();
if(fui == null)
{
@@ -96,7 +96,7 @@ namespace ET
self.Add(this);
- GComponent com = go.asCom;
+ var com = go.asCom;
if(com != null)
{
diff --git a/Unity/Assets/HotfixView/Model/FGUI/AutoCode/Common/FUI_ComJobLevelName.cs b/Unity/Assets/HotfixView/Model/FGUI/AutoCode/Common/FUI_ComJobLevelName.cs
index 450e4911..a426a075 100644
--- a/Unity/Assets/HotfixView/Model/FGUI/AutoCode/Common/FUI_ComJobLevelName.cs
+++ b/Unity/Assets/HotfixView/Model/FGUI/AutoCode/Common/FUI_ComJobLevelName.cs
@@ -69,7 +69,7 @@ namespace ET
///
public static FUI_ComJobLevelName GetFormPool(Entity domain,GObject go)
{
- FUI_ComJobLevelName fui = go.Get();
+ var fui = go.Get();
if(fui == null)
{
@@ -99,7 +99,7 @@ namespace ET
self.Add(this);
- GComponent com = go.asCom;
+ var com = go.asCom;
if(com != null)
{
diff --git a/Unity/Assets/HotfixView/Model/FGUI/AutoCode/Common/FUI_ComboBoxCheat.cs b/Unity/Assets/HotfixView/Model/FGUI/AutoCode/Common/FUI_ComboBoxCheat.cs
index 277736a4..5df02ec9 100644
--- a/Unity/Assets/HotfixView/Model/FGUI/AutoCode/Common/FUI_ComboBoxCheat.cs
+++ b/Unity/Assets/HotfixView/Model/FGUI/AutoCode/Common/FUI_ComboBoxCheat.cs
@@ -66,7 +66,7 @@ namespace ET
///
public static FUI_ComboBoxCheat GetFormPool(Entity domain,GObject go)
{
- FUI_ComboBoxCheat fui = go.Get();
+ var fui = go.Get();
if(fui == null)
{
@@ -96,7 +96,7 @@ namespace ET
self.Add(this);
- GComponent com = go.asCom;
+ var com = go.asCom;
if(com != null)
{
diff --git a/Unity/Assets/HotfixView/Model/FGUI/AutoCode/Common/FUI_ComboBoxCheat_popup.cs b/Unity/Assets/HotfixView/Model/FGUI/AutoCode/Common/FUI_ComboBoxCheat_popup.cs
index e7cc5a20..5b13f87c 100644
--- a/Unity/Assets/HotfixView/Model/FGUI/AutoCode/Common/FUI_ComboBoxCheat_popup.cs
+++ b/Unity/Assets/HotfixView/Model/FGUI/AutoCode/Common/FUI_ComboBoxCheat_popup.cs
@@ -65,7 +65,7 @@ namespace ET
///
public static FUI_ComboBoxCheat_popup GetFormPool(Entity domain,GObject go)
{
- FUI_ComboBoxCheat_popup fui = go.Get();
+ var fui = go.Get();
if(fui == null)
{
@@ -95,7 +95,7 @@ namespace ET
self.Add(this);
- GComponent com = go.asCom;
+ var com = go.asCom;
if(com != null)
{
diff --git a/Unity/Assets/HotfixView/Model/FGUI/AutoCode/Common/FUI_FrameCommon.cs b/Unity/Assets/HotfixView/Model/FGUI/AutoCode/Common/FUI_FrameCommon.cs
index a59f81b2..14d35785 100644
--- a/Unity/Assets/HotfixView/Model/FGUI/AutoCode/Common/FUI_FrameCommon.cs
+++ b/Unity/Assets/HotfixView/Model/FGUI/AutoCode/Common/FUI_FrameCommon.cs
@@ -68,7 +68,7 @@ namespace ET
///
public static FUI_FrameCommon GetFormPool(Entity domain,GObject go)
{
- FUI_FrameCommon fui = go.Get();
+ var fui = go.Get();
if(fui == null)
{
@@ -98,7 +98,7 @@ namespace ET
self.Add(this);
- GComponent com = go.asCom;
+ var com = go.asCom;
if(com != null)
{
diff --git a/Unity/Assets/HotfixView/Model/FGUI/AutoCode/Common/FUI_FrameStateBuffUI.cs b/Unity/Assets/HotfixView/Model/FGUI/AutoCode/Common/FUI_FrameStateBuffUI.cs
index 30bd0e11..c0bd3b5d 100644
--- a/Unity/Assets/HotfixView/Model/FGUI/AutoCode/Common/FUI_FrameStateBuffUI.cs
+++ b/Unity/Assets/HotfixView/Model/FGUI/AutoCode/Common/FUI_FrameStateBuffUI.cs
@@ -67,7 +67,7 @@ namespace ET
///
public static FUI_FrameStateBuffUI GetFormPool(Entity domain,GObject go)
{
- FUI_FrameStateBuffUI fui = go.Get();
+ var fui = go.Get();
if(fui == null)
{
@@ -97,7 +97,7 @@ namespace ET
self.Add(this);
- GComponent com = go.asCom;
+ var com = go.asCom;
if(com != null)
{
diff --git a/Unity/Assets/HotfixView/Model/FGUI/AutoCode/Common/FUI_GMUI.cs b/Unity/Assets/HotfixView/Model/FGUI/AutoCode/Common/FUI_GMUI.cs
index 5e35e9ba..cfd7fea5 100644
--- a/Unity/Assets/HotfixView/Model/FGUI/AutoCode/Common/FUI_GMUI.cs
+++ b/Unity/Assets/HotfixView/Model/FGUI/AutoCode/Common/FUI_GMUI.cs
@@ -83,7 +83,7 @@ namespace ET
///
public static FUI_GMUI GetFormPool(Entity domain,GObject go)
{
- FUI_GMUI fui = go.Get();
+ var fui = go.Get();
if(fui == null)
{
@@ -113,7 +113,7 @@ namespace ET
self.Add(this);
- GComponent com = go.asCom;
+ var com = go.asCom;
if(com != null)
{
diff --git a/Unity/Assets/HotfixView/Model/FGUI/AutoCode/Common/FUI_HeadInfoItem.cs b/Unity/Assets/HotfixView/Model/FGUI/AutoCode/Common/FUI_HeadInfoItem.cs
index eaacdf86..090b3cbd 100644
--- a/Unity/Assets/HotfixView/Model/FGUI/AutoCode/Common/FUI_HeadInfoItem.cs
+++ b/Unity/Assets/HotfixView/Model/FGUI/AutoCode/Common/FUI_HeadInfoItem.cs
@@ -72,7 +72,7 @@ namespace ET
///
public static FUI_HeadInfoItem GetFormPool(Entity domain,GObject go)
{
- FUI_HeadInfoItem fui = go.Get();
+ var fui = go.Get();
if(fui == null)
{
@@ -102,7 +102,7 @@ namespace ET
self.Add(this);
- GComponent com = go.asCom;
+ var com = go.asCom;
if(com != null)
{
diff --git a/Unity/Assets/HotfixView/Model/FGUI/AutoCode/Common/FUI_HeadInfoItemMain.cs b/Unity/Assets/HotfixView/Model/FGUI/AutoCode/Common/FUI_HeadInfoItemMain.cs
index ec6c35c5..abea4a63 100644
--- a/Unity/Assets/HotfixView/Model/FGUI/AutoCode/Common/FUI_HeadInfoItemMain.cs
+++ b/Unity/Assets/HotfixView/Model/FGUI/AutoCode/Common/FUI_HeadInfoItemMain.cs
@@ -71,7 +71,7 @@ namespace ET
///
public static FUI_HeadInfoItemMain GetFormPool(Entity domain,GObject go)
{
- FUI_HeadInfoItemMain fui = go.Get();
+ var fui = go.Get();
if(fui == null)
{
@@ -101,7 +101,7 @@ namespace ET
self.Add(this);
- GComponent com = go.asCom;
+ var com = go.asCom;
if(com != null)
{
diff --git a/Unity/Assets/HotfixView/Model/FGUI/AutoCode/Common/FUI_HeadTitleInfo.cs b/Unity/Assets/HotfixView/Model/FGUI/AutoCode/Common/FUI_HeadTitleInfo.cs
index a5065c33..6cba21a4 100644
--- a/Unity/Assets/HotfixView/Model/FGUI/AutoCode/Common/FUI_HeadTitleInfo.cs
+++ b/Unity/Assets/HotfixView/Model/FGUI/AutoCode/Common/FUI_HeadTitleInfo.cs
@@ -73,7 +73,7 @@ namespace ET
///
public static FUI_HeadTitleInfo GetFormPool(Entity domain,GObject go)
{
- FUI_HeadTitleInfo fui = go.Get();
+ var fui = go.Get();
if(fui == null)
{
@@ -103,7 +103,7 @@ namespace ET
self.Add(this);
- GComponent com = go.asCom;
+ var com = go.asCom;
if(com != null)
{
diff --git a/Unity/Assets/HotfixView/Model/FGUI/AutoCode/Common/FUI_LabelChatItem.cs b/Unity/Assets/HotfixView/Model/FGUI/AutoCode/Common/FUI_LabelChatItem.cs
index 69c04fa0..87b34481 100644
--- a/Unity/Assets/HotfixView/Model/FGUI/AutoCode/Common/FUI_LabelChatItem.cs
+++ b/Unity/Assets/HotfixView/Model/FGUI/AutoCode/Common/FUI_LabelChatItem.cs
@@ -66,7 +66,7 @@ namespace ET
///
public static FUI_LabelChatItem GetFormPool(Entity domain,GObject go)
{
- FUI_LabelChatItem fui = go.Get();
+ var fui = go.Get();
if(fui == null)
{
@@ -96,7 +96,7 @@ namespace ET
self.Add(this);
- GComponent com = go.asCom;
+ var com = go.asCom;
if(com != null)
{
diff --git a/Unity/Assets/HotfixView/Model/FGUI/AutoCode/Common/FUI_LabelGlobalText.cs b/Unity/Assets/HotfixView/Model/FGUI/AutoCode/Common/FUI_LabelGlobalText.cs
index 3c8194f9..2b586b65 100644
--- a/Unity/Assets/HotfixView/Model/FGUI/AutoCode/Common/FUI_LabelGlobalText.cs
+++ b/Unity/Assets/HotfixView/Model/FGUI/AutoCode/Common/FUI_LabelGlobalText.cs
@@ -65,7 +65,7 @@ namespace ET
///
public static FUI_LabelGlobalText GetFormPool(Entity domain,GObject go)
{
- FUI_LabelGlobalText fui = go.Get();
+ var fui = go.Get();
if(fui == null)
{
@@ -95,7 +95,7 @@ namespace ET
self.Add(this);
- GComponent com = go.asCom;
+ var com = go.asCom;
if(com != null)
{
diff --git a/Unity/Assets/HotfixView/Model/FGUI/AutoCode/Common/FUI_LabelStateBuffUI.cs b/Unity/Assets/HotfixView/Model/FGUI/AutoCode/Common/FUI_LabelStateBuffUI.cs
index 55d1e7ac..19a54f7a 100644
--- a/Unity/Assets/HotfixView/Model/FGUI/AutoCode/Common/FUI_LabelStateBuffUI.cs
+++ b/Unity/Assets/HotfixView/Model/FGUI/AutoCode/Common/FUI_LabelStateBuffUI.cs
@@ -66,7 +66,7 @@ namespace ET
///
public static FUI_LabelStateBuffUI GetFormPool(Entity domain,GObject go)
{
- FUI_LabelStateBuffUI fui = go.Get();
+ var fui = go.Get();
if(fui == null)
{
@@ -96,7 +96,7 @@ namespace ET
self.Add(this);
- GComponent com = go.asCom;
+ var com = go.asCom;
if(com != null)
{
diff --git a/Unity/Assets/HotfixView/Model/FGUI/AutoCode/Common/FUI_Loading.cs b/Unity/Assets/HotfixView/Model/FGUI/AutoCode/Common/FUI_Loading.cs
index e59ecc51..c086386b 100644
--- a/Unity/Assets/HotfixView/Model/FGUI/AutoCode/Common/FUI_Loading.cs
+++ b/Unity/Assets/HotfixView/Model/FGUI/AutoCode/Common/FUI_Loading.cs
@@ -66,7 +66,7 @@ namespace ET
///
public static FUI_Loading GetFormPool(Entity domain,GObject go)
{
- FUI_Loading fui = go.Get();
+ var fui = go.Get();
if(fui == null)
{
@@ -96,7 +96,7 @@ namespace ET
self.Add(this);
- GComponent com = go.asCom;
+ var com = go.asCom;
if(com != null)
{
diff --git a/Unity/Assets/HotfixView/Model/FGUI/AutoCode/Common/FUI_MainUI.cs b/Unity/Assets/HotfixView/Model/FGUI/AutoCode/Common/FUI_MainUI.cs
index 1bc5739f..ec9598d8 100644
--- a/Unity/Assets/HotfixView/Model/FGUI/AutoCode/Common/FUI_MainUI.cs
+++ b/Unity/Assets/HotfixView/Model/FGUI/AutoCode/Common/FUI_MainUI.cs
@@ -48,7 +48,7 @@ namespace ET
public GGroup m_chatGroup;
public FUI_LabelGlobalText m_txtGlobal;
public GButton m_btnAuto;
- public GButton m_btnBattleIdle;
+ public GButton m_btnActive;
public GButton m_btnExit;
public GButton m_btnDisOther;
public GButton m_btnMail;
@@ -102,7 +102,7 @@ namespace ET
///
public static FUI_MainUI GetFormPool(Entity domain,GObject go)
{
- FUI_MainUI fui = go.Get();
+ var fui = go.Get();
if(fui == null)
{
@@ -132,7 +132,7 @@ namespace ET
self.Add(this);
- GComponent com = go.asCom;
+ var com = go.asCom;
if(com != null)
{
@@ -160,7 +160,7 @@ namespace ET
m_chatGroup = (GGroup)com.GetChildAt(21);
m_txtGlobal = FUI_LabelGlobalText.Create(domain,com.GetChildAt(22));
m_btnAuto = (GButton)com.GetChildAt(24);
- m_btnBattleIdle = (GButton)com.GetChildAt(25);
+ m_btnActive = (GButton)com.GetChildAt(25);
m_btnExit = (GButton)com.GetChildAt(26);
m_btnDisOther = (GButton)com.GetChildAt(27);
m_btnMail = (GButton)com.GetChildAt(28);
@@ -215,7 +215,7 @@ public override void Dispose()
m_txtGlobal.Dispose();
m_txtGlobal = null;
m_btnAuto = null;
- m_btnBattleIdle = null;
+ m_btnActive = null;
m_btnExit = null;
m_btnDisOther = null;
m_btnMail = null;
diff --git a/Unity/Assets/HotfixView/Model/FGUI/AutoCode/Common/FUI_NetLoading.cs b/Unity/Assets/HotfixView/Model/FGUI/AutoCode/Common/FUI_NetLoading.cs
index 7f888381..bc14ead4 100644
--- a/Unity/Assets/HotfixView/Model/FGUI/AutoCode/Common/FUI_NetLoading.cs
+++ b/Unity/Assets/HotfixView/Model/FGUI/AutoCode/Common/FUI_NetLoading.cs
@@ -65,7 +65,7 @@ namespace ET
///
public static FUI_NetLoading GetFormPool(Entity domain,GObject go)
{
- FUI_NetLoading fui = go.Get();
+ var fui = go.Get();
if(fui == null)
{
@@ -95,7 +95,7 @@ namespace ET
self.Add(this);
- GComponent com = go.asCom;
+ var com = go.asCom;
if(com != null)
{
diff --git a/Unity/Assets/HotfixView/Model/FGUI/AutoCode/Common/FUI_ProgressAntiDamage.cs b/Unity/Assets/HotfixView/Model/FGUI/AutoCode/Common/FUI_ProgressAntiDamage.cs
index c020d6ef..ad33b0e0 100644
--- a/Unity/Assets/HotfixView/Model/FGUI/AutoCode/Common/FUI_ProgressAntiDamage.cs
+++ b/Unity/Assets/HotfixView/Model/FGUI/AutoCode/Common/FUI_ProgressAntiDamage.cs
@@ -65,7 +65,7 @@ namespace ET
///
public static FUI_ProgressAntiDamage GetFormPool(Entity domain,GObject go)
{
- FUI_ProgressAntiDamage fui = go.Get();
+ var fui = go.Get();
if(fui == null)
{
@@ -95,7 +95,7 @@ namespace ET
self.Add(this);
- GComponent com = go.asCom;
+ var com = go.asCom;
if(com != null)
{
diff --git a/Unity/Assets/HotfixView/Model/FGUI/AutoCode/Common/FUI_ProgressHealth.cs b/Unity/Assets/HotfixView/Model/FGUI/AutoCode/Common/FUI_ProgressHealth.cs
index 0a1f0d92..7eb622b1 100644
--- a/Unity/Assets/HotfixView/Model/FGUI/AutoCode/Common/FUI_ProgressHealth.cs
+++ b/Unity/Assets/HotfixView/Model/FGUI/AutoCode/Common/FUI_ProgressHealth.cs
@@ -65,7 +65,7 @@ namespace ET
///
public static FUI_ProgressHealth GetFormPool(Entity domain,GObject go)
{
- FUI_ProgressHealth fui = go.Get();
+ var fui = go.Get();
if(fui == null)
{
@@ -95,7 +95,7 @@ namespace ET
self.Add(this);
- GComponent com = go.asCom;
+ var com = go.asCom;
if(com != null)
{
diff --git a/Unity/Assets/HotfixView/Model/FGUI/AutoCode/Common/FUI_ProgressHp.cs b/Unity/Assets/HotfixView/Model/FGUI/AutoCode/Common/FUI_ProgressHp.cs
index 3c47f661..94994a36 100644
--- a/Unity/Assets/HotfixView/Model/FGUI/AutoCode/Common/FUI_ProgressHp.cs
+++ b/Unity/Assets/HotfixView/Model/FGUI/AutoCode/Common/FUI_ProgressHp.cs
@@ -65,7 +65,7 @@ namespace ET
///
public static FUI_ProgressHp GetFormPool(Entity domain,GObject go)
{
- FUI_ProgressHp fui = go.Get();
+ var fui = go.Get();
if(fui == null)
{
@@ -95,7 +95,7 @@ namespace ET
self.Add(this);
- GComponent com = go.asCom;
+ var com = go.asCom;
if(com != null)
{
diff --git a/Unity/Assets/HotfixView/Model/FGUI/AutoCode/Common/FUI_SkillNameUI.cs b/Unity/Assets/HotfixView/Model/FGUI/AutoCode/Common/FUI_SkillNameUI.cs
index 5fb350d4..f1e25f98 100644
--- a/Unity/Assets/HotfixView/Model/FGUI/AutoCode/Common/FUI_SkillNameUI.cs
+++ b/Unity/Assets/HotfixView/Model/FGUI/AutoCode/Common/FUI_SkillNameUI.cs
@@ -66,7 +66,7 @@ namespace ET
///
public static FUI_SkillNameUI GetFormPool(Entity domain,GObject go)
{
- FUI_SkillNameUI fui = go.Get();
+ var fui = go.Get();
if(fui == null)
{
@@ -96,7 +96,7 @@ namespace ET
self.Add(this);
- GComponent com = go.asCom;
+ var com = go.asCom;
if(com != null)
{
diff --git a/Unity/Assets/HotfixView/Model/FGUI/AutoCode/Common/FUI_StateBuffUI.cs b/Unity/Assets/HotfixView/Model/FGUI/AutoCode/Common/FUI_StateBuffUI.cs
index 3bf66140..ae1823c7 100644
--- a/Unity/Assets/HotfixView/Model/FGUI/AutoCode/Common/FUI_StateBuffUI.cs
+++ b/Unity/Assets/HotfixView/Model/FGUI/AutoCode/Common/FUI_StateBuffUI.cs
@@ -66,7 +66,7 @@ namespace ET
///
public static FUI_StateBuffUI GetFormPool(Entity domain,GObject go)
{
- FUI_StateBuffUI fui = go.Get();
+ var fui = go.Get();
if(fui == null)
{
@@ -96,7 +96,7 @@ namespace ET
self.Add(this);
- GComponent com = go.asCom;
+ var com = go.asCom;
if(com != null)
{
diff --git a/Unity/Assets/HotfixView/Model/FGUI/AutoCode/Other/FUI_ActiveUI.cs b/Unity/Assets/HotfixView/Model/FGUI/AutoCode/Other/FUI_ActiveUI.cs
new file mode 100644
index 00000000..85cc0fa9
--- /dev/null
+++ b/Unity/Assets/HotfixView/Model/FGUI/AutoCode/Other/FUI_ActiveUI.cs
@@ -0,0 +1,136 @@
+/** This is an automatically generated class by FairyGUI. Please do not modify it. **/
+
+using ET;
+using FairyGUI;
+using FairyGUI.Utils;
+
+namespace ET
+{
+ [ObjectSystem]
+ public class FUI_ActiveUI_AwakeSystem : AwakeSystem