mirror of
https://github.com/Deathgarden-Rebirth/Deathgarden_Rebirth-Rewrite.git
synced 2026-04-25 16:15:23 -05:00
Merge pull request #43 from Deathgarden-Rebirth/1.1.1_shipping
1.1.1 shipping
This commit is contained in:
commit
ff6f267b71
|
|
@ -26,70 +26,71 @@ class DashItemConfig extends CharacterItemConfig
|
|||
|
||||
protected static array $defaultEquippedBonuses = [
|
||||
'CEE62C37472E49AF36BC2A9809EEF2AD',
|
||||
'E13EA0CF46EE94F27F75BFAAD48D29D1',
|
||||
'8EFCD5CC464EBFE1B7B03A984563710A',
|
||||
];
|
||||
|
||||
protected static array $additionalPerks = [
|
||||
'06BE643F407D4CCEEF259D8712AD8EF7',
|
||||
'105AE7CE41DBBBE92EEBFBB32FDFEC20',
|
||||
'3D1CEA184200C624864F1B9B2EA6D6F8',
|
||||
'43CCF7F247D3BDC18061A3970549AA3F',
|
||||
'6C2EDB3942C4C70551234583A82ADDB8',
|
||||
'83FBBC7F491C9C6C61596B858BE9E0B8',
|
||||
'95E78CDF42FFBA58A258939C5282958C',
|
||||
'C23A3E48469C4630D5CB669B65F86542',
|
||||
'C74F3BFB4B1020B9A33BCB86DF5BD142',
|
||||
'F5025D314E42C17E603001A7089E453E',
|
||||
'08218CBA4F31403770364F8ABB50DDD3',
|
||||
'0CEFFC314C0F4CB607D9E9A0ED6B5902',
|
||||
'20448CF9452155D51CF3A596AEEA9F93',
|
||||
'741109024DBCCC06DD238EB822801F29',
|
||||
'7A786A464BFC405C04E9B186B49DACF7',
|
||||
'88A823B845E70E80CC4F9BB6E4EAD02B',
|
||||
'DAE195854FC3806A95D9068EE7CDDE57',
|
||||
'E0E028D9493AF9E3926AF2A6A65473C3',
|
||||
'F24A1CA04C9D39CE214330BA19F77496',
|
||||
'FD1F569B450C253D3EC750A68A9A177A',
|
||||
'3E01F8FC4FBBDF78B8D768AC43C7741D',
|
||||
'5596427A47EFEC5C9D613A9B10476DBE',
|
||||
'60542B19472C7AACEABFAA83D8112ACA',
|
||||
'8251BCB742EE7DD4A860E187B13DD9DE',
|
||||
'99878F5F452B608BB32022885DB95C23',
|
||||
'C01CD6B543CD1D560D6CAA8C4048AB85',
|
||||
'C551DB484B94D75950A5D6A07EE0B97A',
|
||||
'C90A181E45BF83515EBE3D93820E9A8C',
|
||||
'CD0936BF40E0295221FF1D90428B800A',
|
||||
'CDF0CF394DF8ECFB49C2A8AE92BAAA78',
|
||||
'047EF3FB48C3BA45374657BEAE90707D',
|
||||
'1D3772A3410BC59F3556E987BF0C167C',
|
||||
'2A08CD6C49111E6F3739FF8F8B5B57FE',
|
||||
'32DABD16440CBC1F37FFC398A995CB16',
|
||||
'33C33E06432AC0DE64158A8A41145D8A',
|
||||
'6B2670074B73F8AAC95F07940D6EFE0A',
|
||||
'8CA68C41427D2758CC8F63AC7D01E8D8',
|
||||
'97501DEF493625107AEDCAAB2ADEDF4B',
|
||||
'98DADEE34B8F7ED3084230BABAA7EA8A',
|
||||
'B44C3C7A43E065FBD7E9169D172987C3',
|
||||
'2BD43A50459BD9094DADC49A0F5F2551',
|
||||
'4623A22049BC5892D4DA77B636050EE7',
|
||||
'984B33154FE2F069382B0999A1F4BEED',
|
||||
'80820F1948FE3E53E6A48296BADC2A9B',
|
||||
'49FD9FAC4873805D1BE812BF907A5F3B',
|
||||
'E578456C4515E0D2291A7FAA99AE6C17',
|
||||
'4623A22049BC5892D4DA77B636050EE7',
|
||||
'CC43AFD5455D35F2E2C1C48D9B113BB9',
|
||||
'4AD5556F44338310A806EA9689EC699F',
|
||||
'4CBB395044575F9EA97DE38269B6149A',
|
||||
'80820F1948FE3E53E6A48296BADC2A9B',
|
||||
'984B33154FE2F069382B0999A1F4BEED',
|
||||
'9C61CAA84D68F0948E5CB7983618EC7E',
|
||||
'CC43AFD5455D35F2E2C1C48D9B113BB9',
|
||||
'E578456C4515E0D2291A7FAA99AE6C17',
|
||||
'97501DEF493625107AEDCAAB2ADEDF4B',
|
||||
'33C33E06432AC0DE64158A8A41145D8A',
|
||||
'8CA68C41427D2758CC8F63AC7D01E8D8',
|
||||
'047EF3FB48C3BA45374657BEAE90707D',
|
||||
'32DABD16440CBC1F37FFC398A995CB16',
|
||||
'6B2670074B73F8AAC95F07940D6EFE0A',
|
||||
'98DADEE34B8F7ED3084230BABAA7EA8A',
|
||||
'1D3772A3410BC59F3556E987BF0C167C',
|
||||
'2A08CD6C49111E6F3739FF8F8B5B57FE',
|
||||
'B44C3C7A43E065FBD7E9169D172987C3',
|
||||
'60542B19472C7AACEABFAA83D8112ACA',
|
||||
'C01CD6B543CD1D560D6CAA8C4048AB85',
|
||||
'3E01F8FC4FBBDF78B8D768AC43C7741D',
|
||||
'CDF0CF394DF8ECFB49C2A8AE92BAAA78',
|
||||
'8251BCB742EE7DD4A860E187B13DD9DE',
|
||||
'CD0936BF40E0295221FF1D90428B800A',
|
||||
'5596427A47EFEC5C9D613A9B10476DBE',
|
||||
'C551DB484B94D75950A5D6A07EE0B97A',
|
||||
'99878F5F452B608BB32022885DB95C23',
|
||||
'C90A181E45BF83515EBE3D93820E9A8C',
|
||||
'105AE7CE41DBBBE92EEBFBB32FDFEC20',
|
||||
'83FBBC7F491C9C6C61596B858BE9E0B8',
|
||||
'C23A3E48469C4630D5CB669B65F86542',
|
||||
'C74F3BFB4B1020B9A33BCB86DF5BD142',
|
||||
'3D1CEA184200C624864F1B9B2EA6D6F8',
|
||||
'06BE643F407D4CCEEF259D8712AD8EF7',
|
||||
'F5025D314E42C17E603001A7089E453E',
|
||||
'43CCF7F247D3BDC18061A3970549AA3F',
|
||||
'6C2EDB3942C4C70551234583A82ADDB8',
|
||||
'95E78CDF42FFBA58A258939C5282958C',
|
||||
'FD1F569B450C253D3EC750A68A9A177A',
|
||||
'88A823B845E70E80CC4F9BB6E4EAD02B',
|
||||
'08218CBA4F31403770364F8ABB50DDD3',
|
||||
'20448CF9452155D51CF3A596AEEA9F93',
|
||||
'7A786A464BFC405C04E9B186B49DACF7',
|
||||
'DAE195854FC3806A95D9068EE7CDDE57',
|
||||
'0CEFFC314C0F4CB607D9E9A0ED6B5902',
|
||||
'E0E028D9493AF9E3926AF2A6A65473C3',
|
||||
'F24A1CA04C9D39CE214330BA19F77496',
|
||||
'741109024DBCCC06DD238EB822801F29',
|
||||
'1258297B4BCBFB39628E22A58C77EA87',
|
||||
'2C3447E54515FB888BF0DAA9B01AA7A0',
|
||||
'591DF36F470E529781296DB75E092463',
|
||||
'F287ADAA442711947C9BE6B0B3030F93',
|
||||
'5FF316064261F76895ED0EB830E9184B',
|
||||
'D8222C7B43D329E380496AACB190D183',
|
||||
'624556DC4373E81D4FFAD8A90D0FECCD',
|
||||
'6FAC79C840FBAC0BC59BE7B8E2568FC5',
|
||||
'2C3447E54515FB888BF0DAA9B01AA7A0',
|
||||
'A07E5714432182D7E4C4779A478BD4AB',
|
||||
'A2C2B6D94F9ED3D10B39009F2B89EDA5',
|
||||
'D8222C7B43D329E380496AACB190D183',
|
||||
'F287ADAA442711947C9BE6B0B3030F93',
|
||||
'6FAC79C840FBAC0BC59BE7B8E2568FC5',
|
||||
'591DF36F470E529781296DB75E092463',
|
||||
|
||||
];
|
||||
|
||||
protected static array $additionalWeapons = [
|
||||
|
|
|
|||
|
|
@ -30,76 +30,67 @@ class FogItemConfig extends CharacterItemConfig
|
|||
];
|
||||
|
||||
protected static array $additionalPerks = [
|
||||
'0BD046FD439CDEC9DB6B138AF66B849D',
|
||||
'20FF1865462FD26B0253A08F18EFAA10',
|
||||
'245165FC494F7EE494BBA5AC72C39F99',
|
||||
'5F89822342D5E60F474080A36A7E6A5D',
|
||||
'72FF4B494F0257218238C695F072D794',
|
||||
'807857C9498AEC6575932689C7733231',
|
||||
'863513AF4D63B2AF0E70E7B670754E44',
|
||||
'C90F72FC4D61B1F2FBC73F8A4685EA41',
|
||||
'E5197A3F45E07D108E64A1A140A6315D',
|
||||
'ED14BB8240B4AE8124EDA69ECD37AB10',
|
||||
'1C2A2660423DF1E4C918A49DF4B27B37',
|
||||
'320652184E1A719DEF1D3C9395EE7344',
|
||||
'53954CDB4EB93E44EAB2EA9EF4D9C19C',
|
||||
'8438827D44AA0C807A8C85ABA3A9481B',
|
||||
'9B2D646948E39CCA5C256DBBCB169543',
|
||||
'AD1759374CC44614DCC46DBA60A9C670',
|
||||
'BC1ECDD740F5CF546939FC93023148E6',
|
||||
'D63DC301472FB3505E0E00BB878404C9',
|
||||
'DF5AEE0248C6F69C140B67A038EFE2C8',
|
||||
'ED943B334280F225A7C2AE88B3DC48B9',
|
||||
'19E643BF4612E414EBE75B8EB069A15A',
|
||||
'38E5F7F241E2BA1177419BB312FC1ACE',
|
||||
'68F355644FFC35306046149374549BD0',
|
||||
'828C25F148899221FEBD11976BD91551',
|
||||
'832CDFB74A4C1A77BF4875BABEB31287',
|
||||
'95D96ED948ABA024206EF698FEF7B356',
|
||||
'A0138AA648CE0DF4BBDB969A25C32EB2',
|
||||
'D5674BD74129FD5F4C36958930CF7252',
|
||||
'F501B9E34800BEA6B29CFC87C1584669',
|
||||
'FDAFDCC249950B1DC56CA386CB8345B2',
|
||||
'25CA213F463F21AC064611925BF357B7',
|
||||
'287E08D341A4C1D79E16A086E603A926',
|
||||
'3202337A40BA30103542F9AEB7EA761A',
|
||||
'51CAE9D747988206193B08BAD648FF96',
|
||||
'5A8F3E354CBC6F8B5BD015AB89DE031A',
|
||||
'5B87A706458F7D1ECE107C96F90C547F',
|
||||
'CBC263344E4D94F5AA1D3AAF46685EA8',
|
||||
'D877B29A4EF20A047BEBF69A18B2A1AB',
|
||||
'E4892E8A495FFB38F90729A1C97F3AC9',
|
||||
'E8CE4B54417D9A6712B4B2927BF49376',
|
||||
'C7A898A44F208F9F85CE75969A98242D',
|
||||
'748671E04848191A65419C8FED546AA2',
|
||||
'0537F9A54016B93E5BE8A6979BAEC91D',
|
||||
'36D74C974A5ED5B3FEB1C08D22C7C5FD',
|
||||
'8BD87A0440DAF255AD0D07AE807FF56B',
|
||||
'8A3F034B41D0924E322C41BA555BAD14',
|
||||
'A2827FE248BBFE57949643AC874E6661',
|
||||
'06E25D1942AF2BAAC78148B7D53AFDEA',
|
||||
'155D2FBA46680E7AB51FA2947ECADA01',
|
||||
'36D74C974A5ED5B3FEB1C08D22C7C5FD',
|
||||
'748671E04848191A65419C8FED546AA2',
|
||||
'844C0CA442B977C95E176DAA6D4C56CA',
|
||||
'8A3F034B41D0924E322C41BA555BAD14',
|
||||
'8BD87A0440DAF255AD0D07AE807FF56B',
|
||||
'A2827FE248BBFE57949643AC874E6661',
|
||||
'C7A898A44F208F9F85CE75969A98242D',
|
||||
'041286D44ED155E9B08ADEADD647FFC8',
|
||||
'0A7303964C6E62F3693B988A1D4D2CD1',
|
||||
'25BF0927456349471A1C77A852342246',
|
||||
'317644DB4B3081D4D301D8A4B76935BF',
|
||||
'3C5DD9BB4F684D57D5BA6AB357AFC40B',
|
||||
'71D83BEA40F74032C260DA93B535DF3A',
|
||||
'73D032E24373AEFD053BAC8659626AAB',
|
||||
'AAB3800D45A7E466814D31BBAA23C4D9',
|
||||
'AB87F09442120FFF6FD0C2A3C5F133E3',
|
||||
'F378019748154C368ABB579594F6CDA7',
|
||||
'5EE726C248CA78A6F36F45A8A2D66E00',
|
||||
'619E3632467AB7AB6B80EAB60D82121F',
|
||||
'61AA5ED34F4A473099FCDEB11D0ABDA0',
|
||||
'68EB6BC44AEF83731217EC8E03598618',
|
||||
'75CFE420468721940B8912BBE45092F0',
|
||||
'78C4B6734B7C9DD1D2488EBA8EB5A7E4',
|
||||
'75CFE420468721940B8912BBE45092F0',
|
||||
'BC41691D45E103C2FA81DCA9905AEC9C',
|
||||
'61AA5ED34F4A473099FCDEB11D0ABDA0',
|
||||
'8BBD6D6B46D7EA3BFA362E901C11A0B2',
|
||||
'68EB6BC44AEF83731217EC8E03598618',
|
||||
'5EE726C248CA78A6F36F45A8A2D66E00',
|
||||
'9131CB0F4EFC48F3A5D7FB9055DBC071',
|
||||
'A65569E542E08F1A732F9EB4105BC5D9',
|
||||
'BC41691D45E103C2FA81DCA9905AEC9C',
|
||||
'619E3632467AB7AB6B80EAB60D82121F',
|
||||
'E4892E8A495FFB38F90729A1C97F3AC9',
|
||||
'D877B29A4EF20A047BEBF69A18B2A1AB',
|
||||
'5A8F3E354CBC6F8B5BD015AB89DE031A',
|
||||
'51CAE9D747988206193B08BAD648FF96',
|
||||
'287E08D341A4C1D79E16A086E603A926',
|
||||
'5B87A706458F7D1ECE107C96F90C547F',
|
||||
'E8CE4B54417D9A6712B4B2927BF49376',
|
||||
'25CA213F463F21AC064611925BF357B7',
|
||||
'CBC263344E4D94F5AA1D3AAF46685EA8',
|
||||
'3202337A40BA30103542F9AEB7EA761A',
|
||||
'38E5F7F241E2BA1177419BB312FC1ACE',
|
||||
'95D96ED948ABA024206EF698FEF7B356',
|
||||
'832CDFB74A4C1A77BF4875BABEB31287',
|
||||
'A0138AA648CE0DF4BBDB969A25C32EB2',
|
||||
'F501B9E34800BEA6B29CFC87C1584669',
|
||||
'68F355644FFC35306046149374549BD0',
|
||||
'D5674BD74129FD5F4C36958930CF7252',
|
||||
'828C25F148899221FEBD11976BD91551',
|
||||
'19E643BF4612E414EBE75B8EB069A15A',
|
||||
'FDAFDCC249950B1DC56CA386CB8345B2',
|
||||
'320652184E1A719DEF1D3C9395EE7344',
|
||||
'9B2D646948E39CCA5C256DBBCB169543',
|
||||
'AD1759374CC44614DCC46DBA60A9C670',
|
||||
'D63DC301472FB3505E0E00BB878404C9',
|
||||
'8438827D44AA0C807A8C85ABA3A9481B',
|
||||
'1C2A2660423DF1E4C918A49DF4B27B37',
|
||||
'DF5AEE0248C6F69C140B67A038EFE2C8',
|
||||
'53954CDB4EB93E44EAB2EA9EF4D9C19C',
|
||||
'ED943B334280F225A7C2AE88B3DC48B9',
|
||||
'BC1ECDD740F5CF546939FC93023148E6',
|
||||
'20FF1865462FD26B0253A08F18EFAA10',
|
||||
'C90F72FC4D61B1F2FBC73F8A4685EA41',
|
||||
'ED14BB8240B4AE8124EDA69ECD37AB10',
|
||||
'72FF4B494F0257218238C695F072D794',
|
||||
'5F89822342D5E60F474080A36A7E6A5D',
|
||||
'E5197A3F45E07D108E64A1A140A6315D',
|
||||
'807857C9498AEC6575932689C7733231',
|
||||
'0BD046FD439CDEC9DB6B138AF66B849D',
|
||||
'863513AF4D63B2AF0E70E7B670754E44',
|
||||
'245165FC494F7EE494BBA5AC72C39F99',
|
||||
|
||||
];
|
||||
|
||||
protected static array $additionalWeapons = [
|
||||
|
|
|
|||
|
|
@ -26,70 +26,66 @@ class GhostItemConfig extends CharacterItemConfig
|
|||
|
||||
protected static array $defaultEquippedBonuses = [
|
||||
'336D01F84D412B0D0D38F39311CA8D64',
|
||||
'8EFCD5CC464EBFE1B7B03A984563710A',
|
||||
'E13EA0CF46EE94F27F75BFAAD48D29D1',
|
||||
];
|
||||
|
||||
protected static array $additionalPerks = [
|
||||
'64F58F654238684BB3FA7A820A68B862',
|
||||
'878EA7594E28DCC230E0E99D72D05939',
|
||||
'A858CAF640A824508A028D89AFC44366',
|
||||
'A98210A1445FF0F081DA24BC28BD0D88',
|
||||
'B8EED46C463FFC70BBC122B9F05FF9F7',
|
||||
'BD3A85CA49BC6B9B189E94982871FB90',
|
||||
'BED54888465E38C92F02F194499D8B8A',
|
||||
'D93DE25C4EDA7B757F8379AEA40AD6B3',
|
||||
'E4E2E950427E3B011B36ACB1A92F4EEB',
|
||||
'FABC2C4E40C5FA74D13C9D9BBDA12C20',
|
||||
'07F69DF04A52519A3B301B923C105277',
|
||||
'1C9DC6CA47CC23B03BCEF399E716EAEB',
|
||||
'1D86DC084F0C4D3FED2552B08CC2A252',
|
||||
'45FE0E77469302641DE116B7D42C2BAB',
|
||||
'6A8FA1C845AE1D7576BD87A53F7ED4A4',
|
||||
'AD97271B4E7E71D1AF1843B5DD5005D1',
|
||||
'C4F3B1A549C74E05FAE973A524EB2734',
|
||||
'D62B0CDE478D100230D48C9FD13C456E',
|
||||
'DFDAB3BD40C9E394C35E8CB132CCA3E2',
|
||||
'EB5DA94740E7A30AFC7E65985C95E954',
|
||||
'0EA4EE824E173A94321092BBD5164050',
|
||||
'496A18564BCEB0D3C943E9B8ED3790CD',
|
||||
'5BB88A0C4AF70D96ADA7D9B1AF183CD5',
|
||||
'840D4D27456FDA5062BCF592726B93F7',
|
||||
'98E745CD4D6988DA2CE56588EC9EA2C4',
|
||||
'B2BC1DD14B33F2FE31AA72842FEC3C2D',
|
||||
'BCFB06D543FDAB344CB2E9A2F68EBF40',
|
||||
'CAA84E294F02ECF88B08FB96E481194D',
|
||||
'D2C3AA3F4C845380931EFBAE3D9717B4',
|
||||
'DA306F084984D267287A2D82BCCB2918',
|
||||
'089D250F49D3BF09556CE9BD360A1994',
|
||||
'332697BF4D9CAB645CD7B3ABBB3A0324',
|
||||
'69B2207C48098CEF66D2FBB0C0CBF7DA',
|
||||
'73FDF2C34EE680B30F1B568C0C2F1F76',
|
||||
'B1A8E0574C36DDACD57E219C7F699208',
|
||||
'BA71E3A8492CFB9D33F13F89FBA3EFA8',
|
||||
'C479A7B9481B95E2F67449B53DE201BE',
|
||||
'B1A8E0574C36DDACD57E219C7F699208',
|
||||
'73FDF2C34EE680B30F1B568C0C2F1F76',
|
||||
'D62568C547B9F5CB95B82E89C7B5DF5F',
|
||||
'E34B96F94D82029D83EF6F902DAEDB77',
|
||||
'F05493F04CF30636487243B5776882D6',
|
||||
'1425EC144226E8A0FD0B149756AFFFD2',
|
||||
'BA71E3A8492CFB9D33F13F89FBA3EFA8',
|
||||
'CAA84E294F02ECF88B08FB96E481194D',
|
||||
'BCFB06D543FDAB344CB2E9A2F68EBF40',
|
||||
'B2BC1DD14B33F2FE31AA72842FEC3C2D',
|
||||
'0EA4EE824E173A94321092BBD5164050',
|
||||
'840D4D27456FDA5062BCF592726B93F7',
|
||||
'496A18564BCEB0D3C943E9B8ED3790CD',
|
||||
'D2C3AA3F4C845380931EFBAE3D9717B4',
|
||||
'98E745CD4D6988DA2CE56588EC9EA2C4',
|
||||
'5BB88A0C4AF70D96ADA7D9B1AF183CD5',
|
||||
'DA306F084984D267287A2D82BCCB2918',
|
||||
'6A8FA1C845AE1D7576BD87A53F7ED4A4',
|
||||
'1D86DC084F0C4D3FED2552B08CC2A252',
|
||||
'C4F3B1A549C74E05FAE973A524EB2734',
|
||||
'07F69DF04A52519A3B301B923C105277',
|
||||
'D62B0CDE478D100230D48C9FD13C456E',
|
||||
'EB5DA94740E7A30AFC7E65985C95E954',
|
||||
'1C9DC6CA47CC23B03BCEF399E716EAEB',
|
||||
'AD97271B4E7E71D1AF1843B5DD5005D1',
|
||||
'DFDAB3BD40C9E394C35E8CB132CCA3E2',
|
||||
'45FE0E77469302641DE116B7D42C2BAB',
|
||||
'19FB62054E644ECDC831E29FC5B9E501',
|
||||
'2670422A420A77D424F51AA96917F91F',
|
||||
'2D391C604941F465AA4EE7800AEF401F',
|
||||
'5DA9F0DE40A95322DC5453A4F85B7B2B',
|
||||
'9C2F6A4F49A38054D8A3DBB3FF6DC7D6',
|
||||
'A925877C4FA6CB2C470D11B7FF487D34',
|
||||
'B8E6EB014D43FC4E7C5CEDBD530969ED',
|
||||
'2D391C604941F465AA4EE7800AEF401F',
|
||||
'B9FD9CD4489CDBCA483E96AB689B1FCE',
|
||||
'F732FE3845585D24E94AE39BA12D5E71',
|
||||
'2670422A420A77D424F51AA96917F91F',
|
||||
'A925877C4FA6CB2C470D11B7FF487D34',
|
||||
'9C2F6A4F49A38054D8A3DBB3FF6DC7D6',
|
||||
'B8E6EB014D43FC4E7C5CEDBD530969ED',
|
||||
'1425EC144226E8A0FD0B149756AFFFD2',
|
||||
'1A09DB19434DA733AAD3D9B5B1929CD4',
|
||||
'2729DEB04123FAF12B80D2970F6E5C98',
|
||||
'4FDB6DFE4E545F793CEF5780D40B84A6',
|
||||
'6BE58FB140091754841745BD81B1CD52',
|
||||
'92ECE5FC49294EE94DA0D4AC003CA2AF',
|
||||
'AD6D6B384FA0CB8D11149E8CBD2E65CD',
|
||||
'C74A5C5449B08CB75CABB08E3AEEB567',
|
||||
'FEE8A7004DC0DDFE1A22AC9156675E92',
|
||||
'4FDB6DFE4E545F793CEF5780D40B84A6',
|
||||
'F8E2A13648900939B5B086B2D61A6E43',
|
||||
'FA2F879C4C3D93663289D8906004D3E9',
|
||||
'FEE8A7004DC0DDFE1A22AC9156675E92',
|
||||
'2729DEB04123FAF12B80D2970F6E5C98',
|
||||
'AD6D6B384FA0CB8D11149E8CBD2E65CD',
|
||||
'6BE58FB140091754841745BD81B1CD52',
|
||||
'C74A5C5449B08CB75CABB08E3AEEB567',
|
||||
'A858CAF640A824508A028D89AFC44366',
|
||||
'B8EED46C463FFC70BBC122B9F05FF9F7',
|
||||
'FABC2C4E40C5FA74D13C9D9BBDA12C20',
|
||||
'A98210A1445FF0F081DA24BC28BD0D88',
|
||||
'BED54888465E38C92F02F194499D8B8A',
|
||||
'E4E2E950427E3B011B36ACB1A92F4EEB',
|
||||
'D93DE25C4EDA7B757F8379AEA40AD6B3',
|
||||
'BD3A85CA49BC6B9B189E94982871FB90',
|
||||
'64F58F654238684BB3FA7A820A68B862',
|
||||
'878EA7594E28DCC230E0E99D72D05939',
|
||||
|
||||
];
|
||||
|
||||
protected static array $additionalWeapons = [
|
||||
|
|
|
|||
|
|
@ -30,76 +30,67 @@ class InkedItemConfig extends CharacterItemConfig
|
|||
];
|
||||
|
||||
protected static array $additionalPerks = [
|
||||
'366DFB0841631FE3A1F4FE9BF814CF2C',
|
||||
'EF5BBBFD49DEEA174AA5598997FB6B7B',
|
||||
'53E8A0D044F3FA2A808503A702BE1842',
|
||||
'C2C46E9047209670A929EBA155D5AC03',
|
||||
'10160BE64538EF4D5D3B4E82D21D9F04',
|
||||
'12CB77B44BB2FE4D52F82FA9CC963DE5',
|
||||
'180B90BC4577469F4D52DA917A7FED6B',
|
||||
'366DFB0841631FE3A1F4FE9BF814CF2C',
|
||||
'53E8A0D044F3FA2A808503A702BE1842',
|
||||
'5AE771024971ED9C8DE3188A30BE3946',
|
||||
'8BAE2CDA4A1ABC84FB82C69468B26253',
|
||||
'C2C46E9047209670A929EBA155D5AC03',
|
||||
'5AE771024971ED9C8DE3188A30BE3946',
|
||||
'180B90BC4577469F4D52DA917A7FED6B',
|
||||
'CB95BEF142FE7EEAA6D9828DE3E4D6EA',
|
||||
'EF5BBBFD49DEEA174AA5598997FB6B7B',
|
||||
'5EE726C248CA78A6F36F45A8A2D66E00',
|
||||
'619E3632467AB7AB6B80EAB60D82121F',
|
||||
'61AA5ED34F4A473099FCDEB11D0ABDA0',
|
||||
'68EB6BC44AEF83731217EC8E03598618',
|
||||
'75CFE420468721940B8912BBE45092F0',
|
||||
'78C4B6734B7C9DD1D2488EBA8EB5A7E4',
|
||||
'8BBD6D6B46D7EA3BFA362E901C11A0B2',
|
||||
'9131CB0F4EFC48F3A5D7FB9055DBC071',
|
||||
'A65569E542E08F1A732F9EB4105BC5D9',
|
||||
'BC41691D45E103C2FA81DCA9905AEC9C',
|
||||
'0249B66A42343526F8BF54971DF526E5',
|
||||
'1FC4C7684FAADF90688F4CBD2CD34C3C',
|
||||
'24671E03417B9691CBF3B08075630ED5',
|
||||
'3506BD4A471DF62242C2DDAB46DCBB80',
|
||||
'540987164DA1348FF066CC92EC3E748D',
|
||||
'5681640F41DF9BEF0659C3A951BFC01B',
|
||||
'873E0BE449FBC563A14FD1A765A92C86',
|
||||
'D73CB2D24A0FF4CBB073C4BBE4C5D946',
|
||||
'E3B30F55417858D2D6E017B2360B88D6',
|
||||
'EB3720D747B44EF88FCA4E897EC8C1CA',
|
||||
'0BC950834BEA8778AA29D8BAA14728E3',
|
||||
'1146459D4368AD9D25C64A8CB1963524',
|
||||
'2C8DB863441E5B70610BCAA591E7FF5B',
|
||||
'3B0649F041FD918FFBD624B15B64FF4B',
|
||||
'48C47A4341B0E3E001F3D18537658D40',
|
||||
'50FB8AA844F1F9DCB0D04790010A5457',
|
||||
'5A7545B34F4FB2EC39472BBE6680B2EE',
|
||||
'5EEF1C6040DE7AB766F9E48795BD0500',
|
||||
'DFF40D824EDD8D0EF7DC4EBE81E7D121',
|
||||
'F2F5C6BB4536127CD0D0768422BCF154',
|
||||
'0E80E49A4296166C6ED1FB972DAC9262',
|
||||
'1F0AC96B47319A47310A4A97D0F44B11',
|
||||
'293398CB423EF1C9196C0BA617CD3617',
|
||||
'61775317436C6C40BC2C659E4EA0D9E1',
|
||||
'75A9B5A34CD7815B6D77248506897122',
|
||||
'7919E64C48E49F575CB7178BE373CFEA',
|
||||
'80C3A8EC4F5437CC350CD28B3115D816',
|
||||
'9EB999F04DA57E9359D304AA061284D3',
|
||||
'B002C36C4F206CF9E8EFD49384101F5C',
|
||||
'B0192F294B3837DD4F9DC48F4B1C7995',
|
||||
'2933551148051800995144B423FEC172',
|
||||
'418880784C86E2A81AB395A998B09901',
|
||||
'50DBE604449E3B97237B7FB8282DCFB2',
|
||||
'6340FA564B0C4E692AD174BB743607F5',
|
||||
'72D05D9745E110503997F9A1156782B5',
|
||||
'75831C73438DA8C3E873339E58FC1674',
|
||||
'B406524145105F5EF80895812A8B46A8',
|
||||
'B70D0441477300A37996B4ACDC021260',
|
||||
'B7FAFD7740EDEC10CF49A48296D4B1C5',
|
||||
'CCA0BF8C430D4BFC1EE095914BFF5E4E',
|
||||
'03B907684E4B8058A274F1A1958A7FB2',
|
||||
'04650B23493C386FA87E48947D26D79F',
|
||||
'168A9C7E4AF1C1D321885ABEF7538DE9',
|
||||
'3A769A1F400DC24C97DF28B8969992E1',
|
||||
'72F7A311494D090473C38C8391AC6F89',
|
||||
'AC4E66024C3E56B3675EA1B273AB7B6E',
|
||||
'AD024E8E46E056286FC5F0AB07EC2FA0',
|
||||
'B245A69F4145075488DD01A477A24385',
|
||||
'B377AE6047A4688FE2164FB2E341C525',
|
||||
'F329A7724E21169E99739196DFC797D1',
|
||||
'03B907684E4B8058A274F1A1958A7FB2',
|
||||
'B245A69F4145075488DD01A477A24385',
|
||||
'72F7A311494D090473C38C8391AC6F89',
|
||||
'AD024E8E46E056286FC5F0AB07EC2FA0',
|
||||
'3A769A1F400DC24C97DF28B8969992E1',
|
||||
'AC4E66024C3E56B3675EA1B273AB7B6E',
|
||||
'B377AE6047A4688FE2164FB2E341C525',
|
||||
'6340FA564B0C4E692AD174BB743607F5',
|
||||
'418880784C86E2A81AB395A998B09901',
|
||||
'75831C73438DA8C3E873339E58FC1674',
|
||||
'CCA0BF8C430D4BFC1EE095914BFF5E4E',
|
||||
'50DBE604449E3B97237B7FB8282DCFB2',
|
||||
'2933551148051800995144B423FEC172',
|
||||
'B70D0441477300A37996B4ACDC021260',
|
||||
'B7FAFD7740EDEC10CF49A48296D4B1C5',
|
||||
'B406524145105F5EF80895812A8B46A8',
|
||||
'72D05D9745E110503997F9A1156782B5',
|
||||
'75A9B5A34CD7815B6D77248506897122',
|
||||
'9EB999F04DA57E9359D304AA061284D3',
|
||||
'1F0AC96B47319A47310A4A97D0F44B11',
|
||||
'7919E64C48E49F575CB7178BE373CFEA',
|
||||
'B0192F294B3837DD4F9DC48F4B1C7995',
|
||||
'B002C36C4F206CF9E8EFD49384101F5C',
|
||||
'80C3A8EC4F5437CC350CD28B3115D816',
|
||||
'0E80E49A4296166C6ED1FB972DAC9262',
|
||||
'61775317436C6C40BC2C659E4EA0D9E1',
|
||||
'293398CB423EF1C9196C0BA617CD3617',
|
||||
'5681640F41DF9BEF0659C3A951BFC01B',
|
||||
'E3B30F55417858D2D6E017B2360B88D6',
|
||||
'3506BD4A471DF62242C2DDAB46DCBB80',
|
||||
'540987164DA1348FF066CC92EC3E748D',
|
||||
'D73CB2D24A0FF4CBB073C4BBE4C5D946',
|
||||
'873E0BE449FBC563A14FD1A765A92C86',
|
||||
'1FC4C7684FAADF90688F4CBD2CD34C3C',
|
||||
'0249B66A42343526F8BF54971DF526E5',
|
||||
'EB3720D747B44EF88FCA4E897EC8C1CA',
|
||||
'24671E03417B9691CBF3B08075630ED5',
|
||||
'48C47A4341B0E3E001F3D18537658D40',
|
||||
'3B0649F041FD918FFBD624B15B64FF4B',
|
||||
'50FB8AA844F1F9DCB0D04790010A5457',
|
||||
'0BC950834BEA8778AA29D8BAA14728E3',
|
||||
'5A7545B34F4FB2EC39472BBE6680B2EE',
|
||||
'2C8DB863441E5B70610BCAA591E7FF5B',
|
||||
'1146459D4368AD9D25C64A8CB1963524',
|
||||
'F2F5C6BB4536127CD0D0768422BCF154',
|
||||
'DFF40D824EDD8D0EF7DC4EBE81E7D121',
|
||||
'5EEF1C6040DE7AB766F9E48795BD0500',
|
||||
|
||||
];
|
||||
|
||||
protected static array $additionalWeapons = [
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@ class SawbonesItemConfig extends CharacterItemConfig
|
|||
|
||||
protected static array $defaultEquippedPerks = [
|
||||
'F2768C4541C8262EFF4922B372AB7306',
|
||||
'BE1C0D4C4CE0861122BE22B2736D9091',
|
||||
'350B26074604529237BF0CB22B60A9B8',
|
||||
];
|
||||
|
||||
protected static array $defaultEquippedWeapons = [
|
||||
|
|
@ -30,66 +30,67 @@ class SawbonesItemConfig extends CharacterItemConfig
|
|||
];
|
||||
|
||||
protected static array $additionalPerks = [
|
||||
'0EE6E3C04A608FF0CE64A8813A9EBE26',
|
||||
'145C53124968EEC87E2206B1EDDFE74C',
|
||||
'3D5693D941E0CFF7FB4BB4A346775074',
|
||||
'75CED6B24CCA9FDA4D976990D0A65172',
|
||||
'A1463E12485BA0B2D678EA863BCC8ED9',
|
||||
'CE215D4B4C691D83842CD395F893B250',
|
||||
'D500FB67476AFA419553BF9F384A9CF2',
|
||||
'E3139A504D205C06438904B1ECD68D44',
|
||||
'E9564AFF410C3F82BD53B7890DA9DB97',
|
||||
'F2768C4541C8262EFF4922B372AB7306',
|
||||
'503AB47B48E0037446EC1197C19A9194',
|
||||
'897984F8487FD493976858B14F118084',
|
||||
'C194EF534DE59947A26E8198F92DE085',
|
||||
'CD7D1F824FA432FEA6310B91EA158DB2',
|
||||
'D2BF2FBB403165E768984684CACF8CA8',
|
||||
'D495BCB543F2D005B559C888E4BF2B3B',
|
||||
'D738850D4DC5527A6140CDBBB8006512',
|
||||
'E840051C40D0032398A307A7F8042EFE',
|
||||
'EE4BFF834606642CC8AEC89EE00AA153',
|
||||
'FC3D5C6B4D2547CDA76CE8BA1D536A7D',
|
||||
'9FCAAC9143A827E79DC179B762B1E520',
|
||||
'9A9042614697C385E5744C903F5E19C3',
|
||||
'25B8F52744CAEB17E599888B5E80162E',
|
||||
'EAC46B4C4979624CD3C15B9189D1CC93',
|
||||
'2822F9B547761DD69A4853920A5A3A67',
|
||||
'46686C2F49C88ADD7635A4B3D5B1D594',
|
||||
'67B8A74643EA6CB8A41457AD5A576D69',
|
||||
'6BABAFD74690D55F470764A1ACC7DFE1',
|
||||
'77EF1CAC48919368F529018D6E512B94',
|
||||
'9A9042614697C385E5744C903F5E19C3',
|
||||
'9FCAAC9143A827E79DC179B762B1E520',
|
||||
'EAC46B4C4979624CD3C15B9189D1CC93',
|
||||
'FF5821084098286D2E31E99192BB0988',
|
||||
'496CC3BD4E3DD73E70894C9F28D74BDE',
|
||||
'69F917C2461E17A4BF5125BB53486AC0',
|
||||
'6E8132464381C5AF299E908B68C2565B',
|
||||
'7F33795840136A9EBC0186A529E4A82A',
|
||||
'9472E86E4D354E3724DFEAAF6C146990',
|
||||
'BE1C0D4C4CE0861122BE22B2736D9091',
|
||||
'C3C093AF47C8EC0A9955B58F55132352',
|
||||
'C40EB3E34F9864E4A9BBD2AEDC692224',
|
||||
'F719FEAB4BD1A86835B1FDAE54D8ECA7',
|
||||
'F71C636F453DA292ED7AF2A595292462',
|
||||
'0498C28C4468EC81BA43B585D4D759ED',
|
||||
'77EF1CAC48919368F529018D6E512B94',
|
||||
'6BABAFD74690D55F470764A1ACC7DFE1',
|
||||
'67B8A74643EA6CB8A41457AD5A576D69',
|
||||
'274EB0B34AB39E468BFA878F7E87465B',
|
||||
'4AE4801A440EFF8B54760EBFF92B128C',
|
||||
'42E05FC94E6B09CCBB6208BAF94AE98F',
|
||||
'2F12511B412A1B310A55E09CDE252ED7',
|
||||
'F20F6E2E4F3162124A476BB9FE07E407',
|
||||
'A966101E4DF689887A9B0EBB55CA6F42',
|
||||
'38C5D09A4A0E7175283DA691B6491B6F',
|
||||
'4AA977184CF5BD38555EB5B17C03F058',
|
||||
'3D1CDD6C40CA5955251B54922F016A7E',
|
||||
'ECEBC4314D3A0038B44F0086E436AE58',
|
||||
'350B26074604529237BF0CB22B60A9B8',
|
||||
'9729860948356C55894620BF8ED4CDCF',
|
||||
'2ACA69814FCC99FC5F2EE0B08C4D5E5C',
|
||||
'8206DA294E48B55CCF15CEADDC1DE13E',
|
||||
'8A5E53B94D27C821B78CDCB164BD839E',
|
||||
'30B7E7A64B7511318ACBF09FF99E7E9E',
|
||||
'BDC2B6B24108286E735765B71B9640B5',
|
||||
'A64B1E134B8BB2107738C1BEA34968E7',
|
||||
'DB531F084A7954B5F816BE9E4F66C866',
|
||||
'8D2677824D904029F166DCBEAC6BD457',
|
||||
'04FC953E40A601200FA1C181A0D3C913',
|
||||
'1C4A65DD4FCF5F27088E16A2A8B3D42A',
|
||||
'4F668FF6481246016585DBB4F7C2CDF8',
|
||||
'D81228EB4E6440D7398D6583AF9304D0',
|
||||
'CBE63CAE4215643C4FDE1CBB4DF8B265',
|
||||
'0498C28C4468EC81BA43B585D4D759ED',
|
||||
'50F9173D4A2E6AC649390393AD8A1876',
|
||||
'70DF69CE4B3FC57BA650BEABAF64C737',
|
||||
'B016402440755F9F0E580E8BD4309020',
|
||||
'CBE63CAE4215643C4FDE1CBB4DF8B265',
|
||||
'D81228EB4E6440D7398D6583AF9304D0',
|
||||
'4F668FF6481246016585DBB4F7C2CDF8',
|
||||
'1C4A65DD4FCF5F27088E16A2A8B3D42A',
|
||||
'FEC1059E484060C384E2F4B3DAB9ADDF',
|
||||
'274EB0B34AB39E468BFA878F7E87465B',
|
||||
'2F12511B412A1B310A55E09CDE252ED7',
|
||||
'38C5D09A4A0E7175283DA691B6491B6F',
|
||||
'3D1CDD6C40CA5955251B54922F016A7E',
|
||||
'42E05FC94E6B09CCBB6208BAF94AE98F',
|
||||
'4AA977184CF5BD38555EB5B17C03F058',
|
||||
'4AE4801A440EFF8B54760EBFF92B128C',
|
||||
'A966101E4DF689887A9B0EBB55CA6F42',
|
||||
'ECEBC4314D3A0038B44F0086E436AE58',
|
||||
'F20F6E2E4F3162124A476BB9FE07E407',
|
||||
'D495BCB543F2D005B559C888E4BF2B3B',
|
||||
'503AB47B48E0037446EC1197C19A9194',
|
||||
'FC3D5C6B4D2547CDA76CE8BA1D536A7D',
|
||||
'CD7D1F824FA432FEA6310B91EA158DB2',
|
||||
'D738850D4DC5527A6140CDBBB8006512',
|
||||
'E840051C40D0032398A307A7F8042EFE',
|
||||
'C194EF534DE59947A26E8198F92DE085',
|
||||
'897984F8487FD493976858B14F118084',
|
||||
'EE4BFF834606642CC8AEC89EE00AA153',
|
||||
'D2BF2FBB403165E768984684CACF8CA8',
|
||||
'F2768C4541C8262EFF4922B372AB7306',
|
||||
'0EE6E3C04A608FF0CE64A8813A9EBE26',
|
||||
'D500FB67476AFA419553BF9F384A9CF2',
|
||||
'75CED6B24CCA9FDA4D976990D0A65172',
|
||||
'3D5693D941E0CFF7FB4BB4A346775074',
|
||||
'145C53124968EEC87E2206B1EDDFE74C',
|
||||
'CE215D4B4C691D83842CD395F893B250',
|
||||
'E3139A504D205C06438904B1ECD68D44',
|
||||
'E9564AFF410C3F82BD53B7890DA9DB97',
|
||||
'A1463E12485BA0B2D678EA863BCC8ED9',
|
||||
|
||||
];
|
||||
|
||||
protected static array $additionalWeapons = [
|
||||
|
|
|
|||
|
|
@ -9,8 +9,8 @@ class SwitchItemConfig extends CharacterItemConfig
|
|||
protected static string $characterId = '38A4EF8140822E498B2FD196B757F7AD';
|
||||
|
||||
protected static array $defaultEquippedPerks = [
|
||||
'350B26074604529237BF0CB22B60A9B8',
|
||||
'04650B23493C386FA87E48947D26D79F',
|
||||
'BE1C0D4C4CE0861122BE22B2736D9091',
|
||||
'2F3693A4473188D2787CC899A70DC563',
|
||||
];
|
||||
|
||||
protected static array $defaultEquippedWeapons = [
|
||||
|
|
@ -30,76 +30,68 @@ class SwitchItemConfig extends CharacterItemConfig
|
|||
];
|
||||
|
||||
protected static array $additionalPerks = [
|
||||
'26FD3399444E416AE5BFDA913D2D0FC1',
|
||||
'2F3693A4473188D2787CC899A70DC563',
|
||||
'32FCE94040CB69F28305E88440D5A87A',
|
||||
'554DDAD7403BF722AA7B228FF685812E',
|
||||
'5CC40F60479CDB032E2B3D9D2B4B68BA',
|
||||
'5F747FA544A2274998605E937363B6C4',
|
||||
'B4E4B8DB4A1F4D75B324E28EB7B1207F',
|
||||
'CF50E6CF48FB227671A856BCB93BD342',
|
||||
'D2299AD041AC1AE7325F228BBCAD3DFF',
|
||||
'EAF934964116604C0329FCA56BF27C1E',
|
||||
'2ACA69814FCC99FC5F2EE0B08C4D5E5C',
|
||||
'30B7E7A64B7511318ACBF09FF99E7E9E',
|
||||
'350B26074604529237BF0CB22B60A9B8',
|
||||
'8206DA294E48B55CCF15CEADDC1DE13E',
|
||||
'8A5E53B94D27C821B78CDCB164BD839E',
|
||||
'8D2677824D904029F166DCBEAC6BD457',
|
||||
'9729860948356C55894620BF8ED4CDCF',
|
||||
'A64B1E134B8BB2107738C1BEA34968E7',
|
||||
'BDC2B6B24108286E735765B71B9640B5',
|
||||
'DB531F084A7954B5F816BE9E4F66C866',
|
||||
'09F53AE84AE76CC0D381B2BB2B077893',
|
||||
'0ACCC7424C600FEADB3710ABFB4BFB43',
|
||||
'2F32222145A7933E3F1BEC933FA0D986',
|
||||
'4754B7494BA24E0272C5DAAD5AC009CE',
|
||||
'594EA1A64C78A189C2106C95DCAE7030',
|
||||
'60A4846842F73CD22B1EC79557F1A279',
|
||||
'69891F364EBC949D9807F1BCF9D95E0D',
|
||||
'9B34059A4199ACBEE46BB4B0472E7CC3',
|
||||
'E777B0B5457B2B55F2CE0D8715AF2B55',
|
||||
'EC0A479146666CF547C9F5B29CAAD5BD',
|
||||
'2013C5824B0C41563E9B5282396A36C0',
|
||||
'4D2C1F904DD74955E18EB18807464C82',
|
||||
'5889E8B1404109B1D4623B9DD2057608',
|
||||
'7DDD64BD42ACABB1645972ADE5DD8C20',
|
||||
'83C8C4CC4B782FDBB03498800F0CB0B7',
|
||||
'884F74184F506A8582747F93EF5D72E6',
|
||||
'9065B384426E964714CF8499B4D2BE1D',
|
||||
'C8B62BB84729DB16351D398AFFAFF123',
|
||||
'D670A4624045B40EB7DE4D9F4A1497BE',
|
||||
'D6FA3760472DD2767D7C6CA90945F0BF',
|
||||
'0D0A91644E4F11BC047A249E03B1F0B8',
|
||||
'0E8EB65140B51EE188A4819FDF585E09',
|
||||
'4C303ADC445C800647A6AA81E224C58A',
|
||||
'5C954D824BD7E4C9BAEB2FBE266E3701',
|
||||
'6363B5E84DE1F461EB4778A61BD1DEF1',
|
||||
'8D6853D245F6F99A78BF44B6620C0F60',
|
||||
'BE1C0D4C4CE0861122BE22B2736D9091',
|
||||
'F71C636F453DA292ED7AF2A595292462',
|
||||
'7F33795840136A9EBC0186A529E4A82A',
|
||||
'C40EB3E34F9864E4A9BBD2AEDC692224',
|
||||
'496CC3BD4E3DD73E70894C9F28D74BDE',
|
||||
'F719FEAB4BD1A86835B1FDAE54D8ECA7',
|
||||
'C3C093AF47C8EC0A9955B58F55132352',
|
||||
'9472E86E4D354E3724DFEAAF6C146990',
|
||||
'6E8132464381C5AF299E908B68C2565B',
|
||||
'69F917C2461E17A4BF5125BB53486AC0',
|
||||
'E30FA007473CD2472AE5798B679DA419',
|
||||
'AA96AD8F4D4572BC100E06B19164F647',
|
||||
'D538AFA44F9EE94FFAB0348E225F62CB',
|
||||
'0E8EB65140B51EE188A4819FDF585E09',
|
||||
'D6968E3A4A1FA968F13097B35AF2D61E',
|
||||
'E30FA007473CD2472AE5798B679DA419',
|
||||
'03B907684E4B8058A274F1A1958A7FB2',
|
||||
'04650B23493C386FA87E48947D26D79F',
|
||||
'168A9C7E4AF1C1D321885ABEF7538DE9',
|
||||
'3A769A1F400DC24C97DF28B8969992E1',
|
||||
'72F7A311494D090473C38C8391AC6F89',
|
||||
'AC4E66024C3E56B3675EA1B273AB7B6E',
|
||||
'AD024E8E46E056286FC5F0AB07EC2FA0',
|
||||
'B245A69F4145075488DD01A477A24385',
|
||||
'B377AE6047A4688FE2164FB2E341C525',
|
||||
'F329A7724E21169E99739196DFC797D1',
|
||||
'041286D44ED155E9B08ADEADD647FFC8',
|
||||
'0A7303964C6E62F3693B988A1D4D2CD1',
|
||||
'6363B5E84DE1F461EB4778A61BD1DEF1',
|
||||
'5C954D824BD7E4C9BAEB2FBE266E3701',
|
||||
'4C303ADC445C800647A6AA81E224C58A',
|
||||
'8D6853D245F6F99A78BF44B6620C0F60',
|
||||
'0D0A91644E4F11BC047A249E03B1F0B8',
|
||||
'25BF0927456349471A1C77A852342246',
|
||||
'317644DB4B3081D4D301D8A4B76935BF',
|
||||
'3C5DD9BB4F684D57D5BA6AB357AFC40B',
|
||||
'71D83BEA40F74032C260DA93B535DF3A',
|
||||
'73D032E24373AEFD053BAC8659626AAB',
|
||||
'AAB3800D45A7E466814D31BBAA23C4D9',
|
||||
'AB87F09442120FFF6FD0C2A3C5F133E3',
|
||||
'3C5DD9BB4F684D57D5BA6AB357AFC40B',
|
||||
'F378019748154C368ABB579594F6CDA7',
|
||||
'73D032E24373AEFD053BAC8659626AAB',
|
||||
'0A7303964C6E62F3693B988A1D4D2CD1',
|
||||
'317644DB4B3081D4D301D8A4B76935BF',
|
||||
'AB87F09442120FFF6FD0C2A3C5F133E3',
|
||||
'AAB3800D45A7E466814D31BBAA23C4D9',
|
||||
'041286D44ED155E9B08ADEADD647FFC8',
|
||||
'5889E8B1404109B1D4623B9DD2057608',
|
||||
'D670A4624045B40EB7DE4D9F4A1497BE',
|
||||
'83C8C4CC4B782FDBB03498800F0CB0B7',
|
||||
'D6FA3760472DD2767D7C6CA90945F0BF',
|
||||
'7DDD64BD42ACABB1645972ADE5DD8C20',
|
||||
'4D2C1F904DD74955E18EB18807464C82',
|
||||
'884F74184F506A8582747F93EF5D72E6',
|
||||
'C8B62BB84729DB16351D398AFFAFF123',
|
||||
'2013C5824B0C41563E9B5282396A36C0',
|
||||
'9065B384426E964714CF8499B4D2BE1D',
|
||||
'2F3693A4473188D2787CC899A70DC563',
|
||||
'5F747FA544A2274998605E937363B6C4',
|
||||
'EAF934964116604C0329FCA56BF27C1E',
|
||||
'26FD3399444E416AE5BFDA913D2D0FC1',
|
||||
'5CC40F60479CDB032E2B3D9D2B4B68BA',
|
||||
'32FCE94040CB69F28305E88440D5A87A',
|
||||
'CF50E6CF48FB227671A856BCB93BD342',
|
||||
'B4E4B8DB4A1F4D75B324E28EB7B1207F',
|
||||
'D2299AD041AC1AE7325F228BBCAD3DFF',
|
||||
'554DDAD7403BF722AA7B228FF685812E',
|
||||
'9B34059A4199ACBEE46BB4B0472E7CC3',
|
||||
'4754B7494BA24E0272C5DAAD5AC009CE',
|
||||
'EC0A479146666CF547C9F5B29CAAD5BD',
|
||||
'594EA1A64C78A189C2106C95DCAE7030',
|
||||
'2F32222145A7933E3F1BEC933FA0D986',
|
||||
'E777B0B5457B2B55F2CE0D8715AF2B55',
|
||||
'09F53AE84AE76CC0D381B2BB2B077893',
|
||||
'60A4846842F73CD22B1EC79557F1A279',
|
||||
'0ACCC7424C600FEADB3710ABFB4BFB43',
|
||||
'69891F364EBC949D9807F1BCF9D95E0D',
|
||||
|
||||
|
||||
];
|
||||
|
||||
protected static array $additionalWeapons = [
|
||||
|
|
|
|||
136
dist/app/Classes/Config/CatalogPriceConfig.php
vendored
136
dist/app/Classes/Config/CatalogPriceConfig.php
vendored
|
|
@ -16,154 +16,166 @@ class CatalogPriceConfig
|
|||
{
|
||||
const WEAPON_COSTS = [
|
||||
1 => [
|
||||
'CurrencyC' => 350,
|
||||
'CurrencyC' => 500,
|
||||
],
|
||||
2 => [
|
||||
'CurrencyC' => 460,
|
||||
'CurrencyC' => 610,
|
||||
],
|
||||
3 => [
|
||||
'CurrencyC' => 570,
|
||||
'CurrencyC' => 720,
|
||||
'CurrencyB' => 150,
|
||||
],
|
||||
4 => [
|
||||
'CurrencyC' => 680,
|
||||
'CurrencyC' => 830,
|
||||
'CurrencyB' => 200,
|
||||
],
|
||||
5 => [
|
||||
'CurrencyC' => 790,
|
||||
'CurrencyC' => 1000,
|
||||
'CurrencyB' => 250,
|
||||
],
|
||||
6 => [
|
||||
'CurrencyC' => 900,
|
||||
'CurrencyC' => 1110,
|
||||
'CurrencyB' => 300,
|
||||
],
|
||||
7 => [
|
||||
'CurrencyC' => 1010,
|
||||
'CurrencyA' => 220,
|
||||
'CurrencyC' => 1220,
|
||||
'CurrencyB' => 350,
|
||||
],
|
||||
8 => [
|
||||
'CurrencyC' => 1120,
|
||||
'CurrencyA' => 330,
|
||||
'CurrencyC' => 1330,
|
||||
'CurrencyB' => 400,
|
||||
],
|
||||
9 => [
|
||||
'CurrencyC' => 1230,
|
||||
'CurrencyA' => 440,
|
||||
'CurrencyC' => 1440,
|
||||
'CurrencyB' => 450,
|
||||
],
|
||||
10 => [
|
||||
'CurrencyC' => 1340,
|
||||
'CurrencyA' => 540,
|
||||
'CurrencyC' => 1550,
|
||||
'CurrencyB' => 500,
|
||||
],
|
||||
];
|
||||
|
||||
const VAMBRACE_COSTS = [
|
||||
1 => [
|
||||
'CurrencyC' => 350,
|
||||
'CurrencyC' => 500,
|
||||
],
|
||||
2 => [
|
||||
'CurrencyC' => 460,
|
||||
'CurrencyC' => 610,
|
||||
],
|
||||
3 => [
|
||||
'CurrencyC' => 570,
|
||||
'CurrencyC' => 720,
|
||||
'CurrencyB' => 150,
|
||||
],
|
||||
4 => [
|
||||
'CurrencyC' => 680,
|
||||
'CurrencyC' => 830,
|
||||
'CurrencyB' => 200,
|
||||
],
|
||||
5 => [
|
||||
'CurrencyC' => 790,
|
||||
'CurrencyC' => 1000,
|
||||
'CurrencyB' => 250,
|
||||
],
|
||||
6 => [
|
||||
'CurrencyC' => 900,
|
||||
'CurrencyC' => 1110,
|
||||
'CurrencyB' => 300,
|
||||
],
|
||||
7 => [
|
||||
'CurrencyC' => 1010,
|
||||
'CurrencyA' => 220,
|
||||
'CurrencyC' => 1220,
|
||||
'CurrencyB' => 350,
|
||||
],
|
||||
8 => [
|
||||
'CurrencyC' => 1120,
|
||||
'CurrencyA' => 330,
|
||||
'CurrencyC' => 1330,
|
||||
'CurrencyB' => 400,
|
||||
],
|
||||
9 => [
|
||||
'CurrencyC' => 1230,
|
||||
'CurrencyA' => 440,
|
||||
'CurrencyC' => 1440,
|
||||
'CurrencyB' => 450,
|
||||
],
|
||||
10 => [
|
||||
'CurrencyC' => 1340,
|
||||
'CurrencyA' => 540,
|
||||
'CurrencyC' => 1550,
|
||||
'CurrencyB' => 500,
|
||||
],
|
||||
];
|
||||
|
||||
const POWERS_COST = [
|
||||
1 => [
|
||||
'CurrencyC' => 350,
|
||||
'CurrencyC' => 500,
|
||||
],
|
||||
2 => [
|
||||
'CurrencyC' => 460,
|
||||
'CurrencyC' => 610,
|
||||
],
|
||||
3 => [
|
||||
'CurrencyC' => 570,
|
||||
'CurrencyC' => 720,
|
||||
'CurrencyB' => 150,
|
||||
],
|
||||
4 => [
|
||||
'CurrencyC' => 680,
|
||||
'CurrencyC' => 830,
|
||||
'CurrencyB' => 200,
|
||||
],
|
||||
5 => [
|
||||
'CurrencyC' => 790,
|
||||
'CurrencyC' => 1000,
|
||||
'CurrencyB' => 250,
|
||||
],
|
||||
6 => [
|
||||
'CurrencyC' => 900,
|
||||
'CurrencyC' => 1110,
|
||||
'CurrencyB' => 300,
|
||||
],
|
||||
7 => [
|
||||
'CurrencyC' => 1010,
|
||||
'CurrencyA' => 220,
|
||||
'CurrencyC' => 1220,
|
||||
'CurrencyB' => 350,
|
||||
],
|
||||
8 => [
|
||||
'CurrencyC' => 1120,
|
||||
'CurrencyA' => 330,
|
||||
'CurrencyC' => 1330,
|
||||
'CurrencyB' => 400,
|
||||
],
|
||||
9 => [
|
||||
'CurrencyC' => 1230,
|
||||
'CurrencyA' => 440,
|
||||
'CurrencyC' => 1440,
|
||||
'CurrencyB' => 450,
|
||||
],
|
||||
10 => [
|
||||
'CurrencyC' => 1340,
|
||||
'CurrencyA' => 540,
|
||||
'CurrencyC' => 1550,
|
||||
'CurrencyB' => 500,
|
||||
],
|
||||
];
|
||||
|
||||
const PERKS_COST = [
|
||||
1 => [
|
||||
'CurrencyA' => 450,
|
||||
'CurrencyB' => 450,
|
||||
],
|
||||
2 => [
|
||||
'CurrencyA' => 560,
|
||||
'CurrencyB' => 560,
|
||||
],
|
||||
3 => [
|
||||
'CurrencyA' => 670,
|
||||
'CurrencyB' => 310,
|
||||
'CurrencyA' => 100,
|
||||
'CurrencyB' => 670,
|
||||
],
|
||||
4 => [
|
||||
'CurrencyA' => 780,
|
||||
'CurrencyB' => 420,
|
||||
'CurrencyA' => 150,
|
||||
'CurrencyB' => 780,
|
||||
],
|
||||
5 => [
|
||||
'CurrencyA' => 890,
|
||||
'CurrencyB' => 530,
|
||||
'CurrencyA' => 200,
|
||||
'CurrencyB' => 890,
|
||||
],
|
||||
6 => [
|
||||
'CurrencyA' => 1000,
|
||||
'CurrencyB' => 640,
|
||||
'CurrencyA' => 250,
|
||||
'CurrencyB' => 1000,
|
||||
],
|
||||
7 => [
|
||||
'CurrencyA' => 1110,
|
||||
'CurrencyB' => 750,
|
||||
'CurrencyA' => 300,
|
||||
'CurrencyB' => 1110,
|
||||
],
|
||||
8 => [
|
||||
'CurrencyA' => 1220,
|
||||
'CurrencyB' => 860,
|
||||
'CurrencyA' => 350,
|
||||
'CurrencyB' => 1220,
|
||||
],
|
||||
9 => [
|
||||
'CurrencyA' => 1330,
|
||||
'CurrencyB' => 970,
|
||||
'CurrencyA' => 400,
|
||||
'CurrencyB' => 1330,
|
||||
],
|
||||
10 => [
|
||||
'CurrencyA' => 1440,
|
||||
'CurrencyB' => 1080,
|
||||
'CurrencyC' => 700,
|
||||
'CurrencyA' => 450,
|
||||
'CurrencyB' => 1440,
|
||||
'CurrencyC' => 1000,
|
||||
],
|
||||
];
|
||||
|
||||
|
|
@ -196,4 +208,4 @@ protected static function convertConfigToCatalog(array $config): array {
|
|||
|
||||
return $result;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
27
dist/app/Console/Commands/MatchmakingCleanup.php
vendored
27
dist/app/Console/Commands/MatchmakingCleanup.php
vendored
|
|
@ -9,15 +9,17 @@
|
|||
use Illuminate\Support\Carbon;
|
||||
use Illuminate\Support\Facades\Cache;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
use Illuminate\Support\Facades\Log;
|
||||
|
||||
class MatchmakingCleanup extends Command
|
||||
{
|
||||
// After how many minutes a queued palyer gets removed from the queue or from an open match in Minutes.
|
||||
const PLAYER_HEARTBEAT_TIMEOUT = 1;
|
||||
const PLAYER_HEARTBEAT_TIMEOUT = 0.5;
|
||||
|
||||
// After how many minutes a closed game gets deleted automatically when it hasn't been killed normally yet.
|
||||
const GAME_MAX_TIME = 15;
|
||||
const GAME_MAX_TIME = 11;
|
||||
|
||||
// In Seconds
|
||||
const CREATED_GAME_TIMEOUT = 30;
|
||||
|
||||
/**
|
||||
|
|
@ -39,20 +41,29 @@ class MatchmakingCleanup extends Command
|
|||
*/
|
||||
public function handle()
|
||||
{
|
||||
$log = Log::channel('matchmaking_cleanup');
|
||||
|
||||
// Delete queued players that haven't sent a queue resquest in the given period of time,
|
||||
// which means they crashed or closed the game without sending cancle.
|
||||
QueuedPlayer::where('updated_at', '<', Carbon::now()->subMinutes(static::PLAYER_HEARTBEAT_TIMEOUT))
|
||||
$cleanedQueuedPlayers = QueuedPlayer::where('updated_at', '<', Carbon::now()->subSeconds(static::PLAYER_HEARTBEAT_TIMEOUT * 60))
|
||||
->delete();
|
||||
|
||||
Game::where('status', '=', MatchStatus::Closed->value)
|
||||
->where('updated_at', '<', Carbon::now()->subMinutes(static::GAME_MAX_TIME))
|
||||
$log->info('Queued players: ' . json_encode($cleanedQueuedPlayers, JSON_PRETTY_PRINT));
|
||||
|
||||
$deletedClosedGames = Game::where('status', '=', MatchStatus::Closed->value)
|
||||
->where('updated_at', '<', Carbon::now()->subSeconds(static::GAME_MAX_TIME * 60))
|
||||
->delete();
|
||||
|
||||
$log->info('Deleted Closed games: ' . json_encode($deletedClosedGames, JSON_PRETTY_PRINT));
|
||||
|
||||
|
||||
// delete games where the hunter crashed on loading into the arena, leaving the game stuck at created
|
||||
Game::where('status', '=', MatchStatus::Created)
|
||||
$deletedCreatedGames = Game::where('status', '=', MatchStatus::Created)
|
||||
->where('created_at', '<', Carbon::now()->subSeconds(static::CREATED_GAME_TIMEOUT))
|
||||
->delete();
|
||||
|
||||
$log->info('Deleted Stuck Created games: ' . json_encode($deletedCreatedGames, JSON_PRETTY_PRINT));
|
||||
|
||||
// Select User Ids that joined a game and haven't sent the match request for a period of time
|
||||
// This porpably means they crashed or never joined the game in the first place.
|
||||
$usersToRemove = DB::table('game_user')->join('games', 'game_user.game_id', '=', 'games.id')
|
||||
|
|
@ -60,7 +71,7 @@ public function handle()
|
|||
MatchStatus::Created->value,
|
||||
MatchStatus::Opened->value,
|
||||
])
|
||||
->where('game_user.updated_at', '<', Carbon::now()->subMinutes(static::PLAYER_HEARTBEAT_TIMEOUT))
|
||||
->where('game_user.updated_at', '<', Carbon::now()->subSeconds(static::PLAYER_HEARTBEAT_TIMEOUT * 60))
|
||||
->get(['user_id']);
|
||||
|
||||
$userIdArray = [];
|
||||
|
|
@ -68,6 +79,8 @@ public function handle()
|
|||
$userIdArray[] = $user->user_id;
|
||||
}
|
||||
|
||||
$log->info('Deleting players that are in a mach, but didnt send a heartbeat: ' . json_encode($usersToRemove, JSON_PRETTY_PRINT));
|
||||
|
||||
// Delete a game if one of the to be removed players is the host.
|
||||
Game::whereIn('creator_user_id', $userIdArray)->delete();
|
||||
|
||||
|
|
|
|||
49
dist/app/Console/Commands/ProcessMatchmaking.php
vendored
49
dist/app/Console/Commands/ProcessMatchmaking.php
vendored
|
|
@ -10,6 +10,8 @@
|
|||
use App\Models\Game\Matchmaking\QueuedPlayer;
|
||||
use Illuminate\Console\Command;
|
||||
use Illuminate\Database\Eloquent\Collection;
|
||||
use Log;
|
||||
use Psr\Log\LoggerInterface;
|
||||
|
||||
class ProcessMatchmaking extends Command
|
||||
{
|
||||
|
|
@ -27,6 +29,8 @@ class ProcessMatchmaking extends Command
|
|||
*/
|
||||
protected $description = 'Command description';
|
||||
|
||||
protected static LoggerInterface $log;
|
||||
|
||||
/**
|
||||
* Execute the console command.
|
||||
*/
|
||||
|
|
@ -41,8 +45,10 @@ public function handle(): void
|
|||
->get();
|
||||
|
||||
// If there are no players in the queue, stop here.
|
||||
if($players->isEmpty())
|
||||
if($players->isEmpty()){
|
||||
static::log()->info('No Users in Queue, Stopping');
|
||||
return;
|
||||
}
|
||||
|
||||
$runners = new Collection();
|
||||
$hunters = new Collection();
|
||||
|
|
@ -55,8 +61,22 @@ public function handle(): void
|
|||
$runners->add($player);
|
||||
});
|
||||
|
||||
static::log()->info('Users in Queue:'. json_encode([
|
||||
'hunters' => $hunters->toArray(),
|
||||
'runners' => $runners->toArray(),
|
||||
],
|
||||
JSON_PRETTY_PRINT
|
||||
));
|
||||
|
||||
$this->tryFillOpenGames($hunters, $runners);
|
||||
|
||||
static::log()->info('Users in Queue after trying to fill:'. json_encode([
|
||||
'hunters' => $hunters->toArray(),
|
||||
'runners' => $runners->toArray(),
|
||||
],
|
||||
JSON_PRETTY_PRINT
|
||||
));
|
||||
|
||||
$playerCount = $this->getTotalPlayersCount($players);
|
||||
$availableMatchConfigs = MatchConfiguration::getAvailableMatchConfigs($playerCount->runners, $playerCount->hunters);
|
||||
|
||||
|
|
@ -84,6 +104,8 @@ public function handle(): void
|
|||
$newGame->matchConfiguration()->associate($selectedConfig);
|
||||
$newGame->save();
|
||||
|
||||
static::log()->info('New game created: '. json_encode($newGame->toArray(), JSON_PRETTY_PRINT));
|
||||
|
||||
foreach ($hunterGroupsSet as $groupSize) {
|
||||
$foundQueuedPlayerIndex = $hunters->search(function (QueuedPlayer $hunter) use ($groupSize) {
|
||||
return ($hunter->following_users_count + 1) === $groupSize;
|
||||
|
|
@ -108,7 +130,10 @@ protected function tryFillOpenGames(Collection|array &$hunters, Collection|array
|
|||
{
|
||||
$openGames = Game::where('status', '=', MatchStatus::Opened->value)->get();
|
||||
|
||||
static::log()->info('Found Open Matches:' . json_encode($openGames->toArray(),JSON_PRETTY_PRINT));
|
||||
|
||||
foreach ($openGames as $game) {
|
||||
static::log()->info("Game $game->id current players: ". json_encode($game->players));
|
||||
$neededPlayers = $game->remainingPlayerCount();
|
||||
|
||||
// game is full and doesn't need filling
|
||||
|
|
@ -116,6 +141,7 @@ protected function tryFillOpenGames(Collection|array &$hunters, Collection|array
|
|||
continue;
|
||||
|
||||
if($neededPlayers->hunters > 0) {
|
||||
static::log()->info("Game $game->id needs a hunter");
|
||||
$hunterGroupsSet = $this->determineMatchingPlayers($hunters, $neededPlayers->hunters);
|
||||
|
||||
// see if there are any group combinations possible to fill the game
|
||||
|
|
@ -124,6 +150,7 @@ protected function tryFillOpenGames(Collection|array &$hunters, Collection|array
|
|||
|
||||
// use biggest groups first
|
||||
rsort($hunterGroupsSet, SORT_NUMERIC);
|
||||
static::log()->info("Game $game->id Try fill game group sets: ". json_encode($runnerGroupSet));
|
||||
|
||||
foreach ($hunterGroupsSet as $groupSize) {
|
||||
$foundQueuedPlayerIndex = $hunters->search(function (QueuedPlayer $hunter) use ($groupSize) {
|
||||
|
|
@ -131,11 +158,18 @@ protected function tryFillOpenGames(Collection|array &$hunters, Collection|array
|
|||
});
|
||||
|
||||
$foundHunter = $hunters->pull($foundQueuedPlayerIndex);
|
||||
static::log()->info('Filled hunter slot on open game.'. json_encode([
|
||||
'hunter' => $foundHunter,
|
||||
'game' => $game,
|
||||
],
|
||||
JSON_PRETTY_PRINT)
|
||||
);
|
||||
$game->addQueuedPlayer($foundHunter);
|
||||
}
|
||||
}
|
||||
|
||||
if($neededPlayers->runners > 0) {
|
||||
static::log()->info("Game $game->id needs a runner");
|
||||
$runnerGroupSet = $this->determineMatchingPlayers($runners, $neededPlayers->runners);
|
||||
|
||||
// see if there are any group combinations possible to fill the game
|
||||
|
|
@ -145,12 +179,20 @@ protected function tryFillOpenGames(Collection|array &$hunters, Collection|array
|
|||
// use biggest groups first
|
||||
rsort($runnerGroupSet, SORT_NUMERIC);
|
||||
|
||||
static::log()->info("Game $game->id Try fill game group sets: ". json_encode($runnerGroupSet));
|
||||
|
||||
foreach ($runnerGroupSet as $groupSize) {
|
||||
$foundQueuedPlayerIndex = $runners->search(function (QueuedPlayer $runner) use ($groupSize) {
|
||||
return ($runner->following_users_count + 1) === $groupSize;
|
||||
});
|
||||
|
||||
$foundRunner = $runners->pull($foundQueuedPlayerIndex);
|
||||
static::log()->info('Filled runner slot on open game.'. json_encode([
|
||||
'runner' => $foundRunner,
|
||||
'game' => $game,
|
||||
],
|
||||
JSON_PRETTY_PRINT)
|
||||
);
|
||||
$game->addQueuedPlayer($foundRunner);
|
||||
}
|
||||
}
|
||||
|
|
@ -189,4 +231,9 @@ private function determineMatchingPlayers(Collection &$queuedPlayers, int $targe
|
|||
return $result;
|
||||
return false;
|
||||
}
|
||||
|
||||
public static function log(): LoggerInterface
|
||||
{
|
||||
return static::$log ?? static::$log = Log::channel('matchmaking');
|
||||
}
|
||||
}
|
||||
|
|
|
|||
4
dist/app/Console/Kernel.php
vendored
4
dist/app/Console/Kernel.php
vendored
|
|
@ -13,8 +13,8 @@ class Kernel extends ConsoleKernel
|
|||
protected function schedule(Schedule $schedule): void
|
||||
{
|
||||
$schedule->command('model:prune')->daily();
|
||||
$schedule->command('matchmaking:process')->everyTenSeconds();
|
||||
$schedule->command('matchmaking:cleanup')->everyTwentySeconds();
|
||||
$schedule->command('matchmaking:process')->everyFiveSeconds();
|
||||
$schedule->command('matchmaking:cleanup')->everyFifteenSeconds();
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@
|
|||
namespace App\Http\Controllers\Api\Catalog;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Models\Admin\Versioning\CurrentCatalogVersion;
|
||||
use App\Models\Game\CatalogItem;
|
||||
use Auth;
|
||||
use Illuminate\Database\Eloquent\Collection;
|
||||
|
|
@ -16,6 +17,9 @@ class CatalogController extends Controller
|
|||
|
||||
public function getCatalog(string $catalogVersion): string
|
||||
{
|
||||
if($catalogVersion !== CurrentCatalogVersion::get()?->catalogVersion)
|
||||
abort(404);
|
||||
|
||||
return Storage::disk('local')->get('/catalog/catalog.json');
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -15,6 +15,7 @@
|
|||
use App\Http\Responses\Api\Matchmaking\QueueResponse;
|
||||
use App\Models\Admin\Archive\ArchivedGame;
|
||||
use App\Models\Admin\Archive\ArchivedPlayerProgression;
|
||||
use App\Models\Admin\Versioning\CurrentGameVersion;
|
||||
use App\Models\Game\Matchmaking\Game;
|
||||
use App\Models\Game\Matchmaking\QueuedPlayer;
|
||||
use App\Models\User\User;
|
||||
|
|
@ -37,6 +38,9 @@ public function getRegions()
|
|||
|
||||
public function queue(QueueRequest $request)
|
||||
{
|
||||
if($request->category !== CurrentGameVersion::get()?->gameVersion)
|
||||
abort(403, 'Too old mod version');
|
||||
|
||||
if($request->checkOnly)
|
||||
return json_encode($this->checkQueueStatus($request));
|
||||
|
||||
|
|
@ -334,6 +338,11 @@ protected function addPlayerToQueue(QueueRequest $request)
|
|||
}
|
||||
}
|
||||
|
||||
// Delete any active matches where the newly queued user is the creator.
|
||||
Game::where('creator_user_id', '=', $user->id)
|
||||
->whereIn('status', [MatchStatus::Opened, MatchStatus::Created])
|
||||
->delete();
|
||||
|
||||
$queued = QueuedPlayer::firstOrCreate(['user_id' => $user->id]);
|
||||
$queued->leader()->disassociate();
|
||||
$queued->side = $request->side;
|
||||
|
|
|
|||
|
|
@ -7,6 +7,7 @@
|
|||
use App\Http\Controllers\Controller;
|
||||
use App\Http\Responses\Api\Statistics\OnlinePlayersResponse;
|
||||
use App\Models\Admin\LauncherMessage;
|
||||
use App\Models\Admin\Versioning\LauncherVersion;
|
||||
use App\Models\Game\Matchmaking\Game;
|
||||
use App\Models\Game\Matchmaking\QueuedPlayer;
|
||||
use DB;
|
||||
|
|
@ -37,7 +38,7 @@ public function getOnlinePlayers() {
|
|||
}
|
||||
|
||||
public function getLauncherVersion(): ?string {
|
||||
return json_encode(config('app.launcher_version'));
|
||||
return json_encode(LauncherVersion::get()?->launcherVersion);
|
||||
}
|
||||
|
||||
public function getLauncherMessage(): ?string {
|
||||
|
|
|
|||
|
|
@ -4,6 +4,9 @@
|
|||
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Http\Responses\TexResponse;
|
||||
use App\Models\Admin\Versioning\CurrentCatalogVersion;
|
||||
use App\Models\Admin\Versioning\CurrentContentVersion;
|
||||
use App\Models\Admin\Versioning\CurrentGameVersion;
|
||||
use Illuminate\Support\Facades\Request;
|
||||
use Illuminate\Support\Str;
|
||||
|
||||
|
|
@ -37,15 +40,10 @@ public function getLatestClientData()
|
|||
|
||||
public function getLatestContentVersion(string $version)
|
||||
{
|
||||
$supportedVersion = match($version) {
|
||||
'0' => 'dev030',
|
||||
'2.0' => 'dev020',
|
||||
'2.2' => 'te-23ebf96c-27498-ue4-7172a3f5',
|
||||
'2.5' => 'te-40131b9e-33193-ue4-fbccc218',
|
||||
'3.0' => 'dev030',
|
||||
default => 'te-18f25613-36778-ue4-374f864b'
|
||||
};
|
||||
$currentVersion = CurrentContentVersion::get()?->contentVersion;
|
||||
if($currentVersion === $version)
|
||||
return ['LatestSupportedVersion' => CurrentCatalogVersion::get()?->catalogVersion];
|
||||
|
||||
return ['LatestSupportedVersion' => $supportedVersion];
|
||||
abort(404);
|
||||
}
|
||||
}
|
||||
|
|
@ -30,6 +30,7 @@ final public static function getAllTools(): array
|
|||
return [
|
||||
GameNewsController::class,
|
||||
FileManagerController::class,
|
||||
VersioningController::class,
|
||||
LauncherMessageController::class,
|
||||
LogViewerController::class,
|
||||
UsersController::class,
|
||||
|
|
|
|||
66
dist/app/Http/Controllers/Web/Admin/Tools/VersioningController.php
vendored
Normal file
66
dist/app/Http/Controllers/Web/Admin/Tools/VersioningController.php
vendored
Normal file
|
|
@ -0,0 +1,66 @@
|
|||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Web\Admin\Tools;
|
||||
|
||||
use App\Enums\Auth\Permissions;
|
||||
use App\Http\Requests\Api\Admin\Tools\SaveLauncherMessageRequest;
|
||||
use App\Http\Requests\Api\Admin\Tools\SaveVersioningRequest;
|
||||
use App\Models\Admin\LauncherMessage;
|
||||
use App\Models\Admin\Versioning\CurrentCatalogVersion;
|
||||
use App\Models\Admin\Versioning\CurrentContentVersion;
|
||||
use App\Models\Admin\Versioning\CurrentGameVersion;
|
||||
use App\Models\Admin\Versioning\LauncherVersion;
|
||||
use Session;
|
||||
|
||||
class VersioningController extends AdminToolController
|
||||
{
|
||||
protected static string $name = 'Versioning';
|
||||
|
||||
protected static string $description = 'Manage the Launcher & Game Versions.';
|
||||
protected static string $iconComponent = 'icons.arrow-left-right';
|
||||
|
||||
protected static Permissions $neededPermission = Permissions::FILE_UPLOAD;
|
||||
|
||||
public function index()
|
||||
{
|
||||
return view('admin.tools.versioning', [
|
||||
'message' => LauncherMessage::getMessage(),
|
||||
]);
|
||||
}
|
||||
|
||||
public function save(SaveVersioningRequest $request) {
|
||||
$errorMessage = '';
|
||||
$successMessage= '';
|
||||
|
||||
$success = (new CurrentGameVersion($request->gameVersion))->save();
|
||||
if($success === true)
|
||||
$successMessage .= "Game version saved\n\n";
|
||||
else
|
||||
$errorMessage .= "Game version saving failed: ' . $success\n\n";
|
||||
|
||||
$success = (new CurrentContentVersion($request->contentVersion))->save();
|
||||
if($success === true)
|
||||
$successMessage .= "Content version saved\n\n";
|
||||
else
|
||||
$errorMessage .= "Content version saving failed: ' . $success\n\n";
|
||||
|
||||
(new CurrentCatalogVersion($request->catalogVersion))->save();
|
||||
if($success === true)
|
||||
$successMessage .= "Catalog version saved\n\n";
|
||||
else
|
||||
$errorMessage .= "Catalog version saving failed: ' . $success\n\n";
|
||||
|
||||
(new LauncherVersion($request->launcherVersion))->save();
|
||||
if($success === true)
|
||||
$successMessage .= "Launcher version saved\n\n";
|
||||
else
|
||||
$errorMessage .= "Launcher version saving failed: ' . $success\n\n";
|
||||
|
||||
if($success !== '')
|
||||
Session::flash('alert-success', nl2br(trim($successMessage)));
|
||||
if($errorMessage !== '')
|
||||
Session::flash('alert-error', nl2br(trim($errorMessage)));
|
||||
|
||||
return back();
|
||||
}
|
||||
}
|
||||
24
dist/app/Http/Middleware/AccessLogger.php
vendored
24
dist/app/Http/Middleware/AccessLogger.php
vendored
|
|
@ -2,6 +2,7 @@
|
|||
|
||||
namespace App\Http\Middleware;
|
||||
|
||||
use App\Models\User\User;
|
||||
use Closure;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
|
|
@ -64,21 +65,21 @@ public static function getSessionLogConfig(): LoggerInterface
|
|||
{
|
||||
$user = Auth::user();
|
||||
if (!Session::has('sessionLogConfig')) {
|
||||
$username = $user?->last_known_username ?? '';
|
||||
static::cleanupUsername($username);
|
||||
$logConfig = [
|
||||
'driver' => 'single',
|
||||
'path' => storage_path('logs/sessions/' . $username . '_' . Str::substr(Session::getId(), 0, 12) . '.log')
|
||||
'path' => static::getSessionLogPath($user),
|
||||
];
|
||||
Session::put('sessionLogConfig', $logConfig);
|
||||
} else
|
||||
$logConfig = Session::get('sessionLogConfig');
|
||||
|
||||
if($user !== null && str_starts_with(basename($logConfig['path']), '_')) {
|
||||
if($user !== null && str_starts_with(basename($logConfig['path']), '__UNKNOWN')) {
|
||||
$oldPath = $logConfig['path'];
|
||||
$username = $user->last_known_username;
|
||||
static::cleanupUsername($username);
|
||||
$newPath = storage_path('logs/sessions/'.$username.basename($oldPath));
|
||||
$newPath = static::getSessionLogPath($user);
|
||||
|
||||
if(!file_exists(dirname($newPath)))
|
||||
mkdir(dirname($newPath), 0777, true);
|
||||
|
||||
rename($oldPath, $newPath);
|
||||
$logConfig['path'] = $newPath;
|
||||
Session::put('sessionLogConfig', $logConfig);
|
||||
|
|
@ -87,6 +88,15 @@ public static function getSessionLogConfig(): LoggerInterface
|
|||
return Log::build($logConfig);
|
||||
}
|
||||
|
||||
public static function getSessionLogPath(?User $user): string {
|
||||
$username = $user?->last_known_username ?? '__UNKNOWN';
|
||||
static::cleanupUsername($username);
|
||||
$userid = $user?->id ?? 'no-id';
|
||||
$session = Str::substr(Session::getId(), 0, 12);
|
||||
|
||||
return storage_path("logs/sessions/{$username}_$userid/{$username}_$session.log");
|
||||
}
|
||||
|
||||
public static function cleanupUsername(string &$username): void
|
||||
{
|
||||
$username = preg_replace('/[^\w\-\.]/', '', $username);
|
||||
|
|
|
|||
39
dist/app/Http/Requests/Api/Admin/Tools/SaveVersioningRequest.php
vendored
Normal file
39
dist/app/Http/Requests/Api/Admin/Tools/SaveVersioningRequest.php
vendored
Normal file
|
|
@ -0,0 +1,39 @@
|
|||
<?php
|
||||
|
||||
namespace App\Http\Requests\Api\Admin\Tools;
|
||||
|
||||
use Illuminate\Foundation\Http\FormRequest;
|
||||
|
||||
class SaveVersioningRequest extends FormRequest
|
||||
{
|
||||
public string $launcherVersion;
|
||||
|
||||
public string $gameVersion;
|
||||
|
||||
public string $contentVersion;
|
||||
|
||||
public string $catalogVersion;
|
||||
|
||||
/**
|
||||
* Get the validation rules that apply to the request.
|
||||
*
|
||||
* @return array<string, \Illuminate\Contracts\Validation\ValidationRule|array<mixed>|string>
|
||||
*/
|
||||
public function rules(): array
|
||||
{
|
||||
return [
|
||||
'launcherVersion' => 'required|string',
|
||||
'gameVersion' => 'required|string',
|
||||
'contentVersion' => 'required|string',
|
||||
'catalogVersion' => 'required|string',
|
||||
];
|
||||
}
|
||||
|
||||
protected function passedValidation()
|
||||
{
|
||||
$this->launcherVersion = $this->input('launcherVersion');
|
||||
$this->gameVersion = $this->input('gameVersion');
|
||||
$this->contentVersion = $this->input('contentVersion');
|
||||
$this->catalogVersion = $this->input('catalogVersion');
|
||||
}
|
||||
}
|
||||
41
dist/app/Models/AbstractFileBasedModel.php
vendored
Normal file
41
dist/app/Models/AbstractFileBasedModel.php
vendored
Normal file
|
|
@ -0,0 +1,41 @@
|
|||
<?php
|
||||
|
||||
namespace App\Models;
|
||||
|
||||
use Illuminate\Filesystem\FilesystemAdapter;
|
||||
use Illuminate\Support\Facades\Cache;
|
||||
use Illuminate\Support\Facades\Storage;
|
||||
|
||||
abstract class AbstractFileBasedModel
|
||||
{
|
||||
const FILE_NAME = 'file-name';
|
||||
|
||||
const CACHE_DURATION = 3600;
|
||||
|
||||
protected static ?FilesystemAdapter $disk = null;
|
||||
|
||||
public function save(): bool|string {
|
||||
$success = static::getDisk()->put(static::FILE_NAME, serialize($this));
|
||||
|
||||
if($success === true)
|
||||
Cache::forget(static::FILE_NAME);
|
||||
|
||||
return $success;
|
||||
}
|
||||
|
||||
public static function get(): ?static {
|
||||
return Cache::remember(
|
||||
static::FILE_NAME,
|
||||
static::CACHE_DURATION,
|
||||
function () {
|
||||
$data = static::getDisk()->get(static::FILE_NAME);
|
||||
|
||||
return $data === null ? null : unserialize($data);
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
protected static function getDisk(): FilesystemAdapter {
|
||||
return static::$disk ?? static::$disk = Storage::disk('local');
|
||||
}
|
||||
}
|
||||
17
dist/app/Models/Admin/Versioning/CurrentCatalogVersion.php
vendored
Normal file
17
dist/app/Models/Admin/Versioning/CurrentCatalogVersion.php
vendored
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
<?php
|
||||
|
||||
namespace App\Models\Admin\Versioning;
|
||||
|
||||
use App\Models\AbstractFileBasedModel;
|
||||
|
||||
class CurrentCatalogVersion extends AbstractFileBasedModel
|
||||
{
|
||||
const FILE_NAME = 'current-catalog-version';
|
||||
|
||||
const CACHE_DURATION = 86400; // 1 Day
|
||||
|
||||
public function __construct(
|
||||
public string $catalogVersion
|
||||
)
|
||||
{}
|
||||
}
|
||||
17
dist/app/Models/Admin/Versioning/CurrentContentVersion.php
vendored
Normal file
17
dist/app/Models/Admin/Versioning/CurrentContentVersion.php
vendored
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
<?php
|
||||
|
||||
namespace App\Models\Admin\Versioning;
|
||||
|
||||
use App\Models\AbstractFileBasedModel;
|
||||
|
||||
class CurrentContentVersion extends AbstractFileBasedModel
|
||||
{
|
||||
const FILE_NAME = 'current-content-version';
|
||||
|
||||
const CACHE_DURATION = 86400; // 1 Day
|
||||
|
||||
public function __construct(
|
||||
public string $contentVersion,
|
||||
)
|
||||
{}
|
||||
}
|
||||
17
dist/app/Models/Admin/Versioning/CurrentGameVersion.php
vendored
Normal file
17
dist/app/Models/Admin/Versioning/CurrentGameVersion.php
vendored
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
<?php
|
||||
|
||||
namespace App\Models\Admin\Versioning;
|
||||
|
||||
use App\Models\AbstractFileBasedModel;
|
||||
|
||||
class CurrentGameVersion extends AbstractFileBasedModel
|
||||
{
|
||||
const FILE_NAME = 'current-game-version';
|
||||
|
||||
const CACHE_DURATION = 86400; // 1 Day
|
||||
|
||||
public function __construct(
|
||||
public string $gameVersion,
|
||||
)
|
||||
{}
|
||||
}
|
||||
17
dist/app/Models/Admin/Versioning/LauncherVersion.php
vendored
Normal file
17
dist/app/Models/Admin/Versioning/LauncherVersion.php
vendored
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
<?php
|
||||
|
||||
namespace App\Models\Admin\Versioning;
|
||||
|
||||
use App\Models\AbstractFileBasedModel;
|
||||
|
||||
class LauncherVersion extends AbstractFileBasedModel
|
||||
{
|
||||
const FILE_NAME = 'current-launcher-version';
|
||||
|
||||
const CACHE_DURATION = 86400; // 1 Day
|
||||
|
||||
public function __construct(
|
||||
public string $launcherVersion,
|
||||
)
|
||||
{}
|
||||
}
|
||||
1
dist/app/Models/User/PlayerData.php
vendored
1
dist/app/Models/User/PlayerData.php
vendored
|
|
@ -103,7 +103,6 @@ protected static function booted(): void
|
|||
Characters::Ghost->value,
|
||||
Characters::Sawbones->value,
|
||||
Characters::Inquisitor->value,
|
||||
Characters::Mass->value,
|
||||
]
|
||||
]);
|
||||
});
|
||||
|
|
|
|||
2
dist/config/app.php
vendored
2
dist/config/app.php
vendored
|
|
@ -126,8 +126,6 @@
|
|||
|
||||
'cipher' => 'AES-256-CBC',
|
||||
|
||||
'launcher_version' => env('LAUNCHER_VERSION', 'null'),
|
||||
|
||||
'roles_allowed_to_play' => env('ROLES_ALLOWED_TO_PLAY', '') === '' ? null : explode(',', env('ROLES_ALLOWED_TO_PLAY', 'null')),
|
||||
|
||||
/*
|
||||
|
|
|
|||
7
dist/config/logging.php
vendored
7
dist/config/logging.php
vendored
|
|
@ -121,6 +121,13 @@
|
|||
'replace_placeholders' => true,
|
||||
],
|
||||
|
||||
'matchmaking_cleanup' => [
|
||||
'driver' => 'daily',
|
||||
'path' => storage_path('logs/matchmaking_cleanup/cleanup.log'),
|
||||
'level' => 'info',
|
||||
'replace_placeholders' => true,
|
||||
],
|
||||
|
||||
'daily' => [
|
||||
'driver' => 'daily',
|
||||
'path' => storage_path('logs/laravel.log'),
|
||||
|
|
|
|||
|
|
@ -54,6 +54,7 @@ public function run(): void
|
|||
$userBansPerm,
|
||||
$chatReportsPerm,
|
||||
$playerReportsPerm,
|
||||
$viewMaintenanceMode,
|
||||
)->save();
|
||||
|
||||
$playtesterRole->givePermissionTo(
|
||||
|
|
|
|||
|
|
@ -84,7 +84,6 @@ class ItemSelector {
|
|||
addCurrencyButton.on('click', () => {
|
||||
let type = $(element).find('.add-currency-type').val();
|
||||
let amount = $(element).find('.add-currency-amount').val();
|
||||
console.log(amount);
|
||||
|
||||
// Check if we have selected something and if it exists already
|
||||
if(amount === '' || selector.rewardItemContainer.find('input[value="' + type + '"]').length > 0)
|
||||
|
|
|
|||
2
dist/resources/js/admin/tools/mailer.js
vendored
2
dist/resources/js/admin/tools/mailer.js
vendored
|
|
@ -5,8 +5,6 @@ $('#users').prop('disabled', $('#allUsers').is(':checked'));
|
|||
$('#allUsers').on('change', (event) => {
|
||||
let elem = $(event.target);
|
||||
|
||||
console.log(elem);
|
||||
console.log(elem.prop('checked'));
|
||||
$('#users').prop('disabled', elem.is(':checked'));
|
||||
});
|
||||
|
||||
|
|
|
|||
70
dist/resources/views/admin/tools/versioning.blade.php
vendored
Normal file
70
dist/resources/views/admin/tools/versioning.blade.php
vendored
Normal file
|
|
@ -0,0 +1,70 @@
|
|||
@props([
|
||||
'message' => null
|
||||
])
|
||||
|
||||
@php
|
||||
use App\Models\Admin\LauncherMessage;
|
||||
use App\Models\Admin\Versioning\CurrentCatalogVersion;
|
||||
use App\Models\Admin\Versioning\CurrentContentVersion;
|
||||
use App\Models\Admin\Versioning\CurrentGameVersion;
|
||||
use App\Models\Admin\Versioning\LauncherVersion;
|
||||
|
||||
/** @var ?LauncherMessage $message */
|
||||
@endphp
|
||||
|
||||
<x-layouts.admin>
|
||||
<div class="container mx-auto border bg-slate-800 border-slate-500 rounded-xl p-4 my-6">
|
||||
<form action="{{ route('versioning.save') }}" method="post">
|
||||
@csrf
|
||||
<div class="flex flex-col gap-4">
|
||||
<label for="message" class="headline">
|
||||
Launcher Version
|
||||
</label>
|
||||
|
||||
<x-inputs.text
|
||||
id="launcherVersion"
|
||||
name="launcherVersion"
|
||||
value="{{ LauncherVersion::get()?->launcherVersion }}"
|
||||
required
|
||||
/>
|
||||
|
||||
<label for="message" class="headline mt-4">
|
||||
Game Version
|
||||
</label>
|
||||
|
||||
<x-inputs.text
|
||||
id="gameVersion"
|
||||
name="gameVersion"
|
||||
value="{{ CurrentGameVersion::get()?->gameVersion }}"
|
||||
required
|
||||
/>
|
||||
|
||||
<label for="message" class="headline mt-4">
|
||||
Content Version
|
||||
</label>
|
||||
|
||||
<x-inputs.text
|
||||
id="contentVersion"
|
||||
name="contentVersion"
|
||||
value="{{ CurrentContentVersion::get()?->contentVersion }}"
|
||||
required
|
||||
/>
|
||||
|
||||
<label for="message" class="headline mt-4">
|
||||
Catalog Version
|
||||
</label>
|
||||
|
||||
<x-inputs.text
|
||||
id="catalogVersion"
|
||||
name="catalogVersion"
|
||||
value="{{ CurrentCatalogVersion::get()?->catalogVersion }}"
|
||||
required
|
||||
/>
|
||||
</div>
|
||||
|
||||
<x-inputs.button class="save mt-8">
|
||||
Save
|
||||
</x-inputs.button>
|
||||
</form>
|
||||
</div>
|
||||
</x-layouts.admin>
|
||||
3
dist/resources/views/components/icons/arrow-left-right.blade.php
vendored
Normal file
3
dist/resources/views/components/icons/arrow-left-right.blade.php
vendored
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" {{ $attributes }}>
|
||||
<path stroke-linecap="round" stroke-linejoin="round" d="M7.5 21 3 16.5m0 0L7.5 12M3 16.5h13.5m0-13.5L21 7.5m0 0L16.5 12M21 7.5H7.5" />
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 278 B |
|
|
@ -17,7 +17,6 @@
|
|||
init() {
|
||||
let localString = localStorage.getItem('sidebarStatus') ?? {{ $initalOpen ? 'true' : 'false' }};
|
||||
this.open = localString === 'true';
|
||||
console.log(this.open);
|
||||
}
|
||||
}"
|
||||
|
||||
|
|
|
|||
82
dist/resources/views/web/home.blade.php
vendored
82
dist/resources/views/web/home.blade.php
vendored
|
|
@ -45,54 +45,48 @@ class="my-4 !px-10 !py-8 !bg-web-main hover:scale-110 !transition-transform !bor
|
|||
|
||||
<x-web.accordeon headline="How can I play Deathgarden: Rebirth?" class="w-full my-2">
|
||||
<x-web.text>
|
||||
To play Deathgarden: Rebirth, you'll need to download the official launcher, which ensures you
|
||||
have the latest updates. For more information, click <a href="{{ route('download') }}" class="weblink">
|
||||
here
|
||||
</a>.
|
||||
To play Deathgarden: Rebirth, you will need to download the official launcher.
|
||||
The launcher will ensure that you have the latest patches required to connect to the servers. For more information, click <a href="{{ route('download') }}" class="weblink">here.
|
||||
</a>
|
||||
</x-web.text>
|
||||
</x-web.accordeon>
|
||||
|
||||
<x-web.accordeon headline="Does it cost money to play Deathgarden: Rebirth?" class="w-full my-2">
|
||||
<x-web.accordeon headline="Does it cost any money to play Deathgarden: Rebirth?" class="w-full my-2">
|
||||
<x-web.text>
|
||||
No, the game and the Rebirth mod are completely free!
|
||||
Deathgarden: Rebirth is a completely <span class="font-bold">*free-to-play*</span> experience.
|
||||
</x-web.text>
|
||||
</x-web.accordeon>
|
||||
|
||||
<x-web.accordeon headline="Why aren't my characters loading, and why am I getting an "Unknown Matchmaking Error"?" class="w-full my-2">
|
||||
<x-web.accordeon headline="Why aren’t my characters loading, and why am I getting an “Unknown Matchmaking Error”?" class="w-full my-2">
|
||||
<x-web.text>
|
||||
If your game is not in sync with the latest update, certain features, like the catalog (including
|
||||
characters, prices, and other content), will not load correctly.
|
||||
If you do not have the latest patch installed, certain features like the item catalog (which includes characters, prices, and other content) will not load or display correctly.
|
||||
</x-web.text>
|
||||
<x-web.text>
|
||||
Additionally, you may encounter matchmaking errors that prevent you from joining or playing games until your mod is updated through the Launcher.
|
||||
Additionally, you will be unable to join or create any matches until your version is updated through the official Deathgarden: Rebirth launcher.
|
||||
</x-web.text>
|
||||
</x-web.accordeon>
|
||||
|
||||
<x-web.accordeon headline="Is my progress getting restored from the past?" class="w-full my-2">
|
||||
<x-web.accordeon headline="Will my progress be restored from the original game?" class="w-full my-2">
|
||||
<x-web.text>
|
||||
No. We can’t restore the progress from the past / the other backend. Every player starts from zero.
|
||||
Due to the immense amount of changes made to the character kits and currency gains, all player accounts have been reset. We do not have access to the old playerdata from when the original game was live.
|
||||
</x-web.text>
|
||||
</x-web.accordeon>
|
||||
|
||||
<x-web.accordeon headline="Can I still launch the game through Steam?" class="w-full my-2">
|
||||
<x-web.accordeon headline="Do I have to use the Deathgarden: Rebirth launcher, or can I start the game through Steam?" class="w-full my-2">
|
||||
<x-web.text>
|
||||
No, you can no longer launch Deathgarden directly through Steam.
|
||||
To play the game, you must start it through the dedicated launcher.
|
||||
</x-web.text>
|
||||
<x-web.text>
|
||||
This change ensures that you have access to all the latest updates, features, and content.
|
||||
Players are unable to launch Deathgarden directly through Steam. In order to play the game, players must use the launcher to gain access to the latest updates, features, and content in-game.
|
||||
|
||||
</x-web.text>
|
||||
</x-web.accordeon>
|
||||
|
||||
<x-web.accordeon headline="What personal information is saved?" class="w-full my-2">
|
||||
<x-web.accordeon headline="Is any of my personal information saved?" class="w-full my-2">
|
||||
<x-web.text>
|
||||
To launch Deathgarden: Rebirth, we need to create a user account in our database using some
|
||||
public information from your Steam account.
|
||||
</x-web.text>
|
||||
<x-web.text class="my-2">
|
||||
We only save your SteamID64, Steam profile
|
||||
picture, and current username. This information is stored on a secure server with restricted
|
||||
access.
|
||||
To launch Deathgarden: Rebirth, players are required to make a user account in our database using public information tied to their Steam account.
|
||||
Only the SteamID64, Steam profile picture, and current username are saved. This information is stored on a secure server with restricted access.
|
||||
</x-web.text>
|
||||
<x-web.text>
|
||||
If you'd like to delete your data and player account, please email us at
|
||||
|
|
@ -102,48 +96,46 @@ class="my-4 !px-10 !py-8 !bg-web-main hover:scale-110 !transition-transform !bor
|
|||
</x-web.text>
|
||||
</x-web.accordeon>
|
||||
|
||||
<x-web.accordeon headline="This is cool! Can we donate money to the project?" class="w-full my-2">
|
||||
<x-web.accordeon headline="Can we donate money to the project?" class="w-full my-2">
|
||||
<x-web.text>
|
||||
Due to legal restrictions, we cannot accept any donations. However, you can support us by
|
||||
sharing the project with your friends and others!
|
||||
Due to legal restrictions, we cannot accept any donations at this time.
|
||||
You can show your support by sharing the project with your friends or on social media!
|
||||
</x-web.text>
|
||||
</x-web.accordeon>
|
||||
|
||||
<x-web.accordeon headline="I’m a programmer. Can I view and submit updates to the backend?" class="w-full my-2">
|
||||
<x-web.accordeon headline="I’m a programmer, can I have access or submit updates to the backend code?" class="w-full my-2">
|
||||
<x-web.text>
|
||||
The backend has a public repository on GitHub. If you find any bugs or want to contribute to
|
||||
certain features, you can submit a pull request.
|
||||
The backend has a public repository on GitHub.
|
||||
If you find any bugs or want to contribute to certain features, you can submit a pull request.
|
||||
|
||||
</x-web.text>
|
||||
<x-web.text>
|
||||
Our programming team will review it, and if your
|
||||
contribution is added, you’ll be credited on our credits page!
|
||||
Once the request is submitted, our team will review and contact you if the contribution is fit to be added into the game.
|
||||
Successful contributions will be credited on our website's credits pages!
|
||||
</x-web.text>
|
||||
</x-web.accordeon>
|
||||
|
||||
<x-web.accordeon headline="I’m an Unreal Engine mod creator. Can I create mods and use them in-game?" class="w-full my-2">
|
||||
<x-web.accordeon headline="I’m an Unreal Engine mod creator, can I create mods and use them in-game?" class="w-full my-2">
|
||||
<x-web.text>
|
||||
Using self-created mods is against our Terms of Service. However, if you have cool ideas, you
|
||||
can submit a detailed description of your mod and its functionality.
|
||||
Using self-created mods is against our Terms of Service and may result in temporary/permanent account suspension.
|
||||
However, if you would like to submit your mod for review, our team may add it to our official supported mod list.
|
||||
</x-web.text>
|
||||
<x-web.text>
|
||||
Once our mod creation
|
||||
team reviews it, we may add it to the official supported mod list, with you credited as the
|
||||
creator!
|
||||
Successful mods will be credited to their respective creators!
|
||||
</x-web.text>
|
||||
</x-web.accordeon>
|
||||
|
||||
<x-web.accordeon headline="I’m a content creator. Can I support the game?" class="w-full my-2">
|
||||
<x-web.accordeon headline="I’m a content creator, how can I support the game?" class="w-full my-2">
|
||||
<x-web.text>
|
||||
That’s awesome! We’re always looking for content creators to promote the game through their
|
||||
social media or streaming channels.
|
||||
Thank you for your interest!
|
||||
We are always looking for content creators to promote the game through their social media or streaming platforms. <br>
|
||||
</x-web.text>
|
||||
<x-web.text>
|
||||
Please send a brief introduction and your social/streaming
|
||||
links to <a href="mailto:contact@playdeathgarden.live" class="weblink">
|
||||
contact@playdeathgarden.live
|
||||
</a>.
|
||||
Our content creator partners receive in-game goodies
|
||||
and occasional promotion in the in-game news section!
|
||||
If you would like to be a Partnered Creator, please send a brief introduction along with your social/streaming links to <a href="mailto:contact@playdeathgarden.live" class="weblink">contact@playdeathgarden.live.
|
||||
|
||||
</a>
|
||||
Our team will review and contact you if your application has been approved.
|
||||
Partnered Creators will receive in-game goodies and occasional promotions in the in-game news section!
|
||||
</x-web.text>
|
||||
</x-web.accordeon>
|
||||
</div>
|
||||
|
|
|
|||
70
dist/resources/views/web/known-issues.blade.php
vendored
70
dist/resources/views/web/known-issues.blade.php
vendored
|
|
@ -14,65 +14,73 @@
|
|||
The game can’t connect to the First-Party Platform.
|
||||
</x-web.text>
|
||||
<x-web.text class="font-semibold">
|
||||
Note: Look <a href="{{ route('download') }}#faq" class="weblink">here</a> for more information to fix this issue!
|
||||
Note: Look <a href="{{ route('download') }}#faq" class="weblink">here</a> for more information on how to fix this issue!
|
||||
</x-web.text>
|
||||
</li>
|
||||
<li>
|
||||
<li >
|
||||
<x-web.text>
|
||||
The Players loadout is not getting loaded and is getting “Unknown Matchmaking Error”.
|
||||
[Monitoring - Very Rare] Matchmaking may crash and players receiving "Unknnown Matchmaking Errors"
|
||||
</x-web.text>
|
||||
<x-web.text class="font-semibold">
|
||||
Note: Look at the <a href="{{ route('homepage') }}#faq" class="weblink">FAQ</a> to find out how to fix this issue.
|
||||
Note: When this happens, cancel the matchmaking, wait a minute and try again. We will monitor the Matchmaking and deploy fixes if needed.
|
||||
</x-web.text>
|
||||
</li>
|
||||
<li>
|
||||
<li>
|
||||
<x-web.text>
|
||||
Game may crash when swapping to fast Characters / Loadouts (not fixable)
|
||||
</x-web.text>
|
||||
</li>
|
||||
<li>
|
||||
<x-web.text>
|
||||
The Veteran have different FoV’s when swapping weapons (not fixable)
|
||||
</x-web.text>
|
||||
</li>
|
||||
<li>
|
||||
<x-web.text>
|
||||
After spending currency, the items widget not getting updated to show you that you don’t
|
||||
have enough currency to buy the item. The player will get an “Purchase Error” (UI not fixable)
|
||||
</x-web.text>
|
||||
</li>
|
||||
<li>
|
||||
<x-web.text>
|
||||
The Tally Screen shows no progression progress. (not fixable)
|
||||
The character loadouts are not loading / I am receiving an “Unknown Matchmaking Error”.
|
||||
</x-web.text>
|
||||
<x-web.text class="font-semibold">
|
||||
Note: Progression is still getting granted!
|
||||
Note: Look at the <a href="{{ route('homepage') }}#faq" class="weblink">FAQ</a> for more information on how to fix this issue!
|
||||
</x-web.text>
|
||||
</li>
|
||||
<li>
|
||||
<li>
|
||||
<x-web.text>
|
||||
Hexagons may not get loaded for the Scavengers. (not fixable)
|
||||
[Not fixable] The Tally Screen displays incorrect/zero progression progress.
|
||||
</x-web.text>
|
||||
<x-web.text class="font-semibold">
|
||||
Note: This happens when you have a slow PC / poor connection to the Hunter.
|
||||
Note: Progression is still granted as intended!
|
||||
</x-web.text>
|
||||
</li>
|
||||
<li>
|
||||
<x-web.text>
|
||||
[Not fixable] Hexagons/Tiles are not loading once in-game.
|
||||
</x-web.text>
|
||||
<x-web.text class="font-semibold">
|
||||
Note: This happens when your PC is suffering from poor performance or your latency to the Hunter is too high.
|
||||
</x-web.text>
|
||||
</li>
|
||||
<li>
|
||||
<x-web.text>
|
||||
Players may get stuck in certain UI elements (Very rare. Not fixable)
|
||||
[Not Fixable] Certain Blood Needles may display the incorrect amount of blood needed to complete the objective.
|
||||
</x-web.text>
|
||||
<x-web.text class="font-semibold">
|
||||
Note: Note: The correct amount of blood is still displayed in the top-left corner of the heads-up display (HUD).
|
||||
</x-web.text>
|
||||
</li>
|
||||
<li>
|
||||
<x-web.text>
|
||||
The Blood Needle UI-Element shows “100” charges needed and doesn't update the value. (not fixable)
|
||||
[Not Fixable] Game may crash when swapping too quickly between characters or loadouts.
|
||||
</x-web.text>
|
||||
</li>
|
||||
<li>
|
||||
<x-web.text>
|
||||
[Not Fixable] The Veteran has different field of views (FoV) when swapping between weapons.
|
||||
</x-web.text>
|
||||
</li>
|
||||
<li>
|
||||
<x-web.text>
|
||||
[Not Fixable] After spending currency, the item icons may not update and display that you do not have enough currency to purchase any remaining items. Instead the player will receive a “Purchase Error”.
|
||||
</x-web.text>
|
||||
</li>
|
||||
<li>
|
||||
<x-web.text>
|
||||
[Not Fixable] Players may occasionally get stuck in certain UI elements.
|
||||
</x-web.text>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
<x-web.text class="mt-4 ">
|
||||
If you find any other issues, please share them on our
|
||||
<a href="https://discord.gg/7MqudBGyyp" target="_blank" class="weblink"> Discord </a>
|
||||
in the dedicated bug report section or send us an email to
|
||||
If you find any other issues, please share them in the #dg-rebirth-bug-reports channel of our <a href="https://discord.gg/7MqudBGyyp" target="_blank" class="weblink"> Discord </a> server or send us an email to
|
||||
<a href="mailto:contact@playdeathgarden.live" target="_blank" class="weblink">
|
||||
contact@playdeathgarden.live
|
||||
</a> with more information.
|
||||
|
|
|
|||
4
dist/routes/admin.php
vendored
4
dist/routes/admin.php
vendored
|
|
@ -10,6 +10,7 @@
|
|||
use App\Http\Controllers\Web\Admin\Tools\LogViewerController;
|
||||
use App\Http\Controllers\Web\Admin\Tools\PlayerReportsController;
|
||||
use App\Http\Controllers\Web\Admin\Tools\UsersController;
|
||||
use App\Http\Controllers\Web\Admin\Tools\VersioningController;
|
||||
|
||||
Route::redirect('', 'admin/dashboard');
|
||||
Route::redirect('logs', 'log-viewer')->name(LogViewerController::class);
|
||||
|
|
@ -48,6 +49,9 @@
|
|||
Route::get('launcher-message', [LauncherMessageController::class, 'index'])->name(LauncherMessageController::class);
|
||||
Route::post('launcher-message', [LauncherMessageController::class, 'saveMessage'])->name('launcherMessage.save');
|
||||
|
||||
Route::get('versioning', [VersioningController::class, 'index'])->name(VersioningController::class);
|
||||
Route::post('versioning', [VersioningController::class, 'save'])->name('versioning.save');
|
||||
|
||||
Route::fallback(function () {
|
||||
return redirect(route('admin.dashboard'));
|
||||
});
|
||||
|
|
|
|||
115707
dist/storage/app/catalog/catalog.json
vendored
115707
dist/storage/app/catalog/catalog.json
vendored
File diff suppressed because it is too large
Load Diff
BIN
dist/storage/app/public/news/banners/inGame_large/Discord_Large.png
vendored
Normal file
BIN
dist/storage/app/public/news/banners/inGame_large/Discord_Large.png
vendored
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 719 KiB |
BIN
dist/storage/app/public/news/banners/inGame_small/Discord_Small.png
vendored
Normal file
BIN
dist/storage/app/public/news/banners/inGame_small/Discord_Small.png
vendored
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 49 KiB |
Loading…
Reference in New Issue
Block a user