Compare commits

...

1818 Commits

Author SHA1 Message Date
FatBoy-DOTC 40bae67443 fixed mob damage defense and ATR 1 year ago
FatBoy-DOTC 1cf1d731c4 added = to range checks and converted speed to float 1 year ago
MagicBot 24215e21c9 Sanity check for deleted vendors 1 year ago
MagicBot 3accd779b9 Sanity check for deleted vendors 1 year ago
MagicBot 1d673ca2e5 Sanity check for deleted vendors 1 year ago
MagicBot c935ea1986 Project reformat. 1 year ago
MagicBot 678ccafd3c Unused variable removed. 1 year ago
MagicBot 31292785a5 templateHash used in this context. 1 year ago
MagicBot cdc4717033 Update to resources message 1 year ago
MagicBot 35c8ac0289 Update to resources message 1 year ago
MagicBot f5cc4a3290 Update to resource type 1 year ago
FatBoy-DOTC 74bd7ddb8b attack speed calculation handled correctly 1 year ago
FatBoy-DOTC 4feb95131c early exit for pets attacking a null target 1 year ago
FatBoy-DOTC d22ba7b89d early exit for pets attacking a null target 1 year ago
FatBoy-DOTC 722fd14be5 character should now play swing animation everytime he tried to swing regardless of early exits 1 year ago
FatBoy-DOTC 12e73d59c7 apply weapon powers before early exit for defense of passives 1 year ago
FatBoy-DOTC 5c70f15064 check player agro map for key before tryign to assign to it 1 year ago
MagicBot 8ca641f353 Return 0 for null table entry. 1 year ago
FatBoy-DOTC 0f9500a0d7 swing animation for miss 1 year ago
FatBoy-DOTC 0d51afb737 pet damage adjustment 1 year ago
FatBoy-DOTC 60e331de1a animation work 1 year ago
FatBoy-DOTC 4a554b0d61 animation work 1 year ago
FatBoy-DOTC 3f3d85fb36 animation work 1 year ago
MagicBot d2d655a839 Null check for vendor workorder lookup. 1 year ago
FatBoy-DOTC 0096b8051c updated range chack and hitbox calculations 1 year ago
FatBoy-DOTC 86102c8933 updated range chack and hitbox calculations 1 year ago
FatBoy-DOTC f06e2c2e5c traveller open gate fix 1 year ago
FatBoy-DOTC 74b425e567 casting fix for lore rulesets 1 year ago
FatBoy-DOTC 22c8cdcf65 fixed pet attack and null weapon combat issue 1 year ago
FatBoy-DOTC 7ed026f088 machine gun combat fixed 1 year ago
FatBoy-DOTC 232c381e96 early exit for attack timer 1 year ago
FatBoy-DOTC 69ea460d5e early exit for attack timer 1 year ago
FatBoy-DOTC cbe9a30590 corrected convention for naming auto attack job 1 year ago
FatBoy-DOTC 1bbbc396bd handle destory or derank for buildings 1 year ago
FatBoy-DOTC 8601f9fcd5 special animation case for Siege Bow 1 year ago
FatBoy-DOTC 7f029fd0e2 invalid range check for ranged characters attacking a building 1 year ago
FatBoy-DOTC cc7188b404 invalid range check for ranged characters attacking a building 1 year ago
FatBoy-DOTC aa0621bb02 bane live processing with vulnerable buildings 1 year ago
FatBoy-DOTC b4ff1a3f7f swing animation lookup 1 year ago
FatBoy-DOTC 9d6b1dcf60 swing animation lookup 1 year ago
FatBoy-DOTC 6e123ecb86 swing animation lookup 1 year ago
FatBoy-DOTC 2b8b9464af swing animation lookup 1 year ago
FatBoy-DOTC cd8099b42f noob island guard aggro 1 year ago
FatBoy-DOTC 2cdcba47a5 noob island guard aggro 1 year ago
FatBoy-DOTC b7b4623c75 noob island guard aggro 1 year ago
FatBoy-DOTC 2d958b929d noob island guard aggro 1 year ago
FatBoy-DOTC e8f0e9f5de noob island guard aggro 1 year ago
FatBoy-DOTC 03f0f3fcf0 noob island guard aggro 1 year ago
FatBoy-DOTC 65db64d3df null spam fix for hamlet guards 1 year ago
FatBoy-DOTC 5a25958aa5 cannot teleport od repledge to perdition or bastion 1 year ago
FatBoy-DOTC 1f8c5495ab repledge work 1 year ago
FatBoy-DOTC a54aa03ade can always teleport and repledge to your own nation 1 year ago
FatBoy-DOTC e82445fcd2 teleport and repledge inside your own nation 1 year ago
FatBoy-DOTC 9e9716fc88 Lore Teleport list and repledge list construction 1 year ago
FatBoy-DOTC 4f01da368c Lore Guard AI Aggro 1 year ago
FatBoy-DOTC 93c4103f61 Lore Mob AI Aggro 1 year ago
MagicBot f8180a7000 Removed custom exception candy 1 year ago
MagicBot 634f1478ce Removed custom exception candy 1 year ago
MagicBot 7335946c10 Removed 4 squigglies 1 year ago
MagicBot fb4eea67ed Comment cleanup 1 year ago
MagicBot 96ba17f67a DispatchManager is now an official manager singleton. 1 year ago
MagicBot ff17cacda7 magicvalue update 1 year ago
MagicBot 4d6ce2b155 Update to value in item rs constructor 1 year ago
MagicBot b2c9331899 Unused variables removed 1 year ago
MagicBot 1cb01b1cce Unused field removed 1 year ago
MagicBot e79fd0c3b4 Unused method removed 1 year ago
MagicBot 6dd1d97be5 Comment cleanup 1 year ago
MagicBot 805034e30b Comment cleanup 1 year ago
MagicBot 9646964698 TODO touchup 1 year ago
MagicBot 9ffaf96017 recalc magic value 1 year ago
MagicBot ce98f80b85 recalc magic value 1 year ago
MagicBot f683201086 recalc magic value 1 year ago
MagicBot 4796f7042d Bugfix in update_value 1 year ago
MagicBot 94ff3cf222 New rolling duration method moved to manager singleton. 1 year ago
MagicBot 174be35cac Comment cleanup 1 year ago
MagicBot ba266e506a Comment cleanup 1 year ago
MagicBot 4123157b92 Comment cleanup 1 year ago
MagicBot 7bb9aeacf7 Comment cleanup 1 year ago
MagicBot 1eda55a3f1 Serialization update 1 year ago
MagicBot f670e3143c Serialization update 1 year ago
MagicBot d55b57f7d0 Flag testing 1 year ago
MagicBot ea2f6f4593 Remove from dbManager cache 1 year ago
MagicBot b592f050c2 convention is == false 1 year ago
MagicBot 25f522c539 Make sure no memory leaks 1 year ago
MagicBot e89404abda json and string methods updated 1 year ago
MagicBot ad2cde9d85 Atomic instead of volatile to match counter 1 year ago
MagicBot ba94fabfb8 Atomic instead of volatile to match counter 1 year ago
MagicBot f7ab38e9a8 Comment updated 1 year ago
MagicBot 0d97fa614b Equals and hash overrides for workObject 1 year ago
MagicBot 6878916874 Update to workOrder cleanup 1 year ago
MagicBot c545468f26 Update to workOrder cleanup 1 year ago
MagicBot 7993fb22d2 Thread consistency for these 1 year ago
MagicBot 19bdb89c0f Unused variable removed 1 year ago
MagicBot 6b0b0cc357 Workorder set to completed when redeeding. 1 year ago
MagicBot bc1ae9a2c9 Minor cleanup 1 year ago
MagicBot 408e3a45ca Workorders cleared with hireling removal. 1 year ago
MagicBot 52e0b5be4d Minor cleanup 1 year ago
MagicBot 161335da26 Comment cleanup 1 year ago
MagicBot 7f1bc2a4b7 Update to workOrder loading. 1 year ago
MagicBot e37a4fab38 Update to workOrder loading. 1 year ago
MagicBot 2760a45d2f Early exit moved to run() 1 year ago
MagicBot 77673fde5f completed workOrders handling update 1 year ago
MagicBot 5fd4e5a088 Early exit for no avail slots 1 year ago
MagicBot b01b62ac3d Withdraw logic cleanup 1 year ago
MagicBot 7193ff7698 Withdraw logic cleanup 1 year ago
MagicBot dd72e20ff9 Withdraw logic cleanup 1 year ago
MagicBot f465ea4045 Withdraw logic cleanup 1 year ago
MagicBot 973dfc94f7 Withdraw logic cleanup 1 year ago
MagicBot a5255bcf11 Simplify total cost calc 1 year ago
MagicBot ec35228de9 Beardstyle bugfix 1 year ago
MagicBot 47a93f6545 sql parm count fix 1 year ago
MagicBot 0cff40070b Realm derived not stored 1 year ago
FatBoy-DOTC 3f3fb53675 hamlet guard aggro 1 year ago
FatBoy-DOTC b198dbcc09 Added ./setrace command 1 year ago
FatBoy-DOTC 60b8843563 Added ./setrace command 1 year ago
MagicBot eff8be91d6 Comment cleanup 1 year ago
MagicBot 55e2d3fb5e Class cleanup 1 year ago
MagicBot a6f417d9cc Comment cleanup 1 year ago
MagicBot 7b1b09dc40 Comment cleanup 1 year ago
MagicBot 5724608005 Class cleanup 1 year ago
MagicBot f5d410f868 typo fixed contextually 1 year ago
MagicBot a5c1422534 unused variable removed 1 year ago
MagicBot 6df0e5625c Class cleanup. 1 year ago
MagicBot 5de932b095 Comment updated. 1 year ago
MagicBot db7d606b36 Devcmd removed. 1 year ago
FatBoy-DOTC 30d302c43e Lore Guards use charter restrictions when aggroing 1 year ago
FatBoy-DOTC 95cfc43956 debug option added in canJoin for charter type 1 year ago
FatBoy-DOTC 7c8d78581e debug option added in canJoin for charter type 1 year ago
FatBoy-DOTC 6f4a9f7d1a debug option added in canJoin for charter type 1 year ago
FatBoy-DOTC 7a5569ab89 return guild charter type 1 year ago
FatBoy-DOTC 042f7c675f cleanup dbEffectsResourceCostHandler 1 year ago
MagicBot 3c4d8239db Charter template id is stored not ordinal 1 year ago
MagicBot 4f20cc9aba Comment update. 1 year ago
MagicBot 34812694b7 Comparison fix 1 year ago
MagicBot 0bbbcbaa81 Removed squiggles 1 year ago
FatBoy-DOTC 72172b9f05 GuildType lookup work 1 year ago
MagicBot 1876e09b48 method for populating lookup table 1 year ago
MagicBot 31c83f2bb5 upgraded protection for variables 1 year ago
MagicBot 065aa34652 Update to type constructor 1 year ago
FatBoy-DOTC 8bbaae418d fix for player guild checks 1 year ago
FatBoy-DOTC 10db850de4 replace == "LORE" with .equals("LORE") 1 year ago
FatBoy-DOTC 753c3686ea Added MB Dev Notes 1 year ago
FatBoy-DOTC f4bd928796 Lore check for telport and repledge 1 year ago
MagicBot 916a12a434 City realm id lookup not db load 1 year ago
MagicBot 3a8521683b Bootstrap logging info update 1 year ago
MagicBot df4d5a654f Comment cleanup 1 year ago
MagicBot 7fb5d7d23d Comment cleanup 1 year ago
MagicBot a7c9a15405 Comment cleanup 1 year ago
MagicBot b3b115e9ba Comment cleanup 1 year ago
MagicBot 1b5a64d8fc Minor cleanup 1 year ago
MagicBot 01f0e25e08 Minor cleanup 1 year ago
MagicBot 0782814c8e Update to junk handling 1 year ago
MagicBot 111ba02289 Merge remote-tracking branch 'refs/remotes/origin/feature-workorder2.8' into magicbox-1.5.2.1 1 year ago
MagicBot f09a7d4d12 Unused method removed 1 year ago
MagicBot e1e72b71bd Better name for context 1 year ago
MagicBot 4dce2e2aa2 Comment cleanup 1 year ago
MagicBot 743c897254 total_to_produce updated when slot removed from workOrder 1 year ago
MagicBot f134f71695 Squiggly removal 1 year ago
MagicBot 91016dd53c Cleanup in bane handling 1 year ago
FatBoy-DOTC 39d04188b4 cleanup old rune handler in ObjectActionMsgHandler 1 year ago
FatBoy-DOTC c99433c9bd missing case for type RUNE in ObjectActionMsgHandler 1 year ago
FatBoy-DOTC 6cc94e076d promoting was attempting to use players promotion class (which is null) 1 year ago
MagicBot f294e48140 Null check added for city 1 year ago
MagicBot c25f325f87 Null check added for city 1 year ago
MagicBot ac0c11cb46 Comment cleanup 1 year ago
MagicBot 79e86e0a6f Comment cleanup 1 year ago
MagicBot 46f35f0b10 Minor update to keyset() usages 1 year ago
MagicBot 1b20201f8d MB Dev note added 1 year ago
MagicBot 0d744d900c MB Dev note added 1 year ago
MagicBot 9a8e0bd5c9 Comment cleanup 1 year ago
MagicBot 6b6be80fa8 Comment cleanup 1 year ago
MagicBot c2152432ce Comment cleanup 1 year ago
MagicBot 9348852e2c Comment cleanup 1 year ago
MagicBot 4b67f97ded MB Dev Notes added 1 year ago
MagicBot 2a9463be4e camelCase 1 year ago
MagicBot 67bc13dcde MB Dev Notes added to critical classes. 1 year ago
MagicBot 7d6407fbf5 comment cleanup 1 year ago
MagicBot 7b6f5f752b comment cleanup 1 year ago
MagicBot ef43211103 comment cleanup 1 year ago
MagicBot b312904548 comment cleanup 1 year ago
MagicBot 3b1db51a5e comment cleanup 1 year ago
MagicBot 17011de201 comment cleanup 1 year ago
MagicBot f03edf5c5d comment cleanup 1 year ago
MagicBot 320f06e1db comment cleanup 1 year ago
MagicBot 78480ca3dd comment cleanup 1 year ago
MagicBot 2e5f8701df comment cleanup 1 year ago
MagicBot 3a514dc771 comment cleanup 1 year ago
MagicBot c0b93ff809 comment cleanup 1 year ago
MagicBot 31037c9324 comment cleanup 1 year ago
MagicBot 2464deb3f3 comment cleanup 1 year ago
MagicBot dbf42bfbef json fix in constructor 1 year ago
MagicBot e80cdc192d Update to withdraw calc 1 year ago
MagicBot 9850b54981 Comment cleanup 1 year ago
MagicBot a3a30f3f8a Comment cleanup 1 year ago
MagicBot 4d0018b176 Comment cleanup 1 year ago
MagicBot a9dcac0ad7 Comment cleanup 1 year ago
MagicBot adaa521bf5 Comment cleanup 1 year ago
MagicBot 0fe04041f6 Workorder method moved to workorder 1 year ago
MagicBot 9dd2e1d5e5 Comment cleanup 1 year ago
MagicBot 81d6054982 Debit building first then warehouse 1 year ago
MagicBot ff2e381999 Update to validation order. 1 year ago
MagicBot e1d43ce0d0 Expand scope of try block. 1 year ago
MagicBot a906e30931 Setting containertype. 1 year ago
MagicBot 6a17f93e41 Setting containertype. 1 year ago
MagicBot 1edd4d681b Update to protection check. 1 year ago
MagicBot 911698a7e3 Method moved to WorkOrder 1 year ago
MagicBot 4fa646ce94 New costmap data implemented 1 year ago
MagicBot bcb40fecbb Loading effect costmap data at bootsrap 1 year ago
MagicBot 147b9a42c4 Costmap data generated; removed from bootstrap 1 year ago
MagicBot 81f86ceca9 Code written to refactor db call out of effect costs. 1 year ago
MagicBot e2dbc19adc Code written to refactor db call out of effect costs. 1 year ago
MagicBot d590511035 Code written to refactor db call out of effect costs. 1 year ago
MagicBot f48b9f10e1 Code written to refactor db call out of effect costs. 1 year ago
MagicBot 2607962038 Minor cleanup 1 year ago
MagicBot 4e05c2ab74 Warehouse debit work 1 year ago
MagicBot 6cbcef00aa Serialization update 1 year ago
MagicBot a76fd9f319 Update to identify assignment 1 year ago
MagicBot 8d7d3227cb Update to submit logging 1 year ago
MagicBot 9102fe1f6c Update to single item rolling config 1 year ago
MagicBot d999d00755 Rebuild of ./createitem 1 year ago
MagicBot a7e953ac20 Rebuild of ./createitem 1 year ago
MagicBot 46b4c110e5 Rebuild of ./createitem 1 year ago
MagicBot 30787f7ae2 Remnants of old garbage system removed 1 year ago
MagicBot 9de1afa0fd Comment update 1 year ago
MagicBot 9efba13b03 Simplified lambda function 1 year ago
MagicBot d7ac838b6d Simplified lambda function 1 year ago
MagicBot 50a169149f Resubmit unfinished workorders 1 year ago
MagicBot de65f6bcef Bugfix in pre/suf parsing 1 year ago
MagicBot 2adaff8f66 workOrderID added to output 1 year ago
MagicBot e8032f65d1 Loading workorders at bootstrap 1 year ago
MagicBot e710cf0930 Loading workorders at bootstrap 1 year ago
MagicBot 286a76b1de More workorder loading work 1 year ago
MagicBot 73e30062ea Method to load workorders on bootstrap 1 year ago
MagicBot 7300af9073 Method to load workorders on bootstrap 1 year ago
MagicBot 2a2b61bc0f Method to load workorders on bootstrap 1 year ago
MagicBot 89c3eb4d47 New workorder constructor 1 year ago
MagicBot c03f464043 More workorder db work 1 year ago
MagicBot 7b7492b5cc Workokrders updates as they cycle 1 year ago
MagicBot 684a5459b3 Worker saved upon submit 1 year ago
MagicBot bb5904552a Worker saved upon submit 1 year ago
MagicBot fb9d65b54d Method to save workorders to disk created 1 year ago
MagicBot a53848334f id is key not saved in json 1 year ago
MagicBot 19c6cd76a9 Warehouse updated for org.json 1 year ago
MagicBot d92b1c7473 Helpee and groupee parsing 1 year ago
MagicBot 07a5de2c57 Helpee and groupee parsing 1 year ago
MagicBot d0a837783e Update to sparsetype parsing 1 year ago
MagicBot 576f4af433 Update to sparsetype parsing 1 year ago
MagicBot 8ce81b144a Update to sparsetype parsing 1 year ago
MagicBot fcbb9b0cf1 Update to sparsetype parsing 1 year ago
MagicBot 4f115291eb No some are longs 1 year ago
MagicBot 79079e200a Bitvectors use int not long for mb 1 year ago
MagicBot dbab8f66da Migration to org.json 1 year ago
MagicBot 1d847d781b Migration to org.json 1 year ago
MagicBot 7604b7b07f Migration to org.json 1 year ago
MagicBot 8818282341 Migration to org.json 1 year ago
MagicBot 475ccaff0c Migration to org.json 1 year ago
MagicBot ba47b30673 Migration to org.json 1 year ago
MagicBot d557e30716 Workorder to json work 1 year ago
MagicBot 6499a16cc2 Workorder to json work 1 year ago
MagicBot a851d9a6ec Workorder to json work 1 year ago
MagicBot c09ae5d32f Workorder to json work 1 year ago
MagicBot 27d140f703 Junk or completion removes slot from workOrder 1 year ago
MagicBot 41aefa4a48 Comment cleanup 1 year ago
MagicBot 4723eb4bf2 Serialization update. 1 year ago
MagicBot 28c6953c3d Serialization update. 1 year ago
MagicBot 746a95e7d5 Overflow calc updated 1 year ago
MagicBot 0e7336b8c6 Concurrency update 1 year ago
MagicBot 11013bcd07 Reformat for easier debugging 1 year ago
MagicBot 63c7fb08e0 Concurrency update 1 year ago
MagicBot 6f39767fb4 Concurrency update 1 year ago
MagicBot 2de1f78f22 Slot tracking update 1 year ago
MagicBot 98b73d978a Slot tracking update 1 year ago
MagicBot 5a62361edd Slot tracking update 1 year ago
MagicBot 127f80054f Slot tracking update 1 year ago
FatBoy-DOTC 41b1718df1 use delay for attacks for players 1 year ago
MagicBot d3b1cf9928 Comment update 1 year ago
MagicBot 7f8c297ae2 City check moved outside of validation 1 year ago
FatBoy-DOTC 979cd70d65 update class type when promoting 1 year ago
FatBoy-DOTC 35945f7542 equipping bug 1 year ago
FatBoy-DOTC 84233ecdd6 use of proper animations 1 year ago
FatBoy-DOTC 4d601f13a0 Merge remote-tracking branch 'origin/feature-workorder2.7' into feature-workorder2.7 1 year ago
FatBoy-DOTC 1911de0757 random animation for weapon powers 1 year ago
MagicBot e00871324e Float fix 1 year ago
MagicBot 0286b63a8e Class reformat 1 year ago
FatBoy-DOTC a84c712110 random animation for weapon powers 1 year ago
FatBoy-DOTC 8e93e82526 random animation for weapon powers 1 year ago
FatBoy-DOTC 67bf8c2b11 animation combat cleanup 1 year ago
FatBoy-DOTC b8dbcb62db early exit for combat cycle 1 year ago
FatBoy-DOTC bb5d257ae8 early exit for out of stam when attacking 1 year ago
MagicBot 2391bd6606 Unused method removed 1 year ago
MagicBot dc83bee227 File reformat 1 year ago
MagicBot 3ff7414fb4 Rework of item forge method collection usage 1 year ago
MagicBot 1e5790e6b9 Rework of item forge method collection usage 1 year ago
MagicBot 364fb40e0b junk, complete and produce wrapped with same lock as warehouse. 1 year ago
MagicBot 6a72a83076 Must be in a building and in city 1 year ago
MagicBot a83008ea4f Removed bypass in prep for db load. 1 year ago
MagicBot 89f672e0b0 json constructor for workOrders 1 year ago
MagicBot cc324777d1 Warehouse withdraws are persisted 1 year ago
MagicBot 692e7ec416 Comment cleanup 1 year ago
MagicBot 6cba850af5 Class cleanup and comment fixes 1 year ago
MagicBot f3e266cf46 Class cleanup 1 year ago
MagicBot ac347db0c8 debitWorkOrderCost method created 1 year ago
MagicBot 70e6756651 debitWorkOrderCost method created 1 year ago
MagicBot a46205b67b Uses mainline cache for virtual items 1 year ago
MagicBot 80aa413ea8 Methods moved to itemmanger 1 year ago
MagicBot 98d03620bc Persisting effects in complete item 1 year ago
MagicBot cca4521c93 Item prefix and suffix applied 1 year ago
MagicBot a859150a20 Item prefix and suffix applied 1 year ago
MagicBot d64bd193d8 Item prefix and suffix applied 1 year ago
MagicBot d0df406236 Item prefix and suffix applied 1 year ago
MagicBot 92c8430031 Item prefix and suffix applied 1 year ago
MagicBot 99671697ba Item prefix and suffix applied 1 year ago
MagicBot 171c79dcf6 Item prefix and suffix applied 1 year ago
MagicBot 726d471e95 Item prefix and suffix applied 1 year ago
MagicBot c0ed59f14f Item prefix and suffix applied 1 year ago
MagicBot c19c516669 Item prefix and suffix applied 1 year ago
MagicBot 589ea1bce8 Item prefix and suffix applied 1 year ago
MagicBot c133b2da5c Item prefix and suffix applied 1 year ago
MagicBot 24a05543c8 Item prefix and suffix applied 1 year ago
MagicBot 90271890d7 Item prefix and suffix applied 1 year ago
MagicBot 225dc2af18 Item prefix and suffix applied 1 year ago
MagicBot 501c68b1e3 Item prefix and suffix applied 1 year ago
MagicBot 13a75fcd5d Item prefix and suffix applied 1 year ago
MagicBot 1bc3609cbe Unused method removed 1 year ago
MagicBot 2c87e48178 Work on adding modifiers 1 year ago
MagicBot ac10b78d68 Work on adding modifiers 1 year ago
MagicBot 4549688ad7 Update to modifier returned 1 year ago
MagicBot 0a6e40eb74 removed for testing 1 year ago
MagicBot b1b635380a Completed items are identified 1 year ago
MagicBot 7309fdc62f Method moved to Warehouse 1 year ago
MagicBot 412ef0f642 Do not remove until complete pressed 1 year ago
MagicBot 3071cb5847 Apply effects to item 1 year ago
MagicBot 1a7f63ce05 lastNegativeId moved to ItemManager 1 year ago
MagicBot c03c1f4057 Update to item effect serialization 1 year ago
MagicBot 264094924b Proper accounting for workOrder removal post completion 1 year ago
MagicBot 0ec2b436de Window refresh update 1 year ago
MagicBot f36239a67e Window refresh update 1 year ago
MagicBot b673ca9636 Window refresh update 1 year ago
MagicBot cba7ee4066 Window refresh update 1 year ago
MagicBot 0f2b46b898 Window refresh update 1 year ago
MagicBot d76b670b75 Window refresh update 1 year ago
MagicBot ca71079106 Window refresh update 1 year ago
MagicBot adf686974d Window refresh update 1 year ago
MagicBot 6ecaa4dc0c Window refresh update 1 year ago
MagicBot c1939075cd Window refresh update 1 year ago
MagicBot 18587e281f refactored out collection 1 year ago
MagicBot dbd4c5d246 Method added to replace collection 1 year ago
MagicBot 919b29c38f Deduct cost from warehouse 1 year ago
MagicBot 01113fc3a6 Configure before setting cost 1 year ago
MagicBot b9627e1643 Class cleanup 1 year ago
MagicBot e6d83ca36c Mobloot vestiges removed 1 year ago
MagicBot a522eeb823 Update to completion 1 year ago
MagicBot 8d1561cd29 Update to completion 1 year ago
MagicBot d7ba42f4da Update to batch completion 1 year ago
MagicBot 689fc142d0 Persisted items belong in vendor inventory not virtual ones. 1 year ago
MagicBot 8df0c838cc More completion work 1 year ago
MagicBot f9825900cc More completion work 1 year ago
MagicBot 1a27a54926 Not right place for this perhaps 1 year ago
MagicBot 1e003c28ab Completion work 1 year ago
MagicBot 8cada05424 Completion time reset before new batch 1 year ago
MagicBot dda98318eb Work on virtual item handling 1 year ago
MagicBot 6e95ae5245 Variable naming update 1 year ago
MagicBot a4a9a26ac4 Complete is complete 1 year ago
MagicBot 93aec63f78 File reformat 1 year ago
MagicBot 9804a0fc89 Debug strings were removed 1 year ago
MagicBot 3484802a24 Comment cleanup 1 year ago
MagicBot 946a150db1 Comment cleanup 1 year ago
MagicBot 197df90a21 Comment cleanup 1 year ago
MagicBot a944f7342a All rolls treated equally 1 year ago
MagicBot 7c855afbe7 All runs set to complete 1 year ago
MagicBot d42bc3520d Single runs are set to complete. Multiple item runs are dumped to inventory. 1 year ago
MagicBot a86d90ef41 serialization work 1 year ago
MagicBot c5dfb3ad81 Serialization work 1 year ago
MagicBot e879c588dc More window work. 1 year ago
MagicBot 862e75cd4c Serialization updated. Collection adds slot. 1 year ago
MagicBot d47643e730 Error logging added 1 year ago
MagicBot 0727361933 More window work 1 year ago
MagicBot c1b0bcedf4 Remove workorder when completed 1 year ago
MagicBot 315c2abfb9 Remove workorder when completed 1 year ago
MagicBot b0c0c507e5 More window work 1 year ago
MagicBot 12b6e41432 Fixing Junk functionality 1 year ago
MagicBot a2484f94eb Bugfix in forge contains 1 year ago
MagicBot b4824c69b8 Window work 1 year ago
MagicBot 03fb180f02 Set variable on submit 1 year ago
MagicBot 250afe3bba Serialization update 1 year ago
MagicBot b80b3a81b5 Message sent early 1 year ago
MagicBot cd8b910262 Clear collections last 1 year ago
MagicBot d007850afe Clear collections last 1 year ago
MagicBot 7f3873b63f fail fast on null 1 year ago
MagicBot 963df074a4 More persist work 1 year ago
MagicBot 5505d7bc61 Items are persisted and moved to vendor inventory 1 year ago
MagicBot 0c9ec31fa3 Window serialization work 1 year ago
MagicBot d71c65702d Window serialization work 1 year ago
MagicBot a4af39cab7 Window serialization work 1 year ago
MagicBot 9ba697c310 Persist item work 1 year ago
MagicBot 2b670ea53a Persist item work 1 year ago
MagicBot 5ade37f7a4 Persist item work 1 year ago
MagicBot 1be657d3ef Persist item work 1 year ago
MagicBot 9dbefcd830 Unused variable removed 1 year ago
MagicBot e1a9ddae89 forged items are persisted 1 year ago
MagicBot 2690c3212b forged items are persisted 1 year ago
MagicBot aac7e46ae8 forged items are persisted 1 year ago
MagicBot a16bef418b forged items are persisted 1 year ago
MagicBot 8b4b3b971a forged items are persisted 1 year ago
MagicBot 692ee51608 forged items are persisted 1 year ago
MagicBot d5bd500f39 forged items are persisted 1 year ago
MagicBot e195d86fb6 Serialization update 1 year ago
MagicBot 114aeb9f64 Update NPC window 1 year ago
MagicBot d95bc5c261 Initialize all collections for npc 1 year ago
MagicBot 73fa5b5c7e Support for non-random rolling 1 year ago
MagicBot 85e5e2a7e3 Init forge support only for valid contracts 1 year ago
MagicBot 48f88ec819 Serialization update 1 year ago
MagicBot 139998eaa1 Moved declaration outside of loop 1 year ago
MagicBot 673f606de8 Cleanup of cache usage 1 year ago
MagicBot 9464500e95 More integration work 1 year ago
MagicBot 5e5b9884ef Begin integration 1 year ago
MagicBot 94ab64d629 reformat class 1 year ago
MagicBot 2c89509fa2 Moved logging message up 1 year ago
MagicBot fae81a0263 Removed cast in validation 1 year ago
MagicBot a8d5521dd8 Mobtype work related to ForgeManager 1 year ago
MagicBot ea555be08e Mobtype work related to ForgeManager 1 year ago
MagicBot 74e97fb435 Minor cleanup 1 year ago
MagicBot eed25d8c16 Minor cleanup 1 year ago
MagicBot bc195c27db Rework of error handling. 1 year ago
MagicBot 0653828fe3 Rework of error handling. 1 year ago
MagicBot 2feba8ac50 Rework of error handling. 1 year ago
MagicBot 5e7515a9ad Merge remote-tracking branch 'refs/remotes/origin/bugfix-combat-range' into feature-workorder2.4 1 year ago
FatBoy-DOTC 2aaca661e2 new combat finalized 1 year ago
FatBoy-DOTC 3f27bae099 mobs dont double tap when unarmed 1 year ago
FatBoy-DOTC 79f4a33b6e add half player character height to attack range in lieu of hitbox 1 year ago
MagicBot ec47e24549 Not yet set when validating. 1 year ago
MagicBot 8fe7a6e896 Class cleanup 1 year ago
MagicBot f068e6891e Collection declaration cleanup 1 year ago
MagicBot cabbf8bf44 Java 8 TimeUnit 1 year ago
MagicBot 9c146fff4d Only random rolled items are unidentified. 1 year ago
MagicBot 333fcc9d14 Multiple item workOrder work 1 year ago
MagicBot 4aca075da6 Multiple item workOrder work 1 year ago
MagicBot a5bcdff216 Multiple item workOrder work 1 year ago
MagicBot 3c704d6b85 Multiple item workOrder work 1 year ago
MagicBot d26214d032 Multiple item workOrder work 1 year ago
MagicBot 09c96c772e Multiple item workOrder work 1 year ago
MagicBot f6e1c78b0b Debug string update 1 year ago
MagicBot ec80146117 forge items each cycle 1 year ago
MagicBot 980dee2e14 Work on multiple slot support 1 year ago
MagicBot 832b994757 Begin work on forgeItem() 1 year ago
MagicBot a18785fb3d Begin work on forgeItem() 1 year ago
MagicBot f076b38044 Contextual variable name updates 1 year ago
MagicBot 68f2af5306 Bugfix in delay override 1 year ago
MagicBot 052867893c Bugfix in delay override 1 year ago
MagicBot 13ba31285e Logging on each cycle 1 year ago
MagicBot 61a418fd8e Debug comment update 1 year ago
MagicBot 3fa4185b7f Debug comment update 1 year ago
MagicBot 5cb08c1dc0 Forge must be protected 1 year ago
MagicBot fc3a0eaf0c Forge must be protected 1 year ago
MagicBot 2e83b8c693 Better context in name 1 year ago
MagicBot 44eafc3345 Validation work 1 year ago
MagicBot 29ce3537f7 Work on cost overflow calculations 1 year ago
MagicBot 058887ff4d Locked resources are always unavailable. 1 year ago
MagicBot dc18e71ee4 Locked resources are always unavailable. 1 year ago
MagicBot 479e38e3f6 Validation work 1 year ago
MagicBot dd764281e8 Rolling duration updated 1 year ago
MagicBot f7959a51bd Rolling duration updated 1 year ago
MagicBot 97e0ada1a9 workerOrder cost updating 1 year ago
MagicBot cc3d5fe076 workerOrder cost updating 1 year ago
MagicBot 2200cb9bef workerOrder cost updating 1 year ago
MagicBot a16cda8a4a workerOrder cost updating 1 year ago
MagicBot af53859ba9 Comment added 1 year ago
MagicBot a7a1230f1b Work on wordOrder iteration 1 year ago
MagicBot df037a51f0 More info on template bootstrap 1 year ago
MagicBot 4d18e71aa1 More info on template bootstrap 1 year ago
MagicBot 7f579e5268 Bane rank loaded from template 1 year ago
MagicBot f6c53e51ed Calculate cost of workOrder 1 year ago
MagicBot 1429a3a4d5 Configure upon submit() 1 year ago
FatBoy-DOTC dc81ddaba7 handle retaliate when being attacked 1 year ago
FatBoy-DOTC 4a001179b5 add hitbox to abs vs abs range checks 1 year ago
FatBoy-DOTC 1bff06cde0 using building bounds and hitBox for mele range 1 year ago
MagicBot ba4648f812 Minor class cleanup 1 year ago
MagicBot 1d0ab95b88 Minor class cleanup 1 year ago
MagicBot 275644ec83 Minor class cleanup 1 year ago
MagicBot 69416528b3 Minor class cleanup 1 year ago
MagicBot d3e0146d86 Minor class cleanup 1 year ago
MagicBot 35fab88949 Minor class cleanup 1 year ago
MagicBot 27a37eba79 Minor class cleanup 1 year ago
MagicBot deb5b36309 Minor class cleanup 1 year ago
MagicBot b84de95865 Minor class cleanup 1 year ago
MagicBot 5650c0f05a Minor class cleanup 1 year ago
MagicBot afa1b8478a Minor class cleanup 1 year ago
MagicBot cafe0a0fe1 Minor class cleanup 1 year ago
MagicBot bfa43823f6 Minor class cleanup 1 year ago
MagicBot 533ed87321 Minor class cleanup 1 year ago
MagicBot 129bd4aaa6 Minor class cleanup 1 year ago
MagicBot eb93481fda Merge branch 'feature-workorder2.4' of http://repo.magicbane.com/MagicBane/Server into feature-workorder2.4 1 year ago
MagicBot a160fe1b00 Time recycle update 1 year ago
MagicBot c2f70c0f26 Unused method removed 1 year ago
MagicBot 98c0712dea Method to calculate warehosue overflow. 1 year ago
MagicBot 7c4f7f391b Method to calculate warehosue overflow. 1 year ago
MagicBot e01dc9b09c More fleshing out of workorder usage 1 year ago
MagicBot 178bb3718a Slot count calculated 1 year ago
MagicBot f088d2aa72 More WorkOrder work 1 year ago
MagicBot 0645a93b9c Track items and their workorders. 1 year ago
MagicBot 8b38f1a695 Track items and their workorders. 1 year ago
MagicBot 652476fde8 Track items and their workorders. 1 year ago
MagicBot 74a7a255be Track items and their workorders. 1 year ago
MagicBot abd112035a Track items and their workorders. 1 year ago
MagicBot f5f92a1d88 rollingDuration fleshed out 1 year ago
MagicBot 75d520831f More workorder logic work 1 year ago
MagicBot 92402097d4 ForgeManager started at boot 1 year ago
MagicBot 5e92bab977 submit workorder to forgemanager 1 year ago
MagicBot a5df674fbe Update to debug strings 1 year ago
MagicBot 4462f74f8c More workorder work. 1 year ago
MagicBot 781053ab22 Debug string added 1 year ago
MagicBot 053c105c26 Method to validate workorder 1 year ago
MagicBot 46bf67672a workorder fields assigned 1 year ago
MagicBot d539e419fe Begin adding workOrder logic 1 year ago
MagicBot ec5a8f5281 Logic cleanup. 1 year ago
MagicBot 97558b51c8 Method moved to top of handler. 1 year ago
MagicBot 4a3a8d4b65 Minor class cleanup 1 year ago
MagicBot 85a66339e2 inline accessors 1 year ago
MagicBot b785d35231 Removed unused method 1 year ago
MagicBot 21b1dba84d Switch directly on actiontype 1 year ago
MagicBot fc71b8cb61 Inline setter 1 year ago
MagicBot 31129493e5 ActionType Take 1 year ago
MagicBot 8b4eafebf3 Elevate access. It's a message... 1 year ago
MagicBot cf38362d84 Handler uses enumeration 1 year ago
MagicBot 30800478f2 Message now uses enum 1 year ago
MagicBot 9bbe9b399e Better name for map 1 year ago
MagicBot 16d17798be Mirror field in client 1 year ago
MagicBot 679c7afe0e field is templateID not item uuid. 1 year ago
MagicBot f10141eddb Variable removed from city 1 year ago
MagicBot 10805a7d37 Class moved up in package 1 year ago
MagicBot b979fbb1bc Begin message rewrite 1 year ago
MagicBot b86ca33087 Unused variables removed 1 year ago
MagicBot 993abfbf6f variable renamed 1 year ago
MagicBot ffd41101c3 variable renamed 1 year ago
MagicBot 39e06994d9 Workorder and Forgemanger classes created 1 year ago
MagicBot ec405226c5 Formation refactored to enum 1 year ago
MagicBot 627a35e364 Update to devcmd 1 year ago
MagicBot 6254472bb8 New column used in rs constructor 1 year ago
MagicBot 0bbedd5983 Code removed; column populated 1 year ago
MagicBot 58fb2a9b90 Populate new column in table. 1 year ago
MagicBot f7c76937fb Writing string of bitset for contracts. 1 year ago
MagicBot 52865d7cfd refactored out dependency 1 year ago
MagicBot 8424aa557f refactored out dependency 1 year ago
MagicBot 0ab7bafe5e refactored out dependency 1 year ago
MagicBot 43b212ed42 refactored out dependency 1 year ago
MagicBot 0b4873a522 refactored out dependency 1 year ago
MagicBot d3d1227d6c refactored out dependency 1 year ago
MagicBot 181e7661c1 fromString and asString EnumSet helper methods created 1 year ago
MagicBot c1ee6f5b52 Renamed class to not conflict with the java.lang version. 1 year ago
MagicBot dd84615ca1 Optimization moved to method 1 year ago
MagicBot aad0418260 Faster if bitvector is 0. 1 year ago
MagicBot 46f3850e93 Values parsed as behaviourtype enumset 1 year ago
MagicBot ab34931c3d Test if value is enumset 1 year ago
MagicBot 52116063e5 Test if value is enumset 1 year ago
MagicBot 04243cc21e Arraylists of ints 1 year ago
MagicBot 1ab041ce0f Last two variables need work. 1 year ago
MagicBot 1dac740fca Bitvector helper method added. 1 year ago
MagicBot 1e3e173dfe Final class cleanup. 1 year ago
MagicBot 27971c5fb3 not_enemy_types_json parsed 1 year ago
MagicBot 52fab5d92b not_enemy_types_json parsed 1 year ago
MagicBot 5054006ffc not_enemy_types_json parsed 1 year ago
MagicBot f4e24e032b rune_enemy_monster_types parsed 1 year ago
MagicBot 2248361503 rune_enemy_monster_types parsed 1 year ago
MagicBot 5c20fca28a Rune skill adjusts parsed 1 year ago
MagicBot 9bbb949868 Rune skill adjusts parsed 1 year ago
MagicBot 3e6bfacd86 Fix for mixed type values 1 year ago
MagicBot 1043c84b9d Both sparse fields parsed 1 year ago
MagicBot febada8d63 Both sparse fields parsed 1 year ago
MagicBot 8b6fef4cbc Both sparse fields parsed 1 year ago
MagicBot 1ce9029edf Fix to rune_group parsing 1 year ago
MagicBot 587ac802de Fix to rune_group parsing 1 year ago
MagicBot 58455843f9 long not double 1 year ago
MagicBot a09ac1f2a2 long not double 1 year ago
MagicBot 8c454c5d7c Using name as template id is not yet set. 1 year ago
MagicBot 83dd47d22a Test 1 year ago
MagicBot c2910bb87c Test 1 year ago
MagicBot 7e6c051a02 More parsing work; sparse_data field loaded into string for now. 1 year ago
MagicBot 35b368d7fe rune_speed parsed 1 year ago
MagicBot d39790ab4c More parsing work 1 year ago
MagicBot 09d28b964a More parsing work 1 year ago
MagicBot 139490e943 Fields defined. 1 year ago
MagicBot 8830388728 More rune parsing work 1 year ago
MagicBot 68b9f9e887 More rune parsing 1 year ago
MagicBot 5ef45a2212 Parsing power_granted_skills 1 year ago
MagicBot 772e7f7f29 Parsing power_granted_skills 1 year ago
MagicBot 8afa00f885 Parsing skill_granted_skills 1 year ago
MagicBot fcf76011f4 power_granted_skills hashmap defined 1 year ago
MagicBot 3e2f420c30 skills_granted_array started for rune 1 year ago
MagicBot 26fd6f8de2 Update to error string 1 year ago
MagicBot 0966b82d5f rune_skill_grant parsed 1 year ago
MagicBot d526d69bca rune_skill_grant parsed 1 year ago
MagicBot 242984ffaf Rune attribute and max attribute adjusts parsed 1 year ago
MagicBot 4746a8c9cf More parsing work. 1 year ago
MagicBot 1603c8d8e9 Rename to conform 1 year ago
MagicBot ddba4f290d Rename to conform 1 year ago
MagicBot d621877e8c Begin rune parsing 1 year ago
MagicBot 713a52f705 Serialize current stats 1 year ago
MagicBot c68d5e0730 Attack bypass inserted 1 year ago
MagicBot 49c62fae60 Debug string 1 year ago
MagicBot 3bd4e75422 Debug string 1 year ago
MagicBot 791e5cb9b8 Attack early exit 1 year ago
MagicBot 2fb8f53751 Attack early exit 1 year ago
MagicBot dc366068a9 Methods moved to new handler 1 year ago
MagicBot 3ec76ab816 ItemManager created 1 year ago
MagicBot d8750f5e2c Unused methods removed 1 year ago
MagicBot f272be8b4d Header added to class 1 year ago
MagicBot f8f86d8e46 Header added to new class 1 year ago
MagicBot ee030a690a Project reformat 1 year ago
MagicBot 3df1da364c Magic number removed 1 year ago
MagicBot 389373be30 Not static 1 year ago
MagicBot cc02be95f3 Proper parsing of power grants 1 year ago
MagicBot 5a1027c611 Proper parsing of power grants 1 year ago
MagicBot 64e780744d Proper parsing of power grants 1 year ago
MagicBot 0abffeeb7f Proper parsing of power grants 1 year ago
MagicBot 75f11deee1 Proper parsing of power grants 1 year ago
MagicBot db91b606f6 Proper parsing of power grants 1 year ago
MagicBot 82373f8cc8 Proper parsing of power grants 1 year ago
MagicBot 946714d3ae Proper parsing of power grants 1 year ago
MagicBot 8414b0f4cf Consumable items are item_power_grant for their lookup 1 year ago
MagicBot faa262db99 Revert "Temp fix for 3 modifiers" 1 year ago
MagicBot 6955f69156 Temp fix for 3 modifiers 1 year ago
MagicBot 2ae39d2a29 Corrected source type 1 year ago
MagicBot 8e44adf16e No need for toUpper() here. 1 year ago
MagicBot fd73dbc349 Source types updated to match damage type 1 year ago
MagicBot f58aa61859 PIERCING 1 year ago
MagicBot ae7fecbf6d Effectbase updated with new enum 1 year ago
MagicBot 5ed497dd69 All damage type lookups go through method 1 year ago
MagicBot 14ee83e147 DamageType defined as in JSON 1 year ago
MagicBot a29269e335 Initial refactor of damagetype 1 year ago
MagicBot adfbf87056 Handler update. 1 year ago
MagicBot d80231eef0 Handler update. 1 year ago
MagicBot 3395efee49 bugfix: wrong char! 1 year ago
MagicBot 7acaccc77d Protocol handler code update 1 year ago
MagicBot 5aa01d94fd New handlers plugged into protocol class 1 year ago
MagicBot 7b405bbbf3 New handlers plugged into protocol class 1 year ago
MagicBot 504e26114e Migration to protocol class 1 year ago
MagicBot 4e5e49606c Methods moved out of old login handler 1 year ago
MagicBot f62f11a66c Handler created for GameServerIPRequestMsg 1 year ago
MagicBot 7911a17f0c Handler created for deletecharmsg 1 year ago
MagicBot 5c8c4fc817 Handler created for deletecharmsg 1 year ago
MagicBot 854d0a8a68 Handler created for commitnewcharmsg 1 year ago
MagicBot 61fca2c742 Handler created for ServerInfoMsg 1 year ago
MagicBot b752006d6f Handlers created for VersionInfoMsg and ClientLoginInfoMsg 1 year ago
MagicBot f9c0a9c3b5 Decoration type 2.1 JSON 1 year ago
MagicBot 71300f189d Parm name update 1 year ago
MagicBot d3fe643223 Madness; refactor out? 1 year ago
MagicBot 0cf4b5416d Refactor of signature 1 year ago
MagicBot a98de7b6fc Unused method 1 year ago
MagicBot efa7e6a03a UPDATE_EQUIP_SLOT db method plugged in 1 year ago
MagicBot 407fe9d583 Fixing equipslot db issue 1 year ago
MagicBot 36d8a6bdbd Fixing equipslot db issue 1 year ago
MagicBot cdd746e0df Removed extra squigglies 1 year ago
MagicBot 4e1621db99 Sql bugfix 1 year ago
MagicBot e5622a47c0 Inline templateID 1 year ago
FatBoy-DOTC 46170e3ab7 players can use weapon powers again 1 year ago
FatBoy-DOTC 01533b1056 auto attack timer for players fixed 1 year ago
FatBoy-DOTC 87e24c16d9 Merge remote-tracking branch 'origin/feature-json7.4' into feature-json7.4 1 year ago
FatBoy-DOTC 572bff8d6b auto attack timer for players fixed 1 year ago
MagicBot 52d37296a7 Uppercase for source type 1 year ago
MagicBot f682f9a5ae Uppercase for source type 1 year ago
MagicBot 2f3b9e0fb2 Uppercase for source type 1 year ago
MagicBot cfc36c0c27 Equipslot stored as string 1 year ago
MagicBot 0e431aa726 Handler written for protocol class 1 year ago
MagicBot 25ab3747eb Handler written for protocol class 1 year ago
MagicBot 7526cc808c TradeManager removed 1 year ago
MagicBot 019c254ac1 Handler created for InvalidTradeRequestMsg 1 year ago
MagicBot 8cd613c597 Handler created for CloseTradeWindow 1 year ago
MagicBot 5f16289052 Handler created for UnCommitToTradeMsg 1 year ago
MagicBot 2768980f6e Handler created for CommitToTradeMsg 1 year ago
MagicBot 3a2b138deb Handler created for AddGoldToTradeWindowMsg 1 year ago
MagicBot 3f1385dd33 Handler created for AddItemToTradeWindowMsg 1 year ago
MagicBot a70585448f RejectTradeRequest has no handler 1 year ago
MagicBot d4e38c113b Handler created for AceeptTradeMsg 1 year ago
MagicBot d7b18dc457 Handler created for RequestToTrade 1 year ago
MagicBot 7b909e1044 Handler created for AbstractChatMsg 1 year ago
MagicBot 4fd1a1a146 Handler created for AbstractChatMsg 1 year ago
MagicBot 9934e60fa4 Handler created for AbstractChatMsg 1 year ago
MagicBot b74105137e Handler created for AbstractChatMsg 1 year ago
MagicBot 301014f06f Handler created for AbstractChatMsg 1 year ago
MagicBot a37825168b Handler created for AbstractChatMsg 1 year ago
MagicBot 093bc5e97e Handler created for RecvSummonsMsg 1 year ago
MagicBot f0ac342b1f Handler created for SendSummonsMsg 1 year ago
MagicBot 8997701d8a Handler created for TrackWindowMsg 1 year ago
MagicBot ce403a6bd8 Handler created for TrainerInfoMsg 1 year ago
MagicBot bf712accf9 Handler created for RefineScreenMsg 1 year ago
MagicBot 1825035739 Handler created for RefineMsg 1 year ago
MagicBot 5a5fd8155c Handler created for StuckMsg 1 year ago
MagicBot 56bc38ab73 Handler created for PetAttackMsg 1 year ago
MagicBot 01fd6997a8 Handler created for ShowMsg 1 year ago
MagicBot 41f77364aa Cleanup of handler super calls 1 year ago
MagicBot 1acb74ade1 Handler created for RespawnMsg 1 year ago
MagicBot 35ba4bbeec CosttoOpenBankMsg has no handler 1 year ago
MagicBot a162377685 Handler created for ModifyStatMsg 1 year ago
MagicBot 5a1806d11b Handler created for PetCmdMsg 1 year ago
MagicBot 80c11db80b Handler created for ViewResourcesMsg 1 year ago
MagicBot fbec206389 Handler created for IgnoreMsg 1 year ago
MagicBot 7b9d9d64bb Handler created for ToggleSitStandMsg 1 year ago
MagicBot e86097d732 Handler created for LFGmsg 1 year ago
MagicBot a103e7c7cd Handlers created for toggle combat messages 1 year ago
MagicBot f653376c22 Handler created for ClientAdminCommandMsg 1 year ago
MagicBot 4bc19235a6 Handler created for LootMsg 1 year ago
MagicBot 06e41d5b94 Handler created for LootWindowRequestMsg 1 year ago
MagicBot 8083f39ba1 Handler created for DeleteItemMsg 1 year ago
FatBoy-DOTC 162a049f30 mob attack delay 1 year ago
FatBoy-DOTC 0486fa52e4 mob attack delay 1 year ago
FatBoy-DOTC 0e9390ef53 mob attack delay 1 year ago
FatBoy-DOTC f47a9772d7 mob attack delay 1 year ago
FatBoy-DOTC 08060cf06f mob baseline stats 1 year ago
FatBoy-DOTC 25fed51523 canRoll work 1 year ago
FatBoy-DOTC 8c39ede852 canRoll work 1 year ago
FatBoy-DOTC 692c6a268c canRoll work 1 year ago
FatBoy-DOTC 415ec5f5d4 array list cast for canRoll 1 year ago
FatBoy-DOTC 0c1431e60d SQL fix 1 year ago
FatBoy-DOTC df07c80b1b combat manager fix 1 year ago
MagicBot 94253f547d Bugfix in deserialization 1 year ago
MagicBot 2640927b85 Value tweak 1 year ago
MagicBot fc06ea97bd Refactor out itembase 1 year ago
MagicBot 561b80b1aa Refactor out itembase 1 year ago
MagicBot 230679cef9 Templates backfilled with modtable data 1 year ago
MagicBot 8e43f17da0 Can roll list refactored 1 year ago
MagicBot a109e9864f More itembase refactor 1 year ago
MagicBot 5d367a737c More itembase refactor 1 year ago
MagicBot 2b7cc2bdd7 More itembase refactor 1 year ago
MagicBot 60c80ceee8 More itembase refactor 1 year ago
MagicBot 1cf9831e20 Itembase refactored out of gold 1 year ago
MagicBot 08f0fc1743 More itembase refactor 1 year ago
MagicBot 2aa9f9c134 More itembase refactor 1 year ago
MagicBot 3ee0ec1342 More itembase refactor 1 year ago
MagicBot 85a179ad47 More itembase refactor 1 year ago
MagicBot 03e6c591ff More itembase refactor 1 year ago
MagicBot 03c226f76e More itembase refactor 1 year ago
MagicBot 59bf787581 ItemTableEntry column update 1 year ago
MagicBot 61bb7be6b1 More itembase refactor 1 year ago
MagicBot 84c29a1222 More itembase refactor 1 year ago
MagicBot 02d8bf4f5c Bootyset column update 1 year ago
MagicBot eba8beb8f5 More itembase refactor 1 year ago
MagicBot 3dcffa3042 More itembase refactor 1 year ago
MagicBot 04991c94ba dyn_npc_production column update 1 year ago
MagicBot ee8e4f8a2e Inventoryset column update 1 year ago
MagicBot 594509e0ad Parm removed from stored procedure. 1 year ago
MagicBot d57eb295e9 Schema update 1 year ago
MagicBot b8a1081544 Debug code removed. 1 year ago
MagicBot 045b101d7b Bypass for mobiles in def logic 1 year ago
MagicBot 76ae0f4b59 This should fail fast. 1 year ago
MagicBot 2cfbd77e2f Update to error message 1 year ago
MagicBot 768e209b2b signature names updated 1 year ago
MagicBot eb621f184d Update to skill_used logic 1 year ago
FatBoy-DOTC ebf7130b63 defense bug fix 1 year ago
FatBoy-DOTC a65ecfeb65 damage calculated as int 1 year ago
FatBoy-DOTC 1b384a6d11 damage calculated as int 1 year ago
FatBoy-DOTC cde9901bb6 remove ItemBase variables 1 year ago
FatBoy-DOTC 7f452d18bc remove ItemBase from NPCManager 1 year ago
FatBoy-DOTC ce7b9ff96f remove ItemBase from NPC 1 year ago
FatBoy-DOTC 3ff9115052 remove ItemBase from LootManager 1 year ago
FatBoy-DOTC 6c78e7d9fa remove ItemBase from LootManager 1 year ago
FatBoy-DOTC 6514fd8dc3 remove ItemBase from NPC 1 year ago
FatBoy-DOTC a741bb3482 remove ItemBase from PlayerCharacter 1 year ago
FatBoy-DOTC def5ceee46 remove ItemBase form absChar and Mob 1 year ago
FatBoy-DOTC aff2a8fa0e ABS char skill system 1 year ago
FatBoy-DOTC 27d869276a purge ItemBase form mobAI 1 year ago
MagicBot 7e3a8a7a40 Handler created for LeaveWorldMsg 1 year ago
MagicBot c33cd9773f Handler created for RandomMsg 1 year ago
MagicBot 2d246a6773 Handler created for TrainMsg 1 year ago
MagicBot fa5980bc6a Handler created for GuildTreeStatusMSg 1 year ago
MagicBot 17f18b83f4 Handler created for PerformActionMsg 1 year ago
MagicBot 507ec302e7 Handler created for PromptRecallMsg 1 year ago
MagicBot 5cfbd9998c Handler created for UseCharterMsg 1 year ago
MagicBot 68ae9c1b97 Handler created for SocialMSg 1 year ago
MagicBot 5397833dea Handler created for WhoRequestMsg 1 year ago
MagicBot 4598709ba1 Handler created for UpdateStateMsg 1 year ago
MagicBot ac92d69914 Handler created for TargetObjectMsg 1 year ago
MagicBot a1f233723f Cleanup of value handling 1 year ago
MagicBot 063f3081b5 Methods moved out of message pump 1 year ago
MagicBot 72ce1e0694 Revert value store 1 year ago
MagicBot 0004215605 Revert value store 1 year ago
MagicBot c0a50544d7 Value is only an override 1 year ago
MagicBot a130240339 Value is only an override 1 year ago
MagicBot 54cd1c59f7 Value is only an override 1 year ago
MagicBot a7ed30130d Value is set as items as used or damaged. Not calculated on the fly. 1 year ago
MagicBot 4e2add4d64 Potion charges accounted for in price 1 year ago
MagicBot 6a62f93cba combat_health_full used from json 1 year ago
MagicBot f523e4832e Variable renamed to conform with json 1 year ago
MagicBot 28b0fd6fd4 Removed two variables 1 year ago
MagicBot 0f703785f3 Strip trailing ; when writing enumset 1 year ago
MagicBot ded3e16d48 Class renaming for clarity 1 year ago
MagicBot 678f5463ea Name given default value 1 year ago
MagicBot 575d21a786 Value logic update 1 year ago
MagicBot 4fa5ccf416 Value logic update 1 year ago
MagicBot eba905b15d Value set in constructor 1 year ago
MagicBot 14ccb1f80b Value set in constructor 1 year ago
MagicBot 9d140be510 Weight not value 1 year ago
MagicBot eb78716401 Update needed here for inventory 1 year ago
MagicBot 3074b77471 Handler created for VendorDialogMsg 1 year ago
MagicBot 53b7aca0ce Handlers created for vendor buy/sell windows 1 year ago
MagicBot 083349b75b Handlers created for gold-vault interactions 1 year ago
MagicBot ae3423b99b Handlers created for vault interactions 1 year ago
MagicBot 5439df5653 Handlers created for vault interactions 1 year ago
MagicBot e7e32ca4ef Handlers created for bank interaction 1 year ago
MagicBot e971674465 Handlers created for bank interaction 1 year ago
MagicBot 943d274e5f Project reformat. 1 year ago
MagicBot d0bb761344 Bugfix in item constructor 1 year ago
MagicBot a8ba5ae62b More accurate than BakedInStats 1 year ago
MagicBot 97c0b0bbee Unused method removed 1 year ago
MagicBot 67e0766894 New Handler created for SELLOBJECT 1 year ago
MagicBot 3fc5fa71a4 No enchants loaded from db for negative id items 1 year ago
MagicBot 4fc7c90c15 Method moved to handler. Less in Item the better. 1 year ago
MagicBot e50c519eec Rewrite of handler 1 year ago
MagicBot 57016da1d0 Rewrite of handler 1 year ago
MagicBot 8d1c6cc082 Rewrite of handler 1 year ago
MagicBot 2fb889272b Rewrite of handler 1 year ago
MagicBot 4194aa09d1 Rewrite of handler 1 year ago
MagicBot 0004bb63b0 Sell inventory get negative uid 1 year ago
MagicBot d7eef4c623 Logic update in byfromnpc 1 year ago
MagicBot 0fa042cece Final CombatManager 1 year ago
MagicBot 6a0599a972 Unused method removed 1 year ago
MagicBot cef2a7c188 Backfill code removed 1 year ago
MagicBot ab2659d01f Backfill code removed 1 year ago
MagicBot 601ed40eb2 Passives clamped at 75% 1 year ago
MagicBot 2bb414fc33 Update to passive logic 1 year ago
MagicBot ecc14fc3af Setting slot.NONE when moving to inventory 1 year ago
MagicBot ea38c3bef7 Unused Junk removal 1 year ago
MagicBot bf990a886c Ignoring current ident flag when back-filling 1 year ago
MagicBot 22d08b51b7 Back filling item flags 1 year ago
MagicBot 551361e10a Back filling item flags 1 year ago
MagicBot 99b9444ba8 Set flags when created 1 year ago
MagicBot c390ebe0c6 Empty check when reading enum 1 year ago
MagicBot 513118d42c Flags defined in in-memory constructor 1 year ago
MagicBot b0c43a5258 Back-fill support added. 1 year ago
MagicBot eca71fa685 Item flags refactored 1 year ago
MagicBot f01fb6f848 Variable rename 1 year ago
MagicBot 0f18258d1b Variable rename 1 year ago
MagicBot abc4a227a9 Comment cleanup 1 year ago
MagicBot 1c368003ae String rename 1 year ago
MagicBot ee34f9e8ec parameter rename 1 year ago
MagicBot d511eda713 Removed junk dev commands. 1 year ago
MagicBot 4b20b0efe3 Removed junk dev commands. 1 year ago
MagicBot 5c731894b1 Removed ordering junk 1 year ago
MagicBot 6ff26f6a25 Equipset reloaded after respawn 1 year ago
MagicBot b041326e23 Use correct serialization 1 year ago
MagicBot c8d355636b Only one item manager 1 year ago
MagicBot fa0dfadc8b Start mobequip refactor 1 year ago
MagicBot 8f7208ff34 Start mobequip refactor 1 year ago
MagicBot 61c4cb1361 Start mobequip refactor 1 year ago
MagicBot 0590ae64e7 Start mobequip refactor 1 year ago
MagicBot 7fa8c3bfff Drop chance added to item. 1 year ago
MagicBot 82c4e3169e Merge remote-tracking branch 'origin/unified-combat-manager' into feature-json7.3 1 year ago
MagicBot 84f9d54ec0 Unused junk removed 1 year ago
MagicBot 3e71cf4b45 Unused junk removed 1 year ago
MagicBot 68b9651f94 Unused junk removed 1 year ago
MagicBot 50171e4600 TOL destroyed last in thread 1 year ago
FatBoy-DOTC 9d7f2f39fe Unified Combat System 1 year ago
MagicBot a30c041a17 Logic update 1 year ago
MagicBot 756e20633f Warehouse deleted from db 1 year ago
MagicBot 12c1cde069 Warehouse deleted from db 1 year ago
MagicBot 2e0ffe67fa Overdraft method written 1 year ago
MagicBot 0c0f0aa54d Overdraft method written 1 year ago
MagicBot 538e452377 Sql update 1 year ago
MagicBot 264ce39552 Locks saved to disk 1 year ago
MagicBot b8bd71616b Setting city when loading 1 year ago
MagicBot b2f3e7a635 Building set on load 1 year ago
MagicBot e38324af63 Building set on load 1 year ago
MagicBot 5db5a26037 Warehouse loading work. 1 year ago
MagicBot 9b22287ede Warehouse loading work. 1 year ago
MagicBot 98c5b0e9ec Warehouse loading work. 1 year ago
MagicBot 0b74537bee Warehouse loading work. 1 year ago
MagicBot 5f930b0482 Warehouse loading work. 1 year ago
MagicBot aa0afa533d Duplicate key logic makes sense here. 1 year ago
MagicBot e06657e53f Loading of warehouse data 1 year ago
MagicBot a960e5ab04 Loading of warehouse data 1 year ago
MagicBot 4a9a496a5d Refactor warehouse part two. 1 year ago
MagicBot f3bfdd8a36 Refactor warehouse part two. 1 year ago
MagicBot b76a384e1f Refactor warehouse part two. 1 year ago
MagicBot 3c70a09e12 Itembase refactor work 1 year ago
MagicBot ee9b64285e Itembase refactor work 1 year ago
MagicBot 7848233396 equip slot usage update 1 year ago
MagicBot 2e05ba243f Itembase removed from interface 1 year ago
MagicBot b789c773b4 Refactor out itembase 1 year ago
MagicBot 023fd547fd Template passed to method 1 year ago
MagicBot 288c941d69 Merge remote-tracking branch 'origin/feature-json6' into featue-json7 1 year ago
MagicBot 6b2569873c bugfix: templateid wasn't being set 1 year ago
FatBoy-DOTC 836c076884 removed ItemBase form Combat manager 1 year ago
MagicBot e4b0823911 Refactor of item.name; simplification. 1 year ago
MagicBot 3fdafe176b Refactor of item.name; simplification. 1 year ago
MagicBot c54b0470fa More itembase refactor 1 year ago
MagicBot ac2403362e Name simplification for collection 1 year ago
MagicBot 13bf6e6f5a SQL bugfix 1 year ago
MagicBot 131592090f Deed related values parsed 1 year ago
MagicBot 412fec17a6 Deed related fields parsed in template 1 year ago
MagicBot 995949c1ba Deed fields defined in template 1 year ago
MagicBot fce3fa8004 More itembase refactor work 1 year ago
MagicBot bb0803bf19 More itembase refactor work 1 year ago
MagicBot c091026114 More itembase refactor work 1 year ago
MagicBot c90461afe0 More itembase refactor work 1 year ago
MagicBot d9032f750f More itembase refactor work 1 year ago
MagicBot 55058b4ce1 String update 1 year ago
MagicBot 5ff19e58a5 DevCmd removed 1 year ago
MagicBot e831f447ae More itembace refactor work 1 year ago
MagicBot dd8699ad32 Bonus code removal 1 year ago
MagicBot 109ddde0a8 More itembase refactor work 1 year ago
MagicBot f78baf229d More itembase refactor work 1 year ago
MagicBot 22f498a6f8 More itembase refactor work 1 year ago
MagicBot ebaf68bca4 More itembase refactor work 1 year ago
MagicBot 8b98a3f2a1 More itembase refactor work 1 year ago
MagicBot d9549c227a More itembase refactor work 1 year ago
MagicBot c5c4c62208 Handler created for BuyFromNPCMsg 1 year ago
MagicBot 2ceaece7d9 More itembase refactor work 1 year ago
MagicBot b9b04c2b9f More itembase refactor work 1 year ago
MagicBot 789e177d67 More itembase refactor work 1 year ago
MagicBot 3168f12af1 More itembase refactor work 1 year ago
MagicBot e93f84d1c7 Method moved out of itembase db handler 1 year ago
MagicBot e323c80fba More refactor out itembase 1 year ago
MagicBot 57122e5b74 More refactor out itembase 1 year ago
MagicBot a1dbb42b4d More refactor itembase out of warehouse 1 year ago
MagicBot a489aecb86 More refactor itembase out of warehouse 1 year ago
MagicBot 6ed4faded2 Refactor out itembase 1 year ago
MagicBot f676b14351 Weight bugfix 1 year ago
MagicBot 97fa583f65 Initial warehouse refactor 1 year ago
MagicBot 92f53b00b8 Unused variables removed 1 year ago
MagicBot f2d28fd7af Refactored out duplicate db interface. 1 year ago
MagicBot 4646d03bdd Refactored out duplicate resource type. 1 year ago
MagicBot b6eb587a82 mine production added to type 1 year ago
MagicBot 9dd2a79be8 deposit limits use type lookup 1 year ago
MagicBot 2e37bd2472 deposit limits use type lookup 1 year ago
MagicBot f9797a38b8 deposit limits added to type 1 year ago
MagicBot 20a42ab3e5 isConsumable not used as driven by switch. 1 year ago
MagicBot a7062eff3a isConsumable not used as driven by switch. 1 year ago
MagicBot 6806ae3dc0 isConsumable not used as driven by switch. 1 year ago
MagicBot b665d46dc3 Methods moved to better class. 1 year ago
MagicBot 0b68ae3960 Resource.hash refactored 1 year ago
MagicBot ef38e93c11 Refactor of animations 1 year ago
MagicBot 4f7c34aec9 Refactor out item useID 1 year ago
MagicBot 7595f7dfb5 Refactor out item useID 1 year ago
MagicBot 96b4e1c639 Refactor out item useID 1 year ago
MagicBot efab8eefba Refactor baked in stats 1 year ago
MagicBot b0f8c758e5 Refactor baked in stats 1 year ago
MagicBot 6ee194924c Refactor baked in stats 1 year ago
MagicBot 784767dc4e Logic cleanup 1 year ago
MagicBot 15d2f2b9d8 Refactor boon handling 1 year ago
MagicBot 56b89b7080 Refactor isTwoHanded() 1 year ago
MagicBot 32d9322189 Table renamed to static_item_templates 1 year ago
MagicBot ca8c4338b2 Junk removal 1 year ago
MagicBot 6a4a550f63 Junk removal 1 year ago
FatBoy-DOTC 24d5fb2259 checkf o valid slot type when equipping item 1 year ago
FatBoy-DOTC f3d4a2becc Merge remote-tracking branch 'origin/feature-json6' into feature-json6 1 year ago
FatBoy-DOTC e1018a48f0 checkf o valid slot type when equipping item 1 year ago
MagicBot 50d75eecc6 Pass weaponslot not slot. 1 year ago
MagicBot 406c864b17 Exclude Cloth for now 1 year ago
MagicBot f616937236 Refactor skill_used 1 year ago
MagicBot e47bd6fba0 Templates needed now on login server. 1 year ago
MagicBot 7f830a18cd Error logging addded 1 year ago
MagicBot 7bf5279ad3 Needs mbeditor-pro update 1 year ago
MagicBot df5c607375 Refactor item_type 1 year ago
MagicBot 87290baa52 More junk removal 1 year ago
MagicBot 8bf47fb4fe More junk removal 1 year ago
MagicBot b20de1657c More junk removal 1 year ago
MagicBot a5af5d9ec8 More junk removal 1 year ago
MagicBot b3bffed179 restrictflag and junk removal 1 year ago
MagicBot f349e0dda8 IsArmor junk removal 1 year ago
MagicBot 76d723669a AudiID junk removal 1 year ago
MagicBot 5537934f88 Moved method in class. 1 year ago
MagicBot e2aa7b54a4 One like shield check. 1 year ago
MagicBot 6f028ab8c8 Refactored isShield and removed equipflag. 1 year ago
MagicBot 658b442b36 Logic cleanup 1 year ago
MagicBot f6fbc6fecb Logic cleanup 1 year ago
MagicBot c6f451bce1 Remove from equip before changing slot. 1 year ago
MagicBot 3500bf0ede Handler created for equip to inventory message. 1 year ago
MagicBot 04d9b76938 More ordinal refactor 1 year ago
MagicBot 68088a3399 more equip refactored. 1 year ago
MagicBot 20cb8ef94d Handler created for equip message. 1 year ago
MagicBot caf708bed6 Handler created for equip message. 1 year ago
MagicBot 75691aaab9 Handler created for equip message. 1 year ago
MagicBot 83e8a8a218 Bugfix in parm type 1 year ago
MagicBot a9dc7b1c5b Equipment slot refactor started. 1 year ago
MagicBot d8d017669a Equipment slot refactor started. 1 year ago
MagicBot 7d1d8891ff Uppercasew for resist enum 1 year ago
MagicBot ffdf374cd6 Item requirements and restrictions refactored. 1 year ago
MagicBot 54b7fc2212 Parse offering info. 1 year ago
MagicBot 5476d238fa Parse offering info. 1 year ago
MagicBot 8e85136dc5 Parse offering info. 1 year ago
MagicBot 82daff3b6e Unused variable. 1 year ago
MagicBot 642270aacf Helper method created 1 year ago
MagicBot 3048f86f5b item physical resists refactored 1 year ago
MagicBot 84e74c5052 Refactored out character skill enum. 1 year ago
MagicBot 4dc0f52295 item_wt refactored to template 1 year ago
MagicBot 58652ee32f Template id assigned in constructor. 1 year ago
MagicBot 1a4d888304 Templates need to exist on Login server. 1 year ago
MagicBot f11fcc535a item_value refactored to template 1 year ago
MagicBot 70f331d025 item_value refactored to template 1 year ago
MagicBot 8a1cd316fe Durability and initial charges migrated to template. 1 year ago
MagicBot d7dfab5e74 Durability and initial charges migrated to template. 1 year ago
MagicBot 436d0cec9b Bonus code removed. 1 year ago
MagicBot 266e4214d4 Itembase refactored out. 1 year ago
MagicBot 08aa431f5d More item refactor work. 1 year ago
MagicBot b98e7cda15 More item refactor work. 1 year ago
MagicBot d05dbef71d More item refactor work. 1 year ago
MagicBot 5736f0a7a3 More item refactor work. 1 year ago
MagicBot ec90ef6174 items PERSIST work. 1 year ago
MagicBot fa440e2885 Begin constructor refactor 1 year ago
MagicBot 9ea44d7e1c Begin constructor refactor 1 year ago
MagicBot 22326802b3 Begin constructor refactor 1 year ago
MagicBot 531662e012 Unused item constructor removed. 1 year ago
MagicBot 8eaaabb4d4 Formatting cleanup 1 year ago
MagicBot 37af60781d Template id back-filled when created. 1 year ago
MagicBot 29c68110cf Refactor out itembase 1 year ago
MagicBot 1306ea3c5c Logging null templates 1 year ago
MagicBot 527acb8e52 Removed temp logging 1 year ago
MagicBot 744b508fea Logging missing base names 1 year ago
MagicBot ea97eb56a6 Logging missing base names 1 year ago
MagicBot 8d91f200e7 Refactor itembase.name to template. 1 year ago
MagicBot d9775dbf4e Refactor itembase.name to template. 1 year ago
MagicBot 507769c6b6 item_takeable parsed. 1 year ago
MagicBot aae9e38f36 Redundant comment 1 year ago
MagicBot 2cd3d028a9 Parsing resource costs 1 year ago
MagicBot c5bb051e64 Parsing resource costs 1 year ago
MagicBot 6a33651782 More parsing work. 1 year ago
MagicBot 1d2e4bbda7 More parsing work. 1 year ago
MagicBot f1a8f6024d Bugfix array index 1 year ago
MagicBot 0829a60f35 More parsing work 1 year ago
MagicBot f39434a248 More parsing work 1 year ago
MagicBot 808a60c86c More parsing work 1 year ago
MagicBot 22da19085d More parsing work 1 year ago
MagicBot 5304919e2a More parsing work 1 year ago
MagicBot 093fe0f261 More parsing work 1 year ago
MagicBot ab32ad1538 More parsing work 1 year ago
MagicBot 0a39102b08 More parsing work 1 year ago
MagicBot 91247c58a6 More parsing work 1 year ago
MagicBot bcf4aef5a0 More parsing work 1 year ago
MagicBot ffd248cfd4 Parse animation data 1 year ago
MagicBot 2d3b74e688 More parsing work. 1 year ago
MagicBot db94673256 More parsing work. 1 year ago
MagicBot 4d118cf634 More parsing work. 1 year ago
MagicBot e464f30445 Parsing grants 1 year ago
MagicBot 67e4011c65 Parsing grants 1 year ago
MagicBot 839be1f28f Always check for empty arrays. For loop processes them. 1 year ago
MagicBot 8ae4a67635 Refactor to array. 1 year ago
MagicBot e228ff8715 Parsing power actions. 1 year ago
MagicBot c4a4a8659a More parsing work. 1 year ago
MagicBot b26134ec72 Support for multiple damage type entries. 1 year ago
MagicBot 8656d6bfb9 New branch more progress 1 year ago
MagicBot 2ffd354f38 Logging null building 1 year ago
MagicBot 441b2fe42a Logging null building 1 year ago
MagicBot 2885457ea6 toUppercase() 1 year ago
MagicBot 1763266972 toUppercase() 1 year ago
MagicBot 2e5fa69942 Uppercase enum. 1 year ago
MagicBot e1e9bc026a Case fix in json 1 year ago
MagicBot 74d5ab7fea Removed string override 1 year ago
MagicBot e8e84e00af Merge Damage and Source types. 1 year ago
MagicBot a7b3fba018 Def rating is an int 1 year ago
MagicBot 5cdf1d5599 Weapon field parsing 1 year ago
MagicBot e6dd2b22d8 Weapon field parsing 1 year ago
MagicBot df6c3addcf Weapon field parsing 1 year ago
MagicBot e9d5c3db0e Weapon field parsing 1 year ago
MagicBot 36f12f9c97 Weapon field parsing 1 year ago
MagicBot 55213c409b Weapon field parsing 1 year ago
MagicBot d9474afa34 Weapon field parsing 1 year ago
MagicBot 9c8b690739 Weapon field parsing 1 year ago
MagicBot d20a2129aa Weapon field parsing 1 year ago
MagicBot 704375099b Wrapped in armor test 1 year ago
MagicBot bf9ac7accb Test code removed 1 year ago
MagicBot b2cf15139a Testing 1 year ago
MagicBot 4352e95f82 remove - for half-giant 1 year ago
MagicBot fb7a98761f Parsing discs 1 year ago
MagicBot 5d0f79892c Parsing discs 1 year ago
MagicBot d3f9b53810 Parsing discs 1 year ago
MagicBot 7632dc783a Parsing classes 1 year ago
MagicBot 61f28a588b Parsing classes 1 year ago
MagicBot e448c9a0d3 Parsing races 1 year ago
MagicBot 155bbfbf4e Parsing races 1 year ago
MagicBot cf0b9a0ae0 Bugfix in variable name. "None" support. 1 year ago
MagicBot 2b65e23b48 Enumeration updated. 1 year ago
MagicBot d363a9fc1b Try Catch 1 year ago
MagicBot a99b0072e0 Parsing cleanup 1 year ago
MagicBot f940d05d12 Parsing cleanup 1 year ago
MagicBot 8d80e0a46e Parsing cleanup 1 year ago
MagicBot 37fec69462 Parsing cleanup 1 year ago
MagicBot 09a196149e Parsing skill required. 1 year ago
MagicBot bb8e8780bd More parser work. 1 year ago
MagicBot bade2162a6 More parser work. 1 year ago
MagicBot 4e2578f3e0 Reworked CharacterSkill enum. 1 year ago
MagicBot 62e13ade01 String cleanup for skill enums. 1 year ago
MagicBot acea3875a1 String cleanup for skill enums. 1 year ago
MagicBot 354f10ddee Debug code removed 1 year ago
MagicBot 5e6d298ca0 Skills and mastery work. 1 year ago
MagicBot 9019b0ad29 Type selection work. 1 year ago
MagicBot b2112f2b01 Type selection work. 1 year ago
MagicBot 9e652761b8 Type selection work. 1 year ago
MagicBot fe54085cc6 Handler easier to debug. 1 year ago
MagicBot ef05e5c524 Skill and mastery work. 1 year ago
MagicBot d11c6988cc Skill and mastery work. 1 year ago
MagicBot 39de8439ba File reformat 1 year ago
MagicBot 15635534b0 Type enum with back support 1 year ago
MagicBot 5b547611a5 Starting work on type. 1 year ago
MagicBot 11e6b793d5 More constructor work. 1 year ago
MagicBot b9507381ed More constructor work. 1 year ago
MagicBot 3bd50a1ad1 More constructor work. 1 year ago
MagicBot e6452955b6 More constructor work. 1 year ago
MagicBot 14397d1550 More constructor work. 1 year ago
MagicBot 8267cbd8f0 More constructor work. 1 year ago
MagicBot 1ff2dc6733 More constructor work. 1 year ago
MagicBot 04d88d0523 More constructor work. 1 year ago
MagicBot 5e8b4e0e61 Parsing enumsets for eq slots 1 year ago
MagicBot 151230c611 Enum in client has a NONE type 1 year ago
MagicBot 52750e6d6b Fleshing out constructor 1 year ago
MagicBot 8ff112b802 Fleshing out constructor 1 year ago
MagicBot 88516d2857 Fleshing out constructor 1 year ago
MagicBot 9bf7c088cf Fleshing out constructor 1 year ago
MagicBot b0542a5bc3 Fleshing out constructor 1 year ago
MagicBot ac06e7723f Fleshing out constructor 1 year ago
MagicBot 12608d8d32 Fleshing out constructor 1 year ago
MagicBot 8018f1323d Fleshing out constructor 1 year ago
MagicBot 90874b01a7 Fleshing out constructor 1 year ago
MagicBot 6685fc9b02 Fleshing out constructor 1 year ago
MagicBot ad52546e0c Fleshing out constructor 1 year ago
MagicBot 2518b1421c Fleshing out constructor 1 year ago
MagicBot 551418c293 Fleshing out constructor 1 year ago
MagicBot 524ebbbdd7 Fleshing out constructor 1 year ago
MagicBot 40d0e765fe Fleshing out constructor 1 year ago
MagicBot 53b2f476e2 Fleshing out constructor 1 year ago
MagicBot d6a952f182 Fleshing out constructor 1 year ago
MagicBot 4eff5ad84e Data loaded at bootstrap. 1 year ago
MagicBot 0d93850813 dbHandler created 1 year ago
MagicBot 129eb1b818 Local cache defined. 1 year ago
MagicBot 0d8b8504b4 itemTemplate created 1 year ago
MagicBot a8cd6f4f74 Merge remote-tracking branch 'origin/feature-lore-ruleset' into magicbox-1.5.2 1 year ago
MagicBot d1f8e0a97e Merge remote-tracking branch 'origin/feature-server-restrictions' into feature-lore-ruleset 1 year ago
MagicBot c0a7ddc711 Using a string instead of a set. 1 year ago
FatBoy-DOTC c80b9013d2 Lore Rules 1 year ago
FatBoy-DOTC c1de1f148b dev command for item requirement info 1 year ago
MagicBot f36e2f19b8 MB_RULESET config entry added 1 year ago
MagicBot d46b2dc298 File reformat. 1 year ago
FatBoy-DOTC 6c1e2f1280 implement server side restrictions 1 year ago
FatBoy-DOTC f952785c8e implement server side restrictions 1 year ago
FatBoy-DOTC 8a769c60f2 implement server side restrictions 1 year ago
MagicBot 7fcbfba7e0 Case fix in elements 1 year ago
MagicBot 9be32a3ebf Case fix in elements 1 year ago
MagicBot cc8f817006 Generics lose type information 1 year ago
MagicBot 8f88da6016 Error handling for parsing of enum 1 year ago
MagicBot 4f441340ea Error handling for parsing of enum 1 year ago
MagicBot 6259cd7803 Error handling for parsing of enum 1 year ago
MagicBot 608324c500 Updated rs constructor to use new enumset system. 1 year ago
MagicBot 42362dca90 Method cleanup 1 year ago
MagicBot 20bebafc89 Tweak to string cleanup. 1 year ago
MagicBot bd2547046a Early exit on empty sets. 1 year ago
MagicBot 3666331de8 Column name fix 1 year ago
MagicBot dc6bce6f53 Testing of new helper at bootstrap. 1 year ago
MagicBot 5e1ebeb4df Enumset helper created 1 year ago
MagicBot e1e722f09f Remove old loader in preb for refactor 1 year ago
FatBoy-DOTC 4988f92d03 r8 mesh lookup changed location 1 year ago
FatBoy-DOTC e95005199c update r8 mesh 1 year ago
MagicBot e05d0d8daa promote type upgraded to class type. 1 year ago
MagicBot 141a65d48e Discripline type enum created 1 year ago
MagicBot d2cbfd491a Devcmd output cleanup 1 year ago
MagicBot 5f71ff2db5 Removed unused handlers. 1 year ago
MagicBot 2ea38519e4 charter sex requirements added 1 year ago
MagicBot 4fac0c3921 charter class requirements added 1 year ago
MagicBot 6a021f938d charter class enum completed. 1 year ago
MagicBot 544e715905 Enumset partial update. 1 year ago
MagicBot b3b6a9a913 Class requirements refactored to enumset. 1 year ago
FatBoy-DOTC d487a9d1ab server side race/cass restrictions 1 year ago
FatBoy-DOTC 28bf0413cc server side race/cass restrictions 1 year ago
FatBoy-DOTC 0e44293231 server side race/cass restrictions 1 year ago
FatBoy-DOTC 45a0747176 server side race/cass restrictions 1 year ago
FatBoy-DOTC 7e29ecde9b server side race/cass restrictions 1 year ago
FatBoy-DOTC 8000d523f1 server side race/cass restrictions 1 year ago
FatBoy-DOTC ca09587d87 server side race/cass restrictions 1 year ago
FatBoy-DOTC 726d68df31 server side race/cass restrictions 1 year ago
MagicBot 250e3407fa Merge remote-tracking branch 'origin/bugfix-safeguard-aggro' into magicbox-1.5.2 1 year ago
MagicBot fcd37cbae2 Dev cmd cleanup 1 year ago
MagicBot 70e76d9a1a Handling of mobs not in buildings. 1 year ago
MagicBot 6a3bd89095 Handling of mobs not in buildings. 1 year ago
MagicBot 4ccf03dfd3 Zone offset not world loc. 1 year ago
MagicBot f845c0ad80 Better handling of null guilds. 1 year ago
MagicBot 165752f6d6 Null fix in dev command. 1 year ago
FatBoy-DOTC c0ee8b82f8 Warehosue cleanup 1 year ago
FatBoy-DOTC cc1e0d8986 Warehosue cleanup 1 year ago
FatBoy-DOTC 7f6fbd2bff load mesh data and structure meshes 1 year ago
MagicBot 92d8ed9e3f Empty map supplied by the lookup method. 2 years ago
MagicBot 45b2443982 Log failed equipSet lookups. 2 years ago
MagicBot 3775fb336b Null check was done previously. 2 years ago
MagicBot f7a8ca33fc Zone size derived from template. 2 years ago
MagicBot c45265b085 Error trap added 2 years ago
MagicBot 79400b6b0e Error trap when deranking during maintenance. 2 years ago
MagicBot 2bff826a10 Error trap when deranking during maintenance. 2 years ago
MagicBot d5fc87c233 Update to player city size handling. 2 years ago
MagicBot 78a0416b19 Updated city planting to conform to class refactor project. 2 years ago
MagicBot eb5bc14974 Revert needs new branch. 2 years ago
MagicBot 7e99e8c7a4 Height and width flipped. 2 years ago
MagicBot 9b0f4d5aef Height and width flipped. 2 years ago
MagicBot b58049968f IDA says 256. 2 years ago
MagicBot 9bf0d3f7d1 Devcmd updated. 2 years ago
MagicBot 8300c47e4a Dev cmd updated 2 years ago
MagicBot c73fcc19f2 Dev cmd updated 2 years ago
MagicBot f93573177a Dev cmd updated 2 years ago
MagicBot fe9c6437d8 Dev cmd updated 2 years ago
MagicBot c110ffc4b1 Dev cmd updated 2 years ago
MagicBot 7af63d1519 Nominal after test. 2 years ago
MagicBot 31ba1f2c4c Height from zone center. 2 years ago
MagicBot 33afd13a8c Height from zone center. 2 years ago
MagicBot b341ffacbf Devcmd updated 2 years ago
MagicBot 0d1d1f0f37 Added raw blend value to class 2 years ago
MagicBot 3f59ed48d2 Extra parens removed 2 years ago
MagicBot de832ff497 Long cast needed 2 years ago
MagicBot 1aef82f422 Cleanup work. 2 years ago
MagicBot 065a1c9ceb Cleanup work. 2 years ago
MagicBot ff219ce696 Respawn thread configured 2 years ago
MagicBot 8bd406bcf4 Mobile implements Delayed interface 2 years ago
MagicBot 7b70b680f0 Modified sequencing 2 years ago
MagicBot c3586a70fd Modified sequencing 2 years ago
MagicBot cc7d741681 Modified sequencing 2 years ago
MagicBot ce0dfdabfb Zones with zero blend inherit from parent 2 years ago
MagicBot 737327fa8a Revert after test 2 years ago
MagicBot b1e79284e4 Thread count test 2 years ago
MagicBot 29b5955e9e Peace zone needs to come from zone tree 2 years ago
MagicBot 3986dc0686 Peace zone needs to come from zone tree 2 years ago
MagicBot 59190e33c9 Template added for player cities (0) 2 years ago
MagicBot 091b1a1d5b Start refactor to use templates 2 years ago
MagicBot cb0ba901de fix in column name 2 years ago
MagicBot 14ba9d0f7f SQL statement set. 2 years ago
MagicBot ec9bc437f3 Templates loaded at bootstrap 2 years ago
MagicBot 930aa73657 rs constructor completed 2 years ago
MagicBot cf2bf2dacf DBhandler created for templates 2 years ago
MagicBot 5a8508c16c Template collection created 2 years ago
MagicBot 5bcc0ed84d Template class created 2 years ago
MagicBot 4795a315ad Template now templteID to make room for the actual template. 2 years ago
MagicBot 6559f232a3 Dev command updated 2 years ago
MagicBot db8b33a621 No longer pre-cache players 2 years ago
MagicBot 781a4ee16d Load cities after buildings 2 years ago
MagicBot 7ce94a5166 should never pull directly form cache 2 years ago
MagicBot a487a7bd2f Removed duplicate and unused code 2 years ago
MagicBot f0fedcc049 Cleanup and reformat 2 years ago
MagicBot 3a63f98ac3 Error log added 2 years ago
MagicBot 4c994e6e55 Removed old method 2 years ago
MagicBot 1c93846ed3 Full error is output 2 years ago
MagicBot 3ef444c128 Cleanup in runafterload 2 years ago
MagicBot eaaba8ab0c Refactored assignment. 2 years ago
MagicBot 1daa45d604 New collection utilized 2 years ago
MagicBot cf7e19bfde Patrol points loaded 2 years ago
MagicBot 6a76cc7a29 Patrol points loaded 2 years ago
MagicBot fff16d2211 Comment cleanup 2 years ago
MagicBot a2df7cda22 Inlined populate world method 2 years ago
MagicBot 5858fa4de4 R8 bonus application moved to City 2 years ago
MagicBot fb6ec0caf4 Changed method used to direct bounds 2 years ago
MagicBot 944bcb7e84 Changed method used to direct bounds 2 years ago
MagicBot 4274e6a148 Cleanup of friend and condemned initialization. 2 years ago
FatBoy-DOTC 5e629e7890 null checks for Building.getFriends() 2 years ago
FatBoy-DOTC e991a01b50 final touch up 2 years ago
FatBoy-DOTC 7a1700cec3 finalized 2 years ago
FatBoy-DOTC 79eb5b9cdf stairs region corrected 2 years ago
FatBoy-DOTC 7886aa6041 building and region lookup completed 2 years ago
FatBoy-DOTC b928bedeb6 new region lookup 2 years ago
MagicBot beb2b47162 Collection used and old method deleted. 2 years ago
MagicBot 2cc37481ca New collection created in handled and loaded from db 2 years ago
MagicBot 5ac62d60be Collection used and old handler removed. 2 years ago
MagicBot 6fb1e2e5f1 Load collection from db 2 years ago
MagicBot 385695a610 Load collection from db 2 years ago
MagicBot 838776c471 Method made static and moved to manager. 2 years ago
MagicBot 44743b772b Every building does not need a rebuild mine method. 2 years ago
MagicBot 88f67efd51 Want to fail fast here 2 years ago
MagicBot a04bdc147f Parent zone set 2 years ago
MagicBot 145d9bafa0 Removed unused methods 2 years ago
MagicBot d2c00cce70 Removed unused methods 2 years ago
MagicBot 602f8bc843 Cleanup building initialization 2 years ago
MagicBot 89cb808481 Removed old handlers 2 years ago
MagicBot 4d290c9064 Refactored city planting to use new system. 2 years ago
MagicBot 9ee60c9361 Refactored Zone to new system 2 years ago
MagicBot 77cc91319a Refactored Zone to new system 2 years ago
MagicBot ee4009bf8d Refactored Zone to new system 2 years ago
MagicBot ff1c0bd347 Refactored Zone to new system 2 years ago
MagicBot e1add3c7e6 Refactored Zone to new system 2 years ago
MagicBot bf06734a9b Refactored Zone to new system 2 years ago
MagicBot 5ed21f9b76 Refactored Zone to new system 2 years ago
MagicBot e689cb541a Refactored Zone to new system 2 years ago
MagicBot da32765902 Change to AWO 2 years ago
MagicBot 9392ceda61 Comment cleanup 2 years ago
MagicBot 694b10d3b2 Begin refactor of cities 2 years ago
MagicBot 6b3c64faea Minions loaded for guard captain 2 years ago
MagicBot ab17dd08cd Refactor towards new bootstrap system. 2 years ago
MagicBot f889bcf927 Building handler added 2 years ago
MagicBot 34024c9fb4 New handlers created 2 years ago
MagicBot 9d5e16aa5c Removed debug command 2 years ago
MagicBot f1a2bea67c Pixel values are shorts for memory 2 years ago
FatBoy-DOTC 5d4192bbcf add offset for runegate teleport regions 2 years ago
FatBoy-DOTC ea6ea4b0ee teleport work 2 years ago
FatBoy-DOTC 7f4d47505e teleport cleanup 2 years ago
FatBoy-DOTC f9a3b17677 teleport cleanup 2 years ago
FatBoy-DOTC d0374a2dea random delay between mob chase 2 years ago
FatBoy-DOTC cb89cc17be update lastChase timestamp for mobs 2 years ago
FatBoy-DOTC d506807a8f 1 second delay for mobs chasing target 2 years ago
FatBoy-DOTC 1a0fc309f9 remove mob movement delay 2 years ago
FatBoy-DOTC 5ed7662798 1 second delay for mob movements 2 years ago
FatBoy-DOTC e3d6a32554 1 second delay for mob movements 2 years ago
FatBoy-DOTC 6f990d488f region assignment in AbstractCharacter.setLoc 2 years ago
MagicBot 610de198e9 All 0 heightmap for PLANAR 2 years ago
MagicBot 928be0facb Named for context 2 years ago
MagicBot 80799753be Comment cleanup 2 years ago
MagicBot f9d2232a9b Comment cleanup 2 years ago
MagicBot cbd8685d4b Guild zone performance tweak 2 years ago
MagicBot 274cf08dad Comment cleanup 2 years ago
MagicBot 2cbe5f38cd Configuration moved to constructor 2 years ago
MagicBot 3d4058ad01 Height for seafloor 2 years ago
MagicBot 761ec6f4af Blend test 2 years ago
MagicBot 5900068898 Blend test 2 years ago
MagicBot 13f5e3eff2 Comment cleanup 2 years ago
MagicBot db9e950558 Comment cleanup 2 years ago
MagicBot 3f93bf08fb Test raw blend 2 years ago
MagicBot 65eebcbb5d Blend updated 2 years ago
MagicBot 6ed3495780 Blend updated 2 years ago
MagicBot 06049a7135 Dev cmd updated 2 years ago
MagicBot 12e073ca46 Dev cmd updated 2 years ago
MagicBot 4ee4054ab3 Dev cmd updated 2 years ago
MagicBot 11664a9218 Dev cmd updated 2 years ago
MagicBot d414c19904 Set parent zone properly 2 years ago
MagicBot 279a0aed91 Use half extents as offset from center 2 years ago
MagicBot c6e0e36531 Dev command updated 2 years ago
MagicBot 10b9f19036 Dev command updated 2 years ago
MagicBot ad661ea464 Dev command updated 2 years ago
MagicBot affe6b08ab Method is now called 2 years ago
MagicBot 1b2c218e83 property conforms to JSON 2 years ago
MagicBot 9e96add299 Class cleanup 2 years ago
MagicBot 9f9c3ba7f1 Ratios initialized. 2 years ago
MagicBot d15b8a5246 Opposite of 1006300 created as 1006301. 2 years ago
MagicBot c1e1c730bb Opposite of 1006300 created as 1006301. 2 years ago
MagicBot a53c68054d Only one kind of zone. 2 years ago
MagicBot 99a79df02d abs is up the chain a step 2 years ago
MagicBot 1a0f318968 abs is up the chain a step 2 years ago
MagicBot 6ac65c73d5 Method cleanup 2 years ago
MagicBot dc5a778610 Method cleanup 2 years ago
MagicBot 20d9a232cc Method cleanup 2 years ago
MagicBot 280bd61e2a Offset support for blend. 2 years ago
MagicBot dadfc15d39 Class cleanup and comments 2 years ago
MagicBot 1764041272 Class cleanup and comments 2 years ago
MagicBot b9ef4eee63 Class cleanup and comments 2 years ago
MagicBot 823061c699 Improved clamping 2 years ago
MagicBot 6809988e9c bugfix in variable assignment 2 years ago
MagicBot a1a3ea6234 Debug code added 2 years ago
MagicBot 3684296959 Assignment removed for now 2 years ago
MagicBot 68c8d91871 Assignment removed for now 2 years ago
MagicBot 7655b67338 Debug code added 2 years ago
MagicBot 68aef50283 Debug code added 2 years ago
MagicBot 6494e07e9e Test baseline 2 years ago
MagicBot 859de1004e Platform revert 2 years ago
MagicBot 0afc8a2dc5 Platform update 2 years ago
MagicBot f73184ac1e Blend cleanup 2 years ago
MagicBot 52b66be43b Blend cleanup 2 years ago
MagicBot bd208bd1ab Blend cleanup 2 years ago
MagicBot f7952008cd Blend cleanup 2 years ago
MagicBot a0c82d3f3f Blend cleanup 2 years ago
MagicBot dd01fd1688 Proper setting of maxpy 2 years ago
MagicBot d2dc95c169 Dev command updated 2 years ago
MagicBot 53f7165e24 Blend function installed 2 years ago
MagicBot c90a250ba7 Blend function installed 2 years ago
MagicBot e80dd66809 Interpolation cleanup 2 years ago
MagicBot 95558371df Method inlined 2 years ago
MagicBot 085f79cefd Sanity check added 2 years ago
MagicBot a17b9fdd13 Zone extents derived from zone 2 years ago
MagicBot 73b6854266 Map loaded updated 2 years ago
MagicBot fe8d512596 WorldAltitude for seafloor set 2 years ago
MagicBot ef8754c018 WorldAltitude for seafloor set 2 years ago
MagicBot 483ccbff00 WorldAltitude for seafloor set 2 years ago
MagicBot 07f736b8e6 WorldAltitude for seafloor set 2 years ago
MagicBot cd1de763e3 Terrain size set by zone radius 2 years ago
MagicBot d6d4008348 Error trap 2 years ago
MagicBot 4bbbbf9fa2 Error trap 2 years ago
MagicBot a3d29bb8f0 Error trap 2 years ago
MagicBot 0d58aee2fe Terrain type is capitalized 2 years ago
MagicBot bc5d0cc4a9 Terrain zone set in constructor 2 years ago
MagicBot 59c3bea2d6 Error logging added 2 years ago
MagicBot 13163ddb7e Error logging added 2 years ago
MagicBot 02a9256950 Configure player cities and PLANAR 2 years ago
MagicBot d31d6c1f95 Configure player cities and PLANAR 2 years ago
MagicBot bc099e9dc0 Constructor filled in 2 years ago
MagicBot 79bf0523a5 Constructor filled in 2 years ago
MagicBot a0d2ccb5ab Completed partial refactor. 2 years ago
MagicBot df54840a88 Completed partial refactor. 2 years ago
MagicBot 4b62517d99 Partial refactor. 2 years ago
MagicBot 0ce9ec3ae2 Output conforms with client 2 years ago
MagicBot 5279fa8fbe Dev command updated 2 years ago
MagicBot 0d75e6db9b Start terrain refactor 2 years ago
MagicBot ffb541a12e Prepare for terrain 2 years ago
MagicBot 5fdaa11367 Prepare for terrain 2 years ago
MagicBot 6b339da061 Count propagated 2 years ago
MagicBot f454fb5e1c Need float value 2 years ago
MagicBot 5db8c47aa8 Clamp value at pole 2 years ago
MagicBot e7571f3e83 Audit of zone loc 2 years ago
MagicBot d9b513e88c cell count cached 2 years ago
MagicBot 7dcde390cd Flip Flop 2 years ago
MagicBot 6a750f4eb2 Unused methods removed 2 years ago
MagicBot c6d24d25cc Method cleanup 2 years ago
MagicBot c19ec913cb Disable blend until after refactor. 2 years ago
MagicBot 438ea04a1a Comment cleanup 2 years ago
MagicBot d7044c1663 Depth less one 2 years ago
MagicBot 3497d275a8 File reformat 2 years ago
MagicBot 6fd61889a8 byte array to save memory. 2 years ago
MagicBot 85983954de Conform to database 2 years ago
MagicBot 1e9eec2c48 Heightmap is now an integer. 2 years ago
MagicBot bd97745ed1 class and table schema now conform to JSON 2 years ago
MagicBot 34d450fecf class and table schema now conform to JSON 2 years ago
MagicBot be107c0858 class and table schema now conform to JSON 2 years ago
MagicBot 8289786099 class and table schema now conform to JSON 2 years ago
MagicBot 56f159d50a class and table schema now conform to JSON 2 years ago
MagicBot 61961bab05 class and table schema now conform to JSON 2 years ago
MagicBot e0387dce00 class and table schema now conform to JSON 2 years ago
MagicBot 46b3db033b Inlined empty getters 2 years ago
MagicBot bf9fdae58b Method moved to manager. 2 years ago
MagicBot 7b8cafc8ac Cleanup of interpolation method 2 years ago
MagicBot 7793fab5d2 Unnecessary initialization. 2 years ago
MagicBot 1ddcda5c5d Logging to console 2 years ago
MagicBot 9714393538 Pixel data loaded from TARGA files 2 years ago
MagicBot d46f369599 Unused variables 2 years ago
MagicBot 2dfd2a53c2 Testing image reader 2 years ago
MagicBot e3675ec9a4 Testing image reader 2 years ago
MagicBot cb2ed0c766 Testing image reader 2 years ago
MagicBot 6638fdcaff Framework to load pixel data 2 years ago
MagicBot d0b4634429 Framework to load pixel data 2 years ago
MagicBot 1fdf1f1339 New collection defined for pixel data 2 years ago
MagicBot 6290c6d0af Start separate PLANAR from TARGA 2 years ago
MagicBot 26a3ea4b18 Release bounds after usage. 2 years ago
MagicBot c7b2245005 Unused methods removed 2 years ago
MagicBot 5ba06796b1 Interpolating from adjusted altitudes. 2 years ago
MagicBot e359b1dfdf Interpolating world altitude 2 years ago
MagicBot cbc8216fe0 Blender 2 years ago
MagicBot da238b9986 Cleanup in bounds configuration 2 years ago
MagicBot 897ddfe77a Bounds must be set before setting parent. 2 years ago
MagicBot 80f2db794f Bounds must be set before setting parent. 2 years ago
MagicBot 913a2601d5 Update to blend logic. 2 years ago
MagicBot 40c27eef79 Update to blend logic. 2 years ago
MagicBot df45e00fbd 255 to normalize 2 years ago
MagicBot a323f1ffb7 max based on min blend 2 years ago
MagicBot ea6092db8a max based on min blend 2 years ago
MagicBot 8c6eb48876 max based on min blend 2 years ago
MagicBot 37d2f8a8ad DevCmd output updated 2 years ago
MagicBot f18acf3e68 DevCmd output updated 2 years ago
MagicBot 3fb08ca2c3 Visibility promotion for a data class 2 years ago
MagicBot 83be09d643 Comment and name cleanup 2 years ago
MagicBot 6de8249fb0 Devcmd output updated. 2 years ago
MagicBot 013ddcff66 heightmap blend configuration completed. 2 years ago
MagicBot 8ece4caf1c value is halfExtent 2 years ago
MagicBot a94b12e8cd Correction to blend configuration. 2 years ago
MagicBot c38103068e Correction to blend configuration. 2 years ago
MagicBot f8caaf0e99 Correction to blend configuration. 2 years ago
MagicBot ee809ddb37 clamping cleaned up. 2 years ago
MagicBot 227bd0523e clamping cleaned up. 2 years ago
MagicBot c096b29521 parameter ordering fixed. 2 years ago
MagicBot 6a0520b126 Blend lerp implemented. 2 years ago
MagicBot 240373898a Preparation for blend lerp insertion. 2 years ago
MagicBot d33ad0cdef Preparation for blend lerp insertion. 2 years ago
MagicBot a3a3070158 Blending configuration setup in SetParent() 2 years ago
MagicBot b717c3d550 Starting work to sync heightmap model with Shadowbane. 2 years ago
MagicBot 9aa5820ac2 Cleanup of getWorldHeight() 2 years ago
MagicBot 1ac65dd9bd Tightened clamping. 2 years ago
MagicBot 797a6951a8 Tightened clamping. 2 years ago
MagicBot 7268de6e1e Test of raw heightmaps 2 years ago
MagicBot fc602ce9f4 Test of raw heightmaps 2 years ago
MagicBot 403bff27b4 Test of raw heightmaps 2 years ago
MagicBot 44b9ba911d Indices added to command output. 2 years ago
MagicBot c24f8fc85b Login check modified for testing. 2 years ago
MagicBot 75c56cbeee Devcmd output updated. 2 years ago
MagicBot 15f42c9658 Devcmd output updated. 2 years ago
MagicBot 525d0c21bb Devcmd output updated. 2 years ago
MagicBot cbf05cfe5b Devcmd output updated. 2 years ago
MagicBot aaa506a581 Divisor testing. 2 years ago
MagicBot a2fbfad00e Revert initialize. 2 years ago
MagicBot 031c52e25a Divisor test. 2 years ago
MagicBot 693dfd827c Updated dev cmd output 2 years ago
MagicBot d26a2d35bf Multiple not divide 2 years ago
MagicBot 9839de128c Variable initialized. 2 years ago
MagicBot 12872ee51e Variable initialized. 2 years ago
MagicBot 2af08d6823 Reformat file. 2 years ago
MagicBot f646075311 Static method to save memory. 2 years ago
MagicBot dfca767476 Multiple not divide. 2 years ago
MagicBot fd7b5952c2 Dev command updated 2 years ago
MagicBot 4b46eddc47 Dev command updated 2 years ago
MagicBot e26121177f World altitude set in setparent. 2 years ago
MagicBot 91eb0c314f SeAudit command created 2 years ago
MagicBot 1d7a2d4eae Added sea level info to command. 2 years ago
MagicBot e4235d4d75 Bugfix in setparent. 2 years ago
FatBoy-DOTC 41a83115be safehold guard exclusion from equipment dropping 2 years ago
FatBoy-DOTC 3ce887cb34 NPC are immune to all 2 years ago
FatBoy-DOTC 874eb6189e NPC apply runes 2 years ago
FatBoy-DOTC 5c5c491597 debug code 2 years ago
FatBoy-DOTC ff78c1443c null check 2 years ago
FatBoy-DOTC cdc1c2d776 region assignment 2 years ago
FatBoy-DOTC a004c247ab abstract character cleanup 2 years ago
FatBoy-DOTC 048e90fb8f NPC all apply "shopkeeper" rune 2 years ago
FatBoy-DOTC c1498145e6 NPC rune work 2 years ago
FatBoy-DOTC 7654d5183a region lookup and height offset for AbstractCharacters when setLoc is called 2 years ago
FatBoy-DOTC 9b7fc0a93b region height work 2 years ago
FatBoy-DOTC 200318ddcf add region height to world height in setLoc 2 years ago
FatBoy-DOTC 1fdd0a1b32 initialize runes array list for NPC 2 years ago
FatBoy-DOTC 8869772fa4 print effects command 2 years ago
FatBoy-DOTC 96bc894962 print runes command 2 years ago
FatBoy-DOTC 5a9f5f2eca NPCs apply runes from set 2 years ago
FatBoy-DOTC bd9dbcbb42 NPCs load rune sets 2 years ago
FatBoy-DOTC f8269bb764 character runes moved form PlayerCharacter to AbstractCharacter 2 years ago
FatBoy-DOTC c215047c00 teleport method removed form PLayerCharacter to use AbstractCharacter.teleport instead 2 years ago
FatBoy-DOTC a313e3f364 setRegion removal 2 years ago
FatBoy-DOTC b34be1184e null region assignment 2 years ago
FatBoy-DOTC e23c5527da null region assignment 2 years ago
FatBoy-DOTC 847e62dd27 setLoc now handles region assignment 2 years ago
MagicBot f5d83aa259 Class cleanup of bonus code and unused methods. 2 years ago
MagicBot 4a5c0ae5a0 Cities don't actually have a location. They are a property of a zone. Let's start here. 2 years ago
MagicBot b4a4323906 Minor formatting cleanup. 2 years ago
MagicBot 48fc5af5f7 Removed unused variables from class. 2 years ago
MagicBot a1753a28ec Player cities write correct offset. 2 years ago
MagicBot fa4039cf63 Add y offset to zone altitude. 2 years ago
MagicBot 4b0814c0a1 Add y offset to zone altitude. 2 years ago
MagicBot 78d0b06b36 Revert for testing. 2 years ago
MagicBot 426bdf5df3 Removed yoffset from world altitude. 2 years ago
MagicBot 5dbad7ebd0 Player cities set to white. 2 years ago
MagicBot 6ef33c5b7f Update to world altitude calculation 2 years ago
MagicBot 3737a6eace Sea level logic updated. 2 years ago
MagicBot 967e129724 Sea level logic updated. 2 years ago
MagicBot e9d549377e Sea level logic updated. 2 years ago
MagicBot 924b8af827 Sea level logic updated. 2 years ago
MagicBot 045ee73b61 rework of world altitude calculation. 2 years ago
MagicBot 5d9d13ce07 Any argument rebuilds world altitude. 2 years ago
MagicBot 5a1347ec50 Devcmd updated 2 years ago
MagicBot c705f45856 Devcmd updated 2 years ago
MagicBot 83fc129d05 Dev command output update. 2 years ago
MagicBot d7cde3a77f Grid flip testing 2 years ago
MagicBot afb1ad8e94 Grid flip testing 2 years ago
MagicBot 15a79ee9bd devcmd output updated with grid. 2 years ago
MagicBot 68794c170b Removed usless method: added grid to cmd output. 2 years ago
MagicBot a9d84749ba Removed worthless command. 2 years ago
MagicBot dd5fc323ef bugfix in array loading 2 years ago
MagicBot cf1547d077 DevCmd Updated 2 years ago
MagicBot 9664c99e06 DevCmd Updated 2 years ago
MagicBot 17b7fb6999 Unused method 2 years ago
MagicBot 21a4db8a81 Pixels set to 0 2 years ago
MagicBot eabdabcfcd No insane bucket widths. 2 years ago
MagicBot c548383a4c Should not be putting empty maps into the collection with id 0. 2 years ago
MagicBot 7337f4be1e DevCmd update. 2 years ago
MagicBot d84f223b9d DevCmd update. 2 years ago
MagicBot 5431112186 DevCmd update. 2 years ago
MagicBot ff743151c6 DevCmd update. 2 years ago
MagicBot b923392b53 DevCmd update. 2 years ago
MagicBot 15d272c621 DevCmd update. 2 years ago
MagicBot eefa50b2c3 DevCmd update. 2 years ago
MagicBot ecc7a152f7 DevCmd update. 2 years ago
MagicBot 7bf31f9a47 Rework of class interface. 2 years ago
MagicBot 7dc970ff53 Rework of dev command; junk deleted. 2 years ago
FatBoy-DOTC 97d71ec361 move to point handler revert 2 years ago
FatBoy-DOTC 003b939d33 Move to point message variable naming and handler cleanup 2 years ago
FatBoy-DOTC 9989cbff24 pc.teleport uneeded 2 years ago
FatBoy-DOTC 426ef989f8 can no longer run to invalid targets 2 years ago
FatBoy-DOTC ca6e079053 fresh start 2 years ago
FatBoy-DOTC 13644fd308 use target from message in move to point 2 years ago
FatBoy-DOTC 1ec76ae3fc use target from message in move to point 2 years ago
FatBoy-DOTC 51d75146cc NPC added to attack message handler switch 2 years ago
FatBoy-DOTC bc4222646d combat target usage 2 years ago
FatBoy-DOTC c3e206e3b1 null check 2 years ago
FatBoy-DOTC 04147e11cc logic for moveToPoint message handler 2 years ago
FatBoy-DOTC 545cb4cddf null check for building pulled 2 years ago
FatBoy-DOTC 0f948d4e2a removed redundant setCombatTarget 2 years ago
FatBoy-DOTC 5fb3e0fe14 switch for target type in attack message handler 2 years ago
MagicBot fb87dfd91e TargetType declared. 2 years ago
FatBoy-DOTC be8967b05f null set for target 2 years ago
FatBoy-DOTC 8acfff7faa null check for target 2 years ago
FatBoy-DOTC 18e1f4bd28 early exits for attack message handler 2 years ago
MagicBot 74f88a6643 Unused variable removed 2 years ago
FatBoy-DOTC 47fe764cb0 early exits for attack message handler 2 years ago
MagicBot 9e53770e6c Handler added to protocol class. 2 years ago
MagicBot a9cc001791 Handler added to protocol class. 2 years ago
MagicBot c24913d124 Handler filled in with logic. 2 years ago
MagicBot 63bf0b6070 Handler created for AttackMsg 2 years ago
FatBoy-DOTC 50792327a4 moveToPoint attack handling 2 years ago
FatBoy-DOTC 46e67be8ca player character attacks added to city outlaws 2 years ago
FatBoy-DOTC e7c3ba5eba guards and siege engines ignore idle state with no players loaded 2 years ago
FatBoy-DOTC ea86ab2300 guards will revert cmbat target to null if its a player and is no longer loaded 2 years ago
FatBoy-DOTC 501e8c937f guards use city player memory to determine whether they go idle or not 2 years ago
FatBoy-DOTC cae5c36d84 guards will aggro siege equipment not belonging to the guild 2 years ago
FatBoy-DOTC 1b92fa76e1 characters that attack city friendly buildings are added to cityOutlaws 2 years ago
FatBoy-DOTC bbdb683061 players who attack buildinsg added to cityOutlaw list 2 years ago
FatBoy-DOTC 2d04547c74 display seeInvis level in aiInfo command 2 years ago
FatBoy-DOTC 5192c801f7 CombatUtilities cleanup 2 years ago
FatBoy-DOTC d966d50bd5 removed duplicate variables in MobBase 2 years ago
FatBoy-DOTC 7e20db33f2 final guard stat revisions 2 years ago
FatBoy-DOTC 669ee7215b added range modification for guards 2 years ago
FatBoy-DOTC 6fa00a43a4 removed unused method 2 years ago
FatBoy-DOTC 4edf740179 finished modifications for guards 2 years ago
FatBoy-DOTC c7abb4c920 stance modifiers for guards 2 years ago
FatBoy-DOTC df3964110a stances for guards 2 years ago
FatBoy-DOTC 96231260bc consolidated all guards to GuardLogic 2 years ago
FatBoy-DOTC 967303d2de outlaw and hate value moved to modifyHealth 2 years ago
FatBoy-DOTC 955481773d wall archer early exit for canCast 2 years ago
FatBoy-DOTC d66a7049e8 guard walking bug fix 2 years ago
MagicBot e73b8d2826 Harden against null 2 years ago
MagicBot ea23003807 Hirelings removed from zone mob set 2 years ago
MagicBot 23f41f8ae7 Minions always have offset not determined by captain being alive. 2 years ago
MagicBot 3f416f83d3 Patrol points only set once. 2 years ago
MagicBot 931d1992b6 Patrol points are reset each patrol. 2 years ago
MagicBot fd927a7052 New method implemented. 2 years ago
MagicBot dd46224afe New method implemented. 2 years ago
MagicBot be2b29ccc7 New method implemented. 2 years ago
MagicBot c93e3bc947 Update to ordering of logic 2 years ago
MagicBot 7d49395c41 New method implemented. 2 years ago
MagicBot f4c9e6d7b8 Remove hireling method defined in manager. 2 years ago
MagicBot b7a907c8c8 db method to support removing all minions 2 years ago
MagicBot 36485a0f01 Formation enforced when captain is dead. 2 years ago
MagicBot efec1b4444 Load data only. 2 years ago
MagicBot bdf6500260 Outlaw moved before guild check. 2 years ago
MagicBot db4eb0579e Aggro code removed from check to send mob home. 2 years ago
MagicBot 76f33534d4 Captains force march minions 2 years ago
MagicBot 39fea5bc2f Captains order minions to patrol 2 years ago
MagicBot 660d5c1270 Captains order minions to patrol 2 years ago
MagicBot 781e2fc9b2 Comment adjusted 2 years ago
MagicBot c2a2464fe8 Errant delimiter removed. 2 years ago
MagicBot beb3c15eb3 Miniond patrol on own if captain is dead. 2 years ago
MagicBot 553010bb7b Minions get marching orders from captain 2 years ago
MagicBot 8d12bbf453 Formation offset for minions. 2 years ago
MagicBot fa7588826a Pets set to not alive when dismissing. 2 years ago
MagicBot 332f191e19 Merged switch cases. 2 years ago
MagicBot 8151382a6b Patrol points inherited from barracks not captain. 2 years ago
MagicBot ae44a21be1 Duplicate range check removed. 2 years ago
MagicBot b0ff0995de Start consolidation of guard logic 2 years ago
MagicBot e711095ecd Start consolidation of guard logic 2 years ago
MagicBot 08de97a2a8 Guild check removed from outlaw condition. 2 years ago
MagicBot 5eb6302d2a Null check is made before this method call. 2 years ago
MagicBot 2e346ae7fd Rework of combat deference to captain. 2 years ago
MagicBot 1285d12915 Consolidated cast methods. 2 years ago
MagicBot 8b5cb9258e dd roll removed 2 years ago
MagicBot ef3e3a0392 .contains check needed. 2 years ago
MagicBot 8fca6572f9 Typo in comment fixed. 2 years ago
MagicBot 33eaf0e583 Outlaws added to aiinfo. 2 years ago
MagicBot 16acd1c08c Simplify logic; variable is provided. 2 years ago
MagicBot a8e8804ce3 Attacking guard flags you as an outlaw. 2 years ago
MagicBot b8c0f997f6 Fix typo in thread name. 2 years ago
MagicBot 11e63f38b1 Update to mob retaliate logic. 2 years ago
MagicBot ff36d8f3db Modification to minion retaliate. 2 years ago
MagicBot 975542d8af sql column update. 2 years ago
MagicBot d71a9415b4 Integer object not int signature. 2 years ago
MagicBot e948da95b5 Column name updated. 2 years ago
MagicBot 9a6510c320 Minions now use copyonwrite collection. Slot agnostic. 2 years ago
MagicBot 57ff1ede97 Name is all that's needed. 2 years ago
MagicBot 7c0f2563f7 Already added to collection at this point. 2 years ago
FatBoy-DOTC d11a954b40 remove test block 2 years ago
FatBoy-DOTC f354339af1 null checks 2 years ago
FatBoy-DOTC 89658bb77a null checks 2 years ago
FatBoy-DOTC 1ff0238b6e skill loading bypass for guards 2 years ago
FatBoy-DOTC e777434d57 Mob specific rune skill loading 2 years ago
FatBoy-DOTC ee6efc30a3 rune skill loading broken into static method in NPCManager 2 years ago
FatBoy-DOTC 0758bb5f38 SkillsBase are now cached when missing for mobs 2 years ago
FatBoy-DOTC 299d5725a6 lookup using name 2 years ago
FatBoy-DOTC d7c9b31ec7 indentation and comment 2 years ago
FatBoy-DOTC 6c78bee5c1 null check 2 years ago
FatBoy-DOTC dba0cbd5f9 skill type not name used 2 years ago
FatBoy-DOTC 0752e780f2 mobs load skills 2 years ago
MagicBot c43919ce01 Level loaded into object. 2 years ago
MagicBot 0d95510b72 captain uuid added to aiInfoCmd 2 years ago
MagicBot 60fb2571a2 Support for loading of skill adjustment map. 2 years ago
MagicBot 90cbe90492 Merge remote-tracking branch 'origin/mobile-effects' into magicbox-1.5.2 2 years ago
FatBoy-DOTC 95c203b0ed load and apply mobbaseSkill 2 years ago
FatBoy-DOTC 449c5c5c77 infrastructure for mob skills loading 2 years ago
FatBoy-DOTC 9aff208403 guard captains to move tot heir first patrol point right away 2 years ago
FatBoy-DOTC 4318849127 minion relatiate handled inside retaliate function 2 years ago
FatBoy-DOTC 29e8cdf699 attacking guard minion will no longer be ignored 2 years ago
MagicBot 4427dbdcad Fix in exception for werwolf/werebear (magic numbers) 2 years ago
MagicBot af4c3819b9 contract added to aiInfoCmd 2 years ago
MagicBot 39379e1ac0 Sight check moved out of cancast. 2 years ago
MagicBot 71eeb3f6b8 Variable hidden elevated to abschar. 2 years ago
MagicBot d409ef49af Can cast added to aiinfo. 2 years ago
MagicBot e7a80e9280 Comment cleanup 2 years ago
MagicBot 65c2d2ea0b Logic cleanup when dealing with contracts. 2 years ago
MagicBot 92666dca21 Invis check precedes power check. 2 years ago
MagicBot 3e1a79c248 AI info dev command updated. 2 years ago
MagicBot 73a1ce083a Unused method removed. 2 years ago
MagicBot 22dacebc5e Override unnecessary. 2 years ago
MagicBot 80d0948e24 Contract power handling now additive. 2 years ago
MagicBot 58b427b977 Contract support added to mobile ai when gathering powers. 2 years ago
MagicBot a4cab3565a Value cannot be null. Set early in runafterload. 2 years ago
MagicBot 205c9580e3 sql column name fix. 2 years ago
MagicBot 70a0ed135b Refactored mob powers to rune powers. Now uses rune_id to call into system which is derived in the getter to support minions. 2 years ago
FatBoy-DOTC f556181d77 guardlist serialization displays correct minion rank 2 years ago
FatBoy-DOTC d48e26904e revert last commit 2 years ago
FatBoy-DOTC 19232ac405 archers added to human guards as minions 2 years ago
FatBoy-DOTC 9ee2ccc8af werebear and werewolf guard can use powers 2 years ago
FatBoy-DOTC 7079bb6a63 resist loading refactored as static method to NPCManager 2 years ago
FatBoy-DOTC 0ab5827ee5 mobs to load equipment resists 2 years ago
FatBoy-DOTC c5443f622c utilization and assignment of aiAgentType 2 years ago
FatBoy-DOTC e4aa276cca cleanup old code 2 years ago
FatBoy-DOTC 90ff2d679e create and use applyMobbaseEffects method, remove old unused methods 2 years ago
FatBoy-DOTC da26c35d5a mobbase loads effectsList 2 years ago
MagicBot 779e3da74e Cleanup of clear minion logic. 2 years ago
MagicBot e358c08773 Removed msg from handler. 2 years ago
MagicBot 2945fa3a47 Class reformat and removal of try block. 2 years ago
MagicBot ab1541e741 Class not needed on login server. 2 years ago
MagicBot 3aeaa709a5 Comment cleanup 2 years ago
MagicBot 91e627df6b AI moved to top of runafterload. 2 years ago
MagicBot d0795e9e1c Rework of agent type init in runafterload. Only used for 2 instances from disk. 2 years ago
MagicBot 0e12dd4874 Contract powers loaded first to preserve ordering. 2 years ago
MagicBot 25c0e48181 Loot bypass now uses agent type. 2 years ago
MagicBot 0d43c3620d Value is set earlier. 2 years ago
MagicBot 2f6137f8df Minion agent type set properly. 2 years ago
FatBoy-DOTC 2843b86a93 Moved agent type to top of constructor. 2 years ago
MagicBot 8235de07ff Updated output of devcmd. 2 years ago
MagicBot e2f9a4c7f0 Guard minions inherit powers from captain. 2 years ago
MagicBot 55c6e3cf93 Refactored out duplicate power collection. 2 years ago
MagicBot 11c154e564 Assignment fix and comment cleanup. 2 years ago
MagicBot 7fc0d27c3c Siege engine agent type set properly. 2 years ago
MagicBot 1ac76cfcd8 isPlayerguard refactored to derive from agenttype. 2 years ago
MagicBot c8ed04aaaf Refactor to separate persistence and write fsm to table. 2 years ago
MagicBot 6641651f3c Unused method removed. 2 years ago
MagicBot dbf164bfb2 bonus code removal 2 years ago
MagicBot 8a617c3008 Siege minion spawn time set to 15m. 2 years ago
FatBoy-DOTC a50a2430ba hate value for chants to affect mobs in range 2 years ago
FatBoy-DOTC 5c3c552288 usage of AIAgentType for default patrol points 2 years ago
FatBoy-DOTC 69fdddfc71 hate value fix 2 years ago
FatBoy-DOTC db5b988275 usage of AIAgentType for pet checks in run after load 2 years ago
FatBoy-DOTC 4284757035 pet level set in run after load removed 2 years ago
FatBoy-DOTC b93a47acc0 pet death and dismissal fix 2 years ago
MagicBot d59f9857ce Cleanup in pet minion 2 years ago
FatBoy-DOTC 8ce212b74b Merge remote-tracking branch 'origin/mob-refactor2' into mob-refactor2 2 years ago
FatBoy-DOTC e78aea5735 Assign patrol points added as static method to NPC manager 2 years ago
MagicBot 9a3c5c3f40 Siege minion assigned UUID. 2 years ago
FatBoy-DOTC 60ca3f9c34 remove siege minion 2 years ago
FatBoy-DOTC e7e740dff1 blocked player character specific block in minion training message handler 2 years ago
MagicBot 8343a98d77 Minion added to map after runafterload. 2 years ago
MagicBot 5862039a00 Minion added to map after runafterload. 2 years ago
MagicBot 8af989b75f Fix is patrol logic bloc conditional. 2 years ago
MagicBot 08d0e5ff75 Logic isn't needed here. 2 years ago
MagicBot 5196d10e5c Logic isn't needed here. 2 years ago
MagicBot 3392ec463d Removed unused methods. 2 years ago
MagicBot 33529404cf Logic fix in siege minions. 2 years ago
MagicBot 00e7a36013 Logic fix in siege minions. 2 years ago
FatBoy-DOTC 3060b394ab removed siegeminion map from NPC 2 years ago
MagicBot a43d9022fe Siege engine slot override. 2 years ago
FatBoy-DOTC 6abdc68ca5 removed un-needed cast to player character for pets 2 years ago
FatBoy-DOTC 61c66b0e96 trebs slot in proper locations 2 years ago
FatBoy-DOTC 36cc23457a optimized slot for siege engines 2 years ago
FatBoy-DOTC d573b238de refactored mob get/set owner 2 years ago
FatBoy-DOTC 8afe25fe85 siege minions added to arty captain minion map 2 years ago
MagicBot f80647ff0d Spawn time set to 15s for debug. 2 years ago
MagicBot 7e64cbabf8 Update to slotting logic. 2 years ago
MagicBot 14a06410ae Update to slotting logic. 2 years ago
MagicBot 85c2a4f4f0 Add all as hirelings 2 years ago
FatBoy-DOTC da9e211ec7 SiegeEngine enum and logic added 2 years ago
MagicBot a81070c471 Pet level += 20 to conform to 24.3 2 years ago
MagicBot e3ad7efa4f Method renamed for new convention. 2 years ago
MagicBot a4dafd7155 Unused variable in signature. 2 years ago
MagicBot 645aec853e Bindloc not adjusted for pets. 2 years ago
MagicBot d8d5e4a3c4 Name set to default. 2 years ago
MagicBot 7a48c04057 Mobbase set properly. 2 years ago
MagicBot 64aaaa707e Behaviour type set for pets. 2 years ago
MagicBot 445d40dc5f Bonus code removed. 2 years ago
MagicBot ebdcb531f2 AI methods moved to ai class. 2 years ago
MagicBot c9cdb891d6 Cleanup of ownerNPC mess. 2 years ago
MagicBot f5c6c002a8 Unused method removed. 2 years ago
MagicBot d171c6bb9a Unused method removed. 2 years ago
MagicBot 1c81a4faed Wall archers static reverted. 2 years ago
MagicBot e7d1d5cb71 Constructor removed. 2 years ago
MagicBot 060d831d50 Comment for clarity. 2 years ago
MagicBot 316bd6dd01 Siege engines use slot system. 2 years ago
MagicBot 34081e5903 Ordinal comparison fix. 2 years ago
MagicBot e2d843b65e Signature refactor. 2 years ago
MagicBot a796f5fe4b More siege engine work. 2 years ago
MagicBot 51ee41c773 use of SiegeEngine Behaviour Type 2 years ago
MagicBot 7e5ed3efe5 sqrMagnitude not sqrRoot 2 years ago
MagicBot 8dd25ac315 Minions inherit patrol points form barracks. 2 years ago
MagicBot 1cdaa58e7a Wall archers set to static grid type. 2 years ago
MagicBot fa3aa24a3d Update to minion building/location mechanic. 2 years ago
MagicBot 091431d95b Dynamic set in all constructors. 2 years ago
MagicBot 1ecf0122ab Unused variable removed. 2 years ago
MagicBot 79980a1725 NoID constructor removed. 2 years ago
MagicBot 8badcc3f6e Refactored out redundant stat-xyz variables. 2 years ago
MagicBot 4d6e57257c Unused methods removed. 2 years ago
MagicBot a7a93b8500 Tweak to bindloc for minions. 2 years ago
MagicBot 85cc34fb4c AIinfo updated. 2 years ago
MagicBot 772a996b6e Tweak to behavior type setup. 2 years ago
MagicBot e67eff822d Propagate guardedCity. 2 years ago
MagicBot c39ed6120f Cleanup of bind/loc logic. 2 years ago
MagicBot c38f4e6543 Mask only needs be set once. 2 years ago
MagicBot 098433b697 Needs contract null check 2 years ago
MagicBot c8e20c905b Add to cache before setloc 2 years ago
MagicBot bd2446ba0a Minion uuid set pre configure 2 years ago
MagicBot c179e4aaf3 Don't override level or name for minions. 2 years ago
MagicBot 2f8de2a919 Worthless collection only used in 2 places. 2 years ago
MagicBot 338110973d Mobbase cannot be null. 2 years ago
MagicBot 3c9c4495bc playerGuard = true. 2 years ago
MagicBot 93476f782c Bind loc not overwritten. 2 years ago
MagicBot 3aec6ee578 More minion setup work. 2 years ago
MagicBot 3bca76d4c8 Setloc to spawn minion. 2 years ago
MagicBot b9d6f35aac Unused variable. 2 years ago
MagicBot 9b6959414a More flushing out minion support. 2 years ago
MagicBot 400dd6aa5e More granular error reporting. 2 years ago
MagicBot 14af2f6efd Minion spawning re-enabled for refactoring. 2 years ago
MagicBot 0a2de9e0d5 Contract handling cleanup. 2 years ago
MagicBot 89bfad78a6 Contract handling cleanup. 2 years ago
MagicBot 52486fa278 Contract handling cleanup. 2 years ago
MagicBot dc0e14eb21 AI added earlier in sequence for availability. 2 years ago
MagicBot 70278374e7 manager init moved to the top of method. 2 years ago
MagicBot ac3588c76a manager init moved to the top of method. 2 years ago
MagicBot ab335aef2a Enums are fragile. 2 years ago
MagicBot 719c855bdb Cleanup of inventoryManager usage. 2 years ago
MagicBot f283e50018 Disabled minions for now. 2 years ago
MagicBot 99b952ee28 Refactor towards new constructor. 2 years ago
MagicBot 24639b62c0 Refactor towards new constructor. 2 years ago
MagicBot 573cc531bf Refactor towards new constructor. 2 years ago
MagicBot 29e24bae93 Unused constructor removed. 2 years ago
MagicBot 22e4cc07c0 Separate pet and siege behaviour types. 2 years ago
MagicBot 9264347698 Minions inherit enemy/notenemy from captain. 2 years ago
MagicBot 579c26ac59 InitializeMob removed. 2 years ago
MagicBot ef577dd313 Removed catch to propagate error. 2 years ago
MagicBot 62c7e52487 Starting to whittle away at initmob method. 2 years ago
MagicBot 3534ac6477 Starting to whittle away at initmob method. 2 years ago
MagicBot 1738f7b311 Starting to whittle away at initmob method. 2 years ago
MagicBot eb25caec81 Object creation moved out of rs const. 2 years ago
MagicBot a6c60e2c04 Merge remote-tracking branch 'origin/master' into mobile-cleanup 2 years ago
MagicBot adafbdf6d3 Duplicate building and building ID values. 2 years ago
MagicBot 7eab14938d Exception for siege when slotting. 2 years ago
MagicBot 039e55673b Exception for siege when slotting. 2 years ago
MagicBot ec3a9b6cb4 Minions don't have contracts. 2 years ago
MagicBot 17a6494b2b Unused code. 2 years ago
MagicBot 0b05c7074f Slot all agents but true mobiles. 2 years ago
MagicBot 876ccc7cbf New constructor created. 2 years ago
MagicBot bdf14b8f24 Ordinal comparisons refactored. 2 years ago
MagicBot 43375a6f5b Only mobiles with contracts can be slotted. 2 years ago
MagicBot e00328ae13 Siege pets use slotting mechanic. 2 years ago
MagicBot 07c553294b Mobiles use new slotting mechanic. 2 years ago
  1. 8
      src/discord/Database.java
  2. 4
      src/discord/DiscordAccount.java
  3. 4
      src/discord/handlers/AccountInfoRequest.java
  4. 12
      src/discord/handlers/BanToggleHandler.java
  5. 4
      src/discord/handlers/PasswordChangeHandler.java
  6. 706
      src/engine/InterestManagement/HeightMap.java
  7. 36
      src/engine/InterestManagement/InterestManager.java
  8. 29
      src/engine/InterestManagement/RealmMap.java
  9. 238
      src/engine/InterestManagement/Terrain.java
  10. 22
      src/engine/InterestManagement/WorldGrid.java
  11. 8
      src/engine/db/archive/BaneRecord.java
  12. 6
      src/engine/db/archive/CharacterRecord.java
  13. 16
      src/engine/db/archive/CityRecord.java
  14. 4
      src/engine/db/archive/DataRecord.java
  15. 2
      src/engine/db/archive/DataWarehouse.java
  16. 17
      src/engine/db/archive/GuildRecord.java
  17. 16
      src/engine/db/archive/MineRecord.java
  18. 6
      src/engine/db/archive/PvpRecord.java
  19. 16
      src/engine/db/archive/RealmRecord.java
  20. 8
      src/engine/db/handlers/dbAccountHandler.java
  21. 6
      src/engine/db/handlers/dbBaseClassHandler.java
  22. 51
      src/engine/db/handlers/dbBoonHandler.java
  23. 97
      src/engine/db/handlers/dbBuildingHandler.java
  24. 3
      src/engine/db/handlers/dbBuildingLocationHandler.java
  25. 3
      src/engine/db/handlers/dbCSSessionHandler.java
  26. 6
      src/engine/db/handlers/dbCharacterPowerHandler.java
  27. 6
      src/engine/db/handlers/dbCharacterRuneHandler.java
  28. 8
      src/engine/db/handlers/dbCharacterSkillHandler.java
  29. 36
      src/engine/db/handlers/dbCityHandler.java
  30. 49
      src/engine/db/handlers/dbContractHandler.java
  31. 6
      src/engine/db/handlers/dbEffectsBaseHandler.java
  32. 33
      src/engine/db/handlers/dbEffectsResourceCostHandler.java
  33. 32
      src/engine/db/handlers/dbGuildHandler.java
  34. 6
      src/engine/db/handlers/dbHandlerBase.java
  35. 43
      src/engine/db/handlers/dbHeightMapHandler.java
  36. 138
      src/engine/db/handlers/dbItemBaseHandler.java
  37. 177
      src/engine/db/handlers/dbItemHandler.java
  38. 3
      src/engine/db/handlers/dbKitHandler.java
  39. 3
      src/engine/db/handlers/dbMenuHandler.java
  40. 9
      src/engine/db/handlers/dbMineHandler.java
  41. 5
      src/engine/db/handlers/dbMobBaseHandler.java
  42. 95
      src/engine/db/handlers/dbMobHandler.java
  43. 180
      src/engine/db/handlers/dbNPCHandler.java
  44. 6
      src/engine/db/handlers/dbPetitionHandler.java
  45. 10
      src/engine/db/handlers/dbPlayerCharacterHandler.java
  46. 76
      src/engine/db/handlers/dbPowerHandler.java
  47. 3
      src/engine/db/handlers/dbPromotionClassHandler.java
  48. 3
      src/engine/db/handlers/dbRuneBaseAttributeHandler.java
  49. 5
      src/engine/db/handlers/dbRuneBaseEffectHandler.java
  50. 83
      src/engine/db/handlers/dbRuneBaseHandler.java
  51. 8
      src/engine/db/handlers/dbRunegateHandler.java
  52. 5
      src/engine/db/handlers/dbShrineHandler.java
  53. 6
      src/engine/db/handlers/dbSkillBaseHandler.java
  54. 3
      src/engine/db/handlers/dbSkillReqHandler.java
  55. 6
      src/engine/db/handlers/dbVendorDialogHandler.java
  56. 523
      src/engine/db/handlers/dbWarehouseHandler.java
  57. 83
      src/engine/db/handlers/dbZoneHandler.java
  58. 2
      src/engine/devcmd/AbstractDevCmd.java
  59. 2
      src/engine/devcmd/cmds/AddBuildingCmd.java
  60. 6
      src/engine/devcmd/cmds/AddGoldCmd.java
  61. 40
      src/engine/devcmd/cmds/AddMobCmd.java
  62. 2
      src/engine/devcmd/cmds/AddNPCCmd.java
  63. 2
      src/engine/devcmd/cmds/ApplyBonusCmd.java
  64. 127
      src/engine/devcmd/cmds/AuditFailedItemsCmd.java
  65. 70
      src/engine/devcmd/cmds/AuditHeightMapCmd.java
  66. 105
      src/engine/devcmd/cmds/AuditMobsCmd.java
  67. 2
      src/engine/devcmd/cmds/BoundsCmd.java
  68. 114
      src/engine/devcmd/cmds/ChangeNameCmd.java
  69. 56
      src/engine/devcmd/cmds/CombatMessageCmd.java
  70. 50
      src/engine/devcmd/cmds/CreateItemCmd.java
  71. 122
      src/engine/devcmd/cmds/DebugCmd.java
  72. 66
      src/engine/devcmd/cmds/DespawnCmd.java
  73. 65
      src/engine/devcmd/cmds/DistanceCmd.java
  74. 61
      src/engine/devcmd/cmds/EffectCmd.java
  75. 87
      src/engine/devcmd/cmds/EnchantCmd.java
  76. 84
      src/engine/devcmd/cmds/GateInfoCmd.java
  77. 217
      src/engine/devcmd/cmds/GetHeightCmd.java
  78. 58
      src/engine/devcmd/cmds/GetMemoryCmd.java
  79. 2
      src/engine/devcmd/cmds/GetOffsetCmd.java
  80. 4
      src/engine/devcmd/cmds/GetVaultCmd.java
  81. 67
      src/engine/devcmd/cmds/GetZoneCmd.java
  82. 107
      src/engine/devcmd/cmds/GotoBoundsCmd.java
  83. 8
      src/engine/devcmd/cmds/GotoCmd.java
  84. 16
      src/engine/devcmd/cmds/GotoObj.java
  85. 4
      src/engine/devcmd/cmds/HotzoneCmd.java
  86. 52
      src/engine/devcmd/cmds/InfoCmd.java
  87. 212
      src/engine/devcmd/cmds/MakeBaneCmd.java
  88. 115
      src/engine/devcmd/cmds/MakeItemCmd.java
  89. 8
      src/engine/devcmd/cmds/PrintBankCmd.java
  90. 5
      src/engine/devcmd/cmds/PrintBonusesCmd.java
  91. 35
      src/engine/devcmd/cmds/PrintEffectsCmd.java
  92. 24
      src/engine/devcmd/cmds/PrintEquipCmd.java
  93. 16
      src/engine/devcmd/cmds/PrintInventoryCmd.java
  94. 45
      src/engine/devcmd/cmds/PrintRunesCmd.java
  95. 2
      src/engine/devcmd/cmds/PrintSkillsCmd.java
  96. 50
      src/engine/devcmd/cmds/PrintStatsCmd.java
  97. 5
      src/engine/devcmd/cmds/PrintVaultCmd.java
  98. 45
      src/engine/devcmd/cmds/PurgeObjectsCmd.java
  99. 6
      src/engine/devcmd/cmds/RealmInfoCmd.java
  100. 52
      src/engine/devcmd/cmds/RegionCmd.java
  101. Some files were not shown because too many files have changed in this diff Show More

8
src/discord/Database.java

@ -9,8 +9,8 @@ @@ -9,8 +9,8 @@
package discord;
import engine.Enum;
import engine.gameManager.ConfigManager;
import engine.mbEnums;
import org.pmw.tinylog.Logger;
import java.sql.*;
@ -70,7 +70,7 @@ public class Database { @@ -70,7 +70,7 @@ public class Database {
}
}
public boolean updateAccountStatus(String discordAccountID, Enum.AccountStatus accountStatus) {
public boolean updateAccountStatus(String discordAccountID, mbEnums.AccountStatus accountStatus) {
try (Connection connection = DriverManager.getConnection(sqlURI, ConfigManager.MB_DATABASE_USER.getValue(),
ConfigManager.MB_DATABASE_PASS.getValue());
@ -131,7 +131,7 @@ public class Database { @@ -131,7 +131,7 @@ public class Database {
discordAccount = new DiscordAccount();
discordAccount.discordAccount = rs.getString("discordAccount");
discordAccount.gameAccountName = rs.getString("acct_uname");
discordAccount.status = Enum.AccountStatus.valueOf(rs.getString("status"));
discordAccount.status = mbEnums.AccountStatus.valueOf(rs.getString("status"));
discordAccount.isDiscordAdmin = rs.getByte("discordAdmin"); // Registration date cannot be null
Timestamp registrationDate = rs.getTimestamp("registrationDate");
@ -328,7 +328,7 @@ public class Database { @@ -328,7 +328,7 @@ public class Database {
discordAccount = new DiscordAccount();
discordAccount.discordAccount = rs.getString("discordAccount");
discordAccount.gameAccountName = rs.getString("acct_uname");
discordAccount.status = Enum.AccountStatus.valueOf(rs.getString("status"));
discordAccount.status = mbEnums.AccountStatus.valueOf(rs.getString("status"));
// Registration date cannot be null

4
src/discord/DiscordAccount.java

@ -8,14 +8,14 @@ @@ -8,14 +8,14 @@
package discord;
import engine.Enum;
import engine.mbEnums;
import java.time.LocalDateTime;
public class DiscordAccount {
public String discordAccount;
public String gameAccountName;
public Enum.AccountStatus status;
public mbEnums.AccountStatus status;
public LocalDateTime registrationDate;
public LocalDateTime lastUpdateRequest;
public byte isDiscordAdmin;

4
src/discord/handlers/AccountInfoRequest.java

@ -11,7 +11,7 @@ package discord.handlers; @@ -11,7 +11,7 @@ package discord.handlers;
import discord.Database;
import discord.DiscordAccount;
import discord.MagicBot;
import engine.Enum;
import engine.mbEnums;
import net.dv8tion.jda.api.events.message.MessageReceivedEvent;
import java.util.List;
@ -21,7 +21,7 @@ public class AccountInfoRequest { @@ -21,7 +21,7 @@ public class AccountInfoRequest {
public static void handleRequest(MessageReceivedEvent event) {
String discordAccountID = event.getAuthor().getId();
Enum.AccountStatus accountStatus;
mbEnums.AccountStatus accountStatus;
if (Database.online == false) {

12
src/discord/handlers/BanToggleHandler.java

@ -11,7 +11,7 @@ package discord.handlers; @@ -11,7 +11,7 @@ package discord.handlers;
import discord.DiscordAccount;
import discord.MagicBot;
import discord.RobotSpeak;
import engine.Enum;
import engine.mbEnums;
import net.dv8tion.jda.api.entities.User;
import net.dv8tion.jda.api.events.message.MessageReceivedEvent;
import org.pmw.tinylog.Logger;
@ -23,7 +23,7 @@ public class BanToggleHandler { @@ -23,7 +23,7 @@ public class BanToggleHandler {
public static void handleRequest(MessageReceivedEvent event, String[] args) {
String discordAccountID;
Enum.AccountStatus accountStatus;
mbEnums.AccountStatus accountStatus;
// Early exit if database unavailable or is not an admin
@ -55,10 +55,10 @@ public class BanToggleHandler { @@ -55,10 +55,10 @@ public class BanToggleHandler {
// toggle ban status
if (discordAccounts.get(0).status.equals(Enum.AccountStatus.BANNED))
accountStatus = Enum.AccountStatus.ACTIVE;
if (discordAccounts.get(0).status.equals(mbEnums.AccountStatus.BANNED))
accountStatus = mbEnums.AccountStatus.ACTIVE;
else
accountStatus = Enum.AccountStatus.BANNED;
accountStatus = mbEnums.AccountStatus.BANNED;
// We have a valid discord ID at this point. Banstick?
@ -82,7 +82,7 @@ public class BanToggleHandler { @@ -82,7 +82,7 @@ public class BanToggleHandler {
// If we're toggling status to active we're done here.
if (accountStatus.equals(Enum.AccountStatus.ACTIVE))
if (accountStatus.equals(mbEnums.AccountStatus.ACTIVE))
return;
// Set users role to noob

4
src/discord/handlers/PasswordChangeHandler.java

@ -11,7 +11,7 @@ package discord.handlers; @@ -11,7 +11,7 @@ package discord.handlers;
import discord.Database;
import discord.DiscordAccount;
import discord.MagicBot;
import engine.Enum;
import engine.mbEnums;
import net.dv8tion.jda.api.events.message.MessageReceivedEvent;
import org.pmw.tinylog.Logger;
@ -53,7 +53,7 @@ public class PasswordChangeHandler { @@ -53,7 +53,7 @@ public class PasswordChangeHandler {
// Banned or suspended user's get no love.
if (discordAccount.status.equals(Enum.AccountStatus.BANNED)) {
if (discordAccount.status.equals(mbEnums.AccountStatus.BANNED)) {
MagicBot.sendResponse(event,
"Sorry but that is too much work. \n" +
"Your account detailings cannot for to log into game!");

706
src/engine/InterestManagement/HeightMap.java

@ -1,706 +0,0 @@ @@ -1,706 +0,0 @@
// • ▌ ▄ ·. ▄▄▄· ▄▄ • ▪ ▄▄· ▄▄▄▄· ▄▄▄· ▐▄▄▄ ▄▄▄ .
// ·██ ▐███▪▐█ ▀█ ▐█ ▀ ▪██ ▐█ ▌▪▐█ ▀█▪▐█ ▀█ •█▌ ▐█▐▌·
// ▐█ ▌▐▌▐█·▄█▀▀█ ▄█ ▀█▄▐█·██ ▄▄▐█▀▀█▄▄█▀▀█ ▐█▐ ▐▌▐▀▀▀
// ██ ██▌▐█▌▐█ ▪▐▌▐█▄▪▐█▐█▌▐███▌██▄▪▐█▐█ ▪▐▌██▐ █▌▐█▄▄▌
// ▀▀ █▪▀▀▀ ▀ ▀ ·▀▀▀▀ ▀▀▀·▀▀▀ ·▀▀▀▀ ▀ ▀ ▀▀ █▪ ▀▀▀
// Magicbane Emulator Project © 2013 - 2022
// www.magicbane.com
package engine.InterestManagement;
import engine.Enum;
import engine.gameManager.ConfigManager;
import engine.gameManager.DbManager;
import engine.gameManager.ZoneManager;
import engine.math.Vector2f;
import engine.math.Vector3fImmutable;
import engine.objects.AbstractWorldObject;
import engine.objects.Zone;
import engine.util.MapLoader;
import org.pmw.tinylog.Logger;
import javax.imageio.ImageIO;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.HashMap;
public class HeightMap {
// Class variables
// Heightmap data for all zones.
public static final HashMap<Integer, HeightMap> heightmapByLoadNum = new HashMap<>();
// Bootstrap Tracking
public static int heightMapsCreated = 0;
public static HeightMap PlayerCityHeightMap;
// Heightmap data for this heightmap
public BufferedImage heightmapImage;
private int heightMapID;
private int maxHeight;
private int fullExtentsX;
private int fullExtentsY;
private float bucketWidthX;
private float bucketWidthY;
private int zoneLoadID;
private float seaLevel = 0;
private float outsetX;
private float outsetZ;
private int[][] pixelColorValues;
public HeightMap(ResultSet rs) throws SQLException {
this.heightMapID = rs.getInt("heightMapID");
this.maxHeight = rs.getInt("maxHeight");
int halfExtentsX = rs.getInt("xRadius");
int halfExtentsY = rs.getInt("zRadius");
this.zoneLoadID = rs.getInt("zoneLoadID");
this.seaLevel = rs.getFloat("seaLevel");
this.outsetX = rs.getFloat("outsetX");
this.outsetZ = rs.getFloat("outsetZ");
// Cache the full extents to avoid the calculation
this.fullExtentsX = halfExtentsX * 2;
this.fullExtentsY = halfExtentsY * 2;
this.heightmapImage = null;
File imageFile = new File(ConfigManager.DEFAULT_DATA_DIR + "heightmaps/" + this.heightMapID + ".bmp");
// early exit if no image file was found. Will log in caller.
if (!imageFile.exists())
return;
// load the heightmap image.
try {
this.heightmapImage = ImageIO.read(imageFile);
} catch (IOException e) {
Logger.error("***Error loading heightmap data for heightmap " + this.heightMapID + e.toString());
}
// We needed to flip the image as OpenGL and Shadowbane both use the bottom left corner as origin.
this.heightmapImage = MapLoader.flipImage(this.heightmapImage);
// Calculate the data we do not load from table
float numOfBuckets = this.heightmapImage.getWidth() - 1;
float calculatedWidth = this.fullExtentsX / numOfBuckets;
this.bucketWidthX = calculatedWidth;
this.bucketWidthY = this.bucketWidthX; // This makes no sense.
// Generate pixel array from image data
generatePixelData();
HeightMap.heightmapByLoadNum.put(this.zoneLoadID, this);
heightMapsCreated++;
}
//Created for PlayerCities
public HeightMap() {
this.heightMapID = 999999;
this.maxHeight = 5; // for real...
int halfExtentsX = (int) Enum.CityBoundsType.ZONE.extents;
int halfExtentsY = (int) Enum.CityBoundsType.ZONE.extents;
this.zoneLoadID = 0;
this.seaLevel = 0;
this.outsetX = 128;
this.outsetZ = 128;
// Cache the full extents to avoid the calculation
this.fullExtentsX = halfExtentsX * 2;
this.fullExtentsY = halfExtentsY * 2;
// load the heightmap image.
// We needed to flip the image as OpenGL and Shadowbane both use the bottom left corner as origin.
this.heightmapImage = null;
// Calculate the data we do not load from table
this.bucketWidthX = 1;
this.bucketWidthY = 1;
this.pixelColorValues = new int[this.fullExtentsX + 1][this.fullExtentsY + 1];
for (int y = 0; y <= this.fullExtentsY; y++) {
for (int x = 0; x <= this.fullExtentsX; x++) {
pixelColorValues[x][y] = 255;
}
}
HeightMap.heightmapByLoadNum.put(this.zoneLoadID, this);
}
public HeightMap(Zone zone) {
this.heightMapID = 999999;
this.maxHeight = 0;
int halfExtentsX = (int) zone.getBounds().getHalfExtents().x;
int halfExtentsY = (int) zone.getBounds().getHalfExtents().y;
this.zoneLoadID = 0;
this.seaLevel = 0;
this.outsetX = 0;
this.outsetZ = 0;
// Cache the full extents to avoid the calculation
this.fullExtentsX = halfExtentsX * 2;
this.fullExtentsY = halfExtentsY * 2;
// We needed to flip the image as OpenGL and Shadowbane both use the bottom left corner as origin.
this.heightmapImage = null;
// Calculate the data we do not load from table
this.bucketWidthX = 1;
this.bucketWidthY = 1;
this.pixelColorValues = new int[this.fullExtentsX + 1][this.fullExtentsY + 1];
for (int y = 0; y <= this.fullExtentsY; y++) {
for (int x = 0; x <= this.fullExtentsX; x++) {
pixelColorValues[x][y] = 255;
}
}
HeightMap.heightmapByLoadNum.put(this.zoneLoadID, this);
}
public static void GeneratePlayerCityHeightMap() {
HeightMap.PlayerCityHeightMap = new HeightMap();
}
public static void GenerateCustomHeightMap(Zone zone) {
HeightMap heightMap = new HeightMap(zone);
HeightMap.heightmapByLoadNum.put(zone.getLoadNum(), heightMap);
}
public static Zone getNextZoneWithTerrain(Zone zone) {
Zone nextZone = zone;
if (zone.getHeightMap() != null)
return zone;
if (zone.equals(ZoneManager.getSeaFloor()))
return zone;
while (nextZone.getHeightMap() == null)
nextZone = nextZone.getParent();
return nextZone;
}
public static float getWorldHeight(AbstractWorldObject worldObject) {
Vector2f parentLoc = new Vector2f(-1, -1);
Zone currentZone = ZoneManager.findSmallestZone(worldObject.getLoc());
if (currentZone == null)
return worldObject.getAltitude();
currentZone = getNextZoneWithTerrain(currentZone);
if (currentZone == ZoneManager.getSeaFloor())
return currentZone.getAbsY() + worldObject.getAltitude();
Zone parentZone = getNextZoneWithTerrain(currentZone.getParent());
HeightMap heightMap = currentZone.getHeightMap();
Vector2f zoneLoc = ZoneManager.worldToZoneSpace(worldObject.getLoc(), currentZone);
Vector3fImmutable localLocFromCenter = ZoneManager.worldToLocal(worldObject.getLoc(), currentZone);
if ((parentZone != null) && (parentZone.getHeightMap() != null))
parentLoc = ZoneManager.worldToZoneSpace(worldObject.getLoc(), parentZone);
float interaltitude = currentZone.getHeightMap().getInterpolatedTerrainHeight(zoneLoc);
float worldAltitude = currentZone.getWorldAltitude();
float realWorldAltitude = interaltitude + worldAltitude;
//OUTSET
if (parentZone != null) {
float parentXRadius = currentZone.getBounds().getHalfExtents().x;
float parentZRadius = currentZone.getBounds().getHalfExtents().y;
float offsetX = Math.abs((localLocFromCenter.x / parentXRadius));
float offsetZ = Math.abs((localLocFromCenter.z / parentZRadius));
float bucketScaleX = heightMap.outsetX / parentXRadius;
float bucketScaleZ = heightMap.outsetZ / parentZRadius;
if (bucketScaleX <= 0.40000001)
bucketScaleX = heightMap.outsetZ / parentXRadius;
if (bucketScaleX > 0.40000001)
bucketScaleX = 0.40000001f;
if (bucketScaleZ <= 0.40000001)
bucketScaleZ = heightMap.outsetX / parentZRadius;
if (bucketScaleZ > 0.40000001)
bucketScaleZ = 0.40000001f;
float outsideGridSizeX = 1 - bucketScaleX; //32/256
float outsideGridSizeZ = 1 - bucketScaleZ;
float weight;
double scale;
if (offsetX > outsideGridSizeX && offsetX > offsetZ) {
weight = (offsetX - outsideGridSizeX) / bucketScaleX;
scale = Math.atan2((.5 - weight) * 3.1415927, 1);
float scaleChild = (float) ((scale + 1) * .5);
float scaleParent = 1 - scaleChild;
float parentAltitude = parentZone.getHeightMap().getInterpolatedTerrainHeight(parentLoc);
float parentCenterAltitude = parentZone.getHeightMap().getInterpolatedTerrainHeight(ZoneManager.worldToZoneSpace(currentZone.getLoc(), parentZone));
parentCenterAltitude += currentZone.getYCoord();
parentCenterAltitude += interaltitude;
float firstScale = parentAltitude * scaleParent;
float secondScale = parentCenterAltitude * scaleChild;
float outsetALt = firstScale + secondScale;
outsetALt += currentZone.getParent().getWorldAltitude();
realWorldAltitude = outsetALt;
} else if (offsetZ > outsideGridSizeZ) {
weight = (offsetZ - outsideGridSizeZ) / bucketScaleZ;
scale = Math.atan2((.5 - weight) * 3.1415927, 1);
float scaleChild = (float) ((scale + 1) * .5);
float scaleParent = 1 - scaleChild;
float parentAltitude = parentZone.getHeightMap().getInterpolatedTerrainHeight(parentLoc);
float parentCenterAltitude = parentZone.getHeightMap().getInterpolatedTerrainHeight(ZoneManager.worldToZoneSpace(currentZone.getLoc(), parentZone));
parentCenterAltitude += currentZone.getYCoord();
parentCenterAltitude += interaltitude;
float firstScale = parentAltitude * scaleParent;
float secondScale = parentCenterAltitude * scaleChild;
float outsetALt = firstScale + secondScale;
outsetALt += currentZone.getParent().getWorldAltitude();
realWorldAltitude = outsetALt;
}
}
return realWorldAltitude;
}
public static float getWorldHeight(Vector3fImmutable worldLoc) {
Vector2f parentLoc = new Vector2f(-1, -1);
Zone currentZone = ZoneManager.findSmallestZone(worldLoc);
if (currentZone == null)
return 0;
currentZone = getNextZoneWithTerrain(currentZone);
if (currentZone == ZoneManager.getSeaFloor())
return currentZone.getAbsY();
Zone parentZone = getNextZoneWithTerrain(currentZone.getParent());
HeightMap heightMap = currentZone.getHeightMap();
if ((heightMap == null) || (currentZone == ZoneManager.getSeaFloor()))
return currentZone.getAbsY();
Vector2f zoneLoc = ZoneManager.worldToZoneSpace(worldLoc, currentZone);
Vector3fImmutable localLocFromCenter = ZoneManager.worldToLocal(worldLoc, currentZone);
if ((parentZone != null) && (parentZone.getHeightMap() != null))
parentLoc = ZoneManager.worldToZoneSpace(worldLoc, parentZone);
float interaltitude = currentZone.getHeightMap().getInterpolatedTerrainHeight(zoneLoc);
float worldAltitude = currentZone.getWorldAltitude();
float realWorldAltitude = interaltitude + worldAltitude;
//OUTSET
if (parentZone != null) {
// if (currentZone.getHeightMap() != null && parentZone.getHeightMap() != null && parentZone.getParent() != null && parentZone.getParent().getHeightMap() != null)
// return realWorldAltitude;
float parentXRadius = currentZone.getBounds().getHalfExtents().x;
float parentZRadius = currentZone.getBounds().getHalfExtents().y;
float offsetX = Math.abs((localLocFromCenter.x / parentXRadius));
float offsetZ = Math.abs((localLocFromCenter.z / parentZRadius));
float bucketScaleX = heightMap.outsetX / parentXRadius;
float bucketScaleZ = heightMap.outsetZ / parentZRadius;
float outsideGridSizeX = 1 - bucketScaleX; //32/256
float outsideGridSizeZ = 1 - bucketScaleZ;
float weight;
double scale;
if (offsetX > outsideGridSizeX && offsetX > offsetZ) {
weight = (offsetX - outsideGridSizeX) / bucketScaleX;
scale = Math.atan2((.5 - weight) * 3.1415927, 1);
float scaleChild = (float) ((scale + 1) * .5);
float scaleParent = 1 - scaleChild;
float parentAltitude = parentZone.getHeightMap().getInterpolatedTerrainHeight(parentLoc);
float parentCenterAltitude = parentZone.getHeightMap().getInterpolatedTerrainHeight(ZoneManager.worldToZoneSpace(currentZone.getLoc(), parentZone));
parentCenterAltitude += currentZone.getYCoord();
parentCenterAltitude += interaltitude;
float firstScale = parentAltitude * scaleParent;
float secondScale = parentCenterAltitude * scaleChild;
float outsetALt = firstScale + secondScale;
outsetALt += currentZone.getParent().getWorldAltitude();
realWorldAltitude = outsetALt;
} else if (offsetZ > outsideGridSizeZ) {
weight = (offsetZ - outsideGridSizeZ) / bucketScaleZ;
scale = Math.atan2((.5 - weight) * 3.1415927, 1);
float scaleChild = (float) ((scale + 1) * .5);
float scaleParent = 1 - scaleChild;
float parentAltitude = parentZone.getHeightMap().getInterpolatedTerrainHeight(parentLoc);
float parentCenterAltitude = parentZone.getHeightMap().getInterpolatedTerrainHeight(ZoneManager.worldToZoneSpace(currentZone.getLoc(), parentZone));
parentCenterAltitude += currentZone.getYCoord();
parentCenterAltitude += interaltitude;
float firstScale = parentAltitude * scaleParent;
float secondScale = parentCenterAltitude * scaleChild;
float outsetALt = firstScale + secondScale;
outsetALt += currentZone.getParent().getWorldAltitude();
realWorldAltitude = outsetALt;
}
}
return realWorldAltitude;
}
public static float getOutsetHeight(float interpolatedAltitude, Zone zone, Vector3fImmutable worldLocation) {
Vector2f parentLoc;
float outsetALt = 0;
if (zone.getParent() == null || zone.getParent().getHeightMap() == null)
return interpolatedAltitude + zone.getWorldAltitude();
if (zone.getParent() != null && zone.getParent().getHeightMap() != null) {
parentLoc = ZoneManager.worldToZoneSpace(worldLocation, zone.getParent());
Vector3fImmutable localLocFromCenter = ZoneManager.worldToLocal(worldLocation, zone);
float parentXRadius = zone.getBounds().getHalfExtents().x;
float parentZRadius = zone.getBounds().getHalfExtents().y;
float bucketScaleX = zone.getHeightMap().outsetX / parentXRadius;
float bucketScaleZ = zone.getHeightMap().outsetZ / parentZRadius;
float outsideGridSizeX = 1 - bucketScaleX; //32/256
float outsideGridSizeZ = 1 - bucketScaleZ;
float weight;
double scale;
float offsetX = Math.abs((localLocFromCenter.x / parentXRadius));
float offsetZ = Math.abs((localLocFromCenter.z / parentZRadius));
if (offsetX > outsideGridSizeX && offsetX > offsetZ) {
weight = (offsetX - outsideGridSizeX) / bucketScaleX;
scale = Math.atan2((.5 - weight) * 3.1415927, 1);
float scaleChild = (float) ((scale + 1) * .5);
float scaleParent = 1 - scaleChild;
float parentAltitude = zone.getParent().getHeightMap().getInterpolatedTerrainHeight(parentLoc);
float parentCenterAltitude = zone.getParent().getHeightMap().getInterpolatedTerrainHeight(ZoneManager.worldToZoneSpace(zone.getLoc(), zone.getParent()));
parentCenterAltitude += zone.getYCoord();
parentCenterAltitude += interpolatedAltitude;
float firstScale = parentAltitude * scaleParent;
float secondScale = parentCenterAltitude * scaleChild;
outsetALt = firstScale + secondScale;
outsetALt += zone.getParent().getAbsY();
} else if (offsetZ > outsideGridSizeZ) {
weight = (offsetZ - outsideGridSizeZ) / bucketScaleZ;
scale = Math.atan2((.5 - weight) * 3.1415927, 1);
float scaleChild = (float) ((scale + 1) * .5);
float scaleParent = 1 - scaleChild;
float parentAltitude = zone.getParent().getHeightMap().getInterpolatedTerrainHeight(parentLoc);
float parentCenterAltitude = zone.getHeightMap().getInterpolatedTerrainHeight(ZoneManager.worldToZoneSpace(zone.getLoc(), zone));
parentCenterAltitude += zone.getYCoord();
parentCenterAltitude += interpolatedAltitude;
float firstScale = parentAltitude * scaleParent;
float secondScale = parentCenterAltitude * scaleChild;
outsetALt = firstScale + secondScale;
outsetALt += zone.getParent().getAbsY();
}
}
return outsetALt;
}
public static Vector2f getGridOffset(Vector2f gridSquare) {
int floorX = (int) gridSquare.x;
int floorY = (int) gridSquare.y;
return new Vector2f(gridSquare.x - floorX, gridSquare.y - floorY);
}
public static void loadAlHeightMaps() {
// Load the heightmaps into staging hashmap keyed by HashMapID
DbManager.HeightMapQueries.LOAD_ALL_HEIGHTMAPS();
//generate static player city heightmap.
HeightMap.GeneratePlayerCityHeightMap();
// Clear all heightmap image data as it's no longer needed.
for (HeightMap heightMap : HeightMap.heightmapByLoadNum.values()) {
heightMap.heightmapImage = null;
}
Logger.info(HeightMap.heightmapByLoadNum.size() + " Heightmaps cached.");
}
public static boolean isLocUnderwater(Vector3fImmutable currentLoc) {
float localAltitude = HeightMap.getWorldHeight(currentLoc);
Zone zone = ZoneManager.findSmallestZone(currentLoc);
if (localAltitude < zone.getSeaLevel())
return true;
return false;
}
public Vector2f getGridSquare(Vector2f zoneLoc) {
if (zoneLoc.x < 0)
zoneLoc.setX(0);
if (zoneLoc.x > this.fullExtentsX - 1)
zoneLoc.setX((this.fullExtentsX - 1) + .9999999f);
if (zoneLoc.y < 0)
zoneLoc.setY(0);
if (zoneLoc.y > this.fullExtentsY - 1)
zoneLoc.setY((this.fullExtentsY - 1) + .9999999f);
float xBucket = (zoneLoc.x / this.bucketWidthX);
float yBucket = (zoneLoc.y / this.bucketWidthY);
return new Vector2f(xBucket, yBucket);
}
public float getInterpolatedTerrainHeight(Vector2f zoneLoc) {
Vector2f gridSquare;
if (zoneLoc.x < 0 || zoneLoc.x > this.fullExtentsX)
return -1;
if (zoneLoc.y < 0 || zoneLoc.y > this.fullExtentsY)
return -1;
int maxX = (int) (this.fullExtentsX / this.bucketWidthX);
int maxY = (int) (this.fullExtentsY / this.bucketWidthY);
//flip the Y so it grabs from the bottom left instead of top left.
//zoneLoc.setY(maxZoneHeight - zoneLoc.y);
gridSquare = getGridSquare(zoneLoc);
int gridX = (int) gridSquare.x;
int gridY = (int) (gridSquare.y);
if (gridX > maxX)
gridX = maxX;
if (gridY > maxY)
gridY = maxY;
float offsetX = (gridSquare.x - gridX);
float offsetY = gridSquare.y - gridY;
//get height of the 4 vertices.
float topLeftHeight = 0;
float topRightHeight = 0;
float bottomLeftHeight = 0;
float bottomRightHeight = 0;
int nextY = gridY + 1;
int nextX = gridX + 1;
if (nextY > maxY)
nextY = gridY;
if (nextX > maxX)
nextX = gridX;
topLeftHeight = pixelColorValues[gridX][gridY];
topRightHeight = pixelColorValues[nextX][gridY];
bottomLeftHeight = pixelColorValues[gridX][nextY];
bottomRightHeight = pixelColorValues[nextX][nextY];
float interpolatedHeight;
interpolatedHeight = topRightHeight * (1 - offsetY) * (offsetX);
interpolatedHeight += (bottomRightHeight * offsetY * offsetX);
interpolatedHeight += (bottomLeftHeight * (1 - offsetX) * offsetY);
interpolatedHeight += (topLeftHeight * (1 - offsetX) * (1 - offsetY));
interpolatedHeight *= (float) this.maxHeight / 256; // Scale height
return interpolatedHeight;
}
public float getInterpolatedTerrainHeight(Vector3fImmutable zoneLoc3f) {
Vector2f zoneLoc = new Vector2f(zoneLoc3f.x, zoneLoc3f.z);
Vector2f gridSquare;
if (zoneLoc.x < 0 || zoneLoc.x > this.fullExtentsX)
return -1;
if (zoneLoc.y < 0 || zoneLoc.y > this.fullExtentsY)
return -1;
//flip the Y so it grabs from the bottom left instead of top left.
//zoneLoc.setY(maxZoneHeight - zoneLoc.y);
gridSquare = getGridSquare(zoneLoc);
int gridX = (int) gridSquare.x;
int gridY = (int) (gridSquare.y);
float offsetX = (gridSquare.x - gridX);
float offsetY = gridSquare.y - gridY;
//get height of the 4 vertices.
float topLeftHeight = pixelColorValues[gridX][gridY];
float topRightHeight = pixelColorValues[gridX + 1][gridY];
float bottomLeftHeight = pixelColorValues[gridX][gridY + 1];
float bottomRightHeight = pixelColorValues[gridX + 1][gridY + 1];
float interpolatedHeight;
interpolatedHeight = topRightHeight * (1 - offsetY) * (offsetX);
interpolatedHeight += (bottomRightHeight * offsetY * offsetX);
interpolatedHeight += (bottomLeftHeight * (1 - offsetX) * offsetY);
interpolatedHeight += (topLeftHeight * (1 - offsetX) * (1 - offsetY));
interpolatedHeight *= (float) this.maxHeight / 256; // Scale height
return interpolatedHeight;
}
private void generatePixelData() {
Color color;
// Generate altitude lookup table for this heightmap
this.pixelColorValues = new int[this.heightmapImage.getWidth()][this.heightmapImage.getHeight()];
for (int y = 0; y < this.heightmapImage.getHeight(); y++) {
for (int x = 0; x < this.heightmapImage.getWidth(); x++) {
color = new Color(this.heightmapImage.getRGB(x, y));
pixelColorValues[x][y] = color.getRed();
}
}
}
public float getScaledHeightForColor(float color) {
return (color / 256) * this.maxHeight;
}
public float getBucketWidthX() {
return bucketWidthX;
}
public float getBucketWidthY() {
return bucketWidthY;
}
public int getHeightMapID() {
return heightMapID;
}
public BufferedImage getHeightmapImage() {
return heightmapImage;
}
public float getSeaLevel() {
return seaLevel;
}
}

36
src/engine/InterestManagement/InterestManager.java

@ -8,16 +8,16 @@ @@ -8,16 +8,16 @@
package engine.InterestManagement;
import engine.Enum;
import engine.Enum.DispatchChannel;
import engine.Enum.GameObjectType;
import engine.gameManager.DispatchManager;
import engine.gameManager.GroupManager;
import engine.gameManager.SessionManager;
import engine.job.JobScheduler;
import engine.jobs.RefreshGroupJob;
import engine.mbEnums;
import engine.mbEnums.DispatchChannel;
import engine.mbEnums.GameObjectType;
import engine.net.AbstractNetMsg;
import engine.net.Dispatch;
import engine.net.DispatchMessage;
import engine.net.client.ClientConnection;
import engine.net.client.msg.LoadCharacterMsg;
import engine.net.client.msg.LoadStructureMsg;
@ -88,7 +88,7 @@ public enum InterestManager implements Runnable { @@ -88,7 +88,7 @@ public enum InterestManager implements Runnable {
if (send) {
Dispatch dispatch = Dispatch.borrow(player, msg);
DispatchMessage.dispatchMsgDispatch(dispatch, DispatchChannel.PRIMARY);
DispatchManager.dispatchMsgDispatch(dispatch, DispatchChannel.PRIMARY);
}
}
}
@ -140,7 +140,7 @@ public enum InterestManager implements Runnable { @@ -140,7 +140,7 @@ public enum InterestManager implements Runnable {
else {
if (pc != null)
if (pcc.getSeeInvis() < pc.getHidden())
if (pcc.getSeeInvis() < pc.hidden)
continue;
if (!cc.sendMsg(uom)) {
@ -270,7 +270,7 @@ public enum InterestManager implements Runnable { @@ -270,7 +270,7 @@ public enum InterestManager implements Runnable {
}
Dispatch dispatch = Dispatch.borrow(player, uom);
DispatchMessage.dispatchMsgDispatch(dispatch, DispatchChannel.PRIMARY);
DispatchManager.dispatchMsgDispatch(dispatch, DispatchChannel.PRIMARY);
}
loadedStaticObjects.removeAll(toRemove);
@ -292,7 +292,7 @@ public enum InterestManager implements Runnable { @@ -292,7 +292,7 @@ public enum InterestManager implements Runnable {
lcm = new LoadCharacterMsg(corpse, PlayerCharacter.hideNonAscii());
Dispatch dispatch = Dispatch.borrow(player, lcm);
DispatchMessage.dispatchMsgDispatch(dispatch, DispatchChannel.PRIMARY);
DispatchManager.dispatchMsgDispatch(dispatch, DispatchChannel.PRIMARY);
} else if (awo.getObjectType().equals(GameObjectType.NPC)) {
NPC npc = (NPC) awo;
@ -304,13 +304,13 @@ public enum InterestManager implements Runnable { @@ -304,13 +304,13 @@ public enum InterestManager implements Runnable {
if (lsm.getStructureList().size() > 0) {
Dispatch dispatch = Dispatch.borrow(player, lsm);
DispatchMessage.dispatchMsgDispatch(dispatch, DispatchChannel.PRIMARY);
DispatchManager.dispatchMsgDispatch(dispatch, DispatchChannel.PRIMARY);
}
for (LoadCharacterMsg lc : lcmList) {
Dispatch dispatch = Dispatch.borrow(player, lc);
DispatchMessage.dispatchMsgDispatch(dispatch, DispatchChannel.PRIMARY);
DispatchManager.dispatchMsgDispatch(dispatch, DispatchChannel.PRIMARY);
}
loadedStaticObjects.addAll(toLoad);
@ -340,7 +340,7 @@ public enum InterestManager implements Runnable { @@ -340,7 +340,7 @@ public enum InterestManager implements Runnable {
if (loadedPlayer.getObjectUUID() == player.getObjectUUID())
continue;
if (player.getSeeInvis() < loadedPlayer.getHidden())
if (player.getSeeInvis() < loadedPlayer.hidden)
continue;
if (loadedPlayer.safemodeInvis())
@ -372,7 +372,7 @@ public enum InterestManager implements Runnable { @@ -372,7 +372,7 @@ public enum InterestManager implements Runnable {
if (playerLoadedObject.getObjectType().equals(GameObjectType.PlayerCharacter)) {
PlayerCharacter loadedPlayer = (PlayerCharacter) playerLoadedObject;
if (player.getSeeInvis() < loadedPlayer.getHidden())
if (player.getSeeInvis() < loadedPlayer.hidden)
toRemove.add(playerLoadedObject);
else if (loadedPlayer.safemodeInvis())
toRemove.add(playerLoadedObject);
@ -414,7 +414,7 @@ public enum InterestManager implements Runnable { @@ -414,7 +414,7 @@ public enum InterestManager implements Runnable {
if (!uom.getObjectList().isEmpty()) {
Dispatch dispatch = Dispatch.borrow(player, uom);
DispatchMessage.dispatchMsgDispatch(dispatch, DispatchChannel.PRIMARY);
DispatchManager.dispatchMsgDispatch(dispatch, DispatchChannel.PRIMARY);
}
}
@ -437,7 +437,7 @@ public enum InterestManager implements Runnable { @@ -437,7 +437,7 @@ public enum InterestManager implements Runnable {
// dont load if invis
if (player.getSeeInvis() < awopc.getHidden())
if (player.getSeeInvis() < awopc.hidden)
continue;
lcm = new LoadCharacterMsg(awopc, PlayerCharacter.hideNonAscii());
@ -467,7 +467,7 @@ public enum InterestManager implements Runnable { @@ -467,7 +467,7 @@ public enum InterestManager implements Runnable {
if (awonpc.despawned == true)
continue;
awonpc.playerAgroMap.put(player.getObjectUUID(), false);
awonpc.playerAgroMap.put(player.getObjectUUID(), 0f);
((Mob) awonpc).setCombatTarget(null);
lcm = new LoadCharacterMsg(awonpc, PlayerCharacter.hideNonAscii());
@ -480,9 +480,9 @@ public enum InterestManager implements Runnable { @@ -480,9 +480,9 @@ public enum InterestManager implements Runnable {
if (!awonpc.isAlive())
continue;
awonpc.playerAgroMap.put(player.getObjectUUID(), false);
awonpc.playerAgroMap.put(player.getObjectUUID(), 0f);
if ((awonpc.agentType.equals(Enum.AIAgentType.MOBILE)))
if ((awonpc.agentType.equals(mbEnums.AIAgentType.MOBILE)))
((Mob) awonpc).setCombatTarget(null);
lcm = new LoadCharacterMsg(awonpc, PlayerCharacter.hideNonAscii());
@ -492,7 +492,7 @@ public enum InterestManager implements Runnable { @@ -492,7 +492,7 @@ public enum InterestManager implements Runnable {
if (lcm != null) {
Dispatch dispatch = Dispatch.borrow(player, lcm);
DispatchMessage.dispatchMsgDispatch(dispatch, DispatchChannel.PRIMARY);
DispatchManager.dispatchMsgDispatch(dispatch, DispatchChannel.PRIMARY);
}

29
src/engine/InterestManagement/RealmMap.java

@ -8,14 +8,10 @@ @@ -8,14 +8,10 @@
package engine.InterestManagement;
/* This class is the main interface for Magicbane's
* Interest management facilities.
*/
import engine.Enum;
import engine.gameManager.DispatchManager;
import engine.math.Vector3fImmutable;
import engine.mbEnums;
import engine.net.Dispatch;
import engine.net.DispatchMessage;
import engine.net.client.msg.TerritoryChangeMessage;
import engine.objects.City;
import engine.objects.PlayerCharacter;
@ -31,10 +27,17 @@ import static engine.objects.Realm.getRealm; @@ -31,10 +27,17 @@ import static engine.objects.Realm.getRealm;
public enum RealmMap {
REALM_MAP;
// MB Dev Notes:
// This class loads and caches realm maps used by each
// map set for its realm overlay. The RealmMap loaded is
// controlled by config entry MB_WORLD_REALMMAP
//
// Unlike a Heightmap this is a just color lookup; identical to
// the old image maps used in 90s web technology.
//
// Realm Map images are stored on disk in /mb.data/realmmaps/
// Spatial hashmap. Used for determining which Realm
// a player is currently located within.
REALM_MAP;
private static final HashMap<Color, Integer> _rgbToIDMap = new HashMap<>();
public static int[][] _realmImageMap;
@ -65,7 +68,7 @@ public enum RealmMap { @@ -65,7 +68,7 @@ public enum RealmMap {
public static Realm getRealmForCity(City city) {
Realm outRealm = null;
outRealm = city.getRealm();
outRealm = city.realm;
return outRealm;
}
@ -88,17 +91,17 @@ public enum RealmMap { @@ -88,17 +91,17 @@ public enum RealmMap {
if (city != null) {
TerritoryChangeMessage tcm = new TerritoryChangeMessage((PlayerCharacter) realm.getRulingCity().getOwner(), realm);
Dispatch dispatch = Dispatch.borrow(player, tcm);
DispatchMessage.dispatchMsgDispatch(dispatch, Enum.DispatchChannel.PRIMARY);
DispatchManager.dispatchMsgDispatch(dispatch, mbEnums.DispatchChannel.PRIMARY);
} else {
TerritoryChangeMessage tcm = new TerritoryChangeMessage(null, realm);
Dispatch dispatch = Dispatch.borrow(player, tcm);
DispatchMessage.dispatchMsgDispatch(dispatch, Enum.DispatchChannel.PRIMARY);
DispatchManager.dispatchMsgDispatch(dispatch, mbEnums.DispatchChannel.PRIMARY);
}
} else {
TerritoryChangeMessage tcm = new TerritoryChangeMessage(null, realm);
Dispatch dispatch = Dispatch.borrow(player, tcm);
DispatchMessage.dispatchMsgDispatch(dispatch, Enum.DispatchChannel.PRIMARY);
DispatchManager.dispatchMsgDispatch(dispatch, mbEnums.DispatchChannel.PRIMARY);
}
}

238
src/engine/InterestManagement/Terrain.java

@ -0,0 +1,238 @@ @@ -0,0 +1,238 @@
// • ▌ ▄ ·. ▄▄▄· ▄▄ • ▪ ▄▄· ▄▄▄▄· ▄▄▄· ▐▄▄▄ ▄▄▄ .
// ·██ ▐███▪▐█ ▀█ ▐█ ▀ ▪██ ▐█ ▌▪▐█ ▀█▪▐█ ▀█ •█▌ ▐█▐▌·
// ▐█ ▌▐▌▐█·▄█▀▀█ ▄█ ▀█▄▐█·██ ▄▄▐█▀▀█▄▄█▀▀█ ▐█▐ ▐▌▐▀▀▀
// ██ ██▌▐█▌▐█ ▪▐▌▐█▄▪▐█▐█▌▐███▌██▄▪▐█▐█ ▪▐▌██▐ █▌▐█▄▄▌
// ▀▀ █▪▀▀▀ ▀ ▀ ·▀▀▀▀ ▀▀▀·▀▀▀ ·▀▀▀▀ ▀ ▀ ▀▀ █▪ ▀▀▀
// Magicbane Emulator Project © 2013 - 2022
// www.magicbane.com
package engine.InterestManagement;
import engine.gameManager.ZoneManager;
import engine.math.Vector2f;
import engine.math.Vector3fImmutable;
import engine.objects.Zone;
import org.pmw.tinylog.Logger;
import java.util.HashMap;
import static java.lang.Math.PI;
// MB Dev Notes:
// The Terrain class handles lookups into the Heightmap data.
// It supports all current maps along with the differences in
// their parenting configuration.
//
// Heightmap images are stored on disk in /mb.data/heightmaps/
public class Terrain {
public static final HashMap<Integer, short[][]> _heightmap_pixel_cache = new HashMap<>();
public short[][] terrain_pixel_data;
public Vector2f terrain_size = new Vector2f();
public Vector2f cell_size = new Vector2f();
public Vector2f cell_count = new Vector2f();
public float terrain_scale;
public Vector2f blend_values = new Vector2f();
public Vector2f blend_ratio = new Vector2f();
public int heightmap;
Zone zone;
public Terrain(Zone zone) {
this.zone = zone;
this.heightmap = this.zone.template.terrain_image;
// Configure PLANAR zones to use the same 16x16 pixel image
// that all similar terrains share. (See JSON)
if (this.zone.template.terrain_type.equals("PLANAR"))
this.heightmap = 1006300; // all 0
// Load pixel data for this terrain from cache
this.terrain_pixel_data = Terrain._heightmap_pixel_cache.get(heightmap);
if (terrain_pixel_data == null)
Logger.error("Pixel map empty for zone: " + this.zone.getObjectUUID() + ":" + this.zone.zoneName);
// Configure terrain based on zone properties
this.terrain_size.x = this.zone.major_radius * 2;
this.terrain_size.y = this.zone.minor_radius * 2;
this.cell_count.x = this.terrain_pixel_data.length - 1;
this.cell_count.y = this.terrain_pixel_data[0].length - 1;
this.cell_size.x = terrain_size.x / this.cell_count.x;
this.cell_size.y = terrain_size.y / this.cell_count.y;
// Blending configuration. These ratios are used to calculate
// the blending area between child and parent terrains when
// they are stitched together.
this.blend_values.x = this.zone.template.max_blend;
this.blend_values.y = this.zone.template.min_blend;
Vector2f major_blend = new Vector2f(this.blend_values.x / this.zone.major_radius,
this.blend_values.y / this.zone.major_radius);
Vector2f minor_blend = new Vector2f(this.blend_values.x / this.zone.minor_radius,
this.blend_values.y / this.zone.minor_radius);
if (major_blend.y > 0.4f)
blend_ratio.x = major_blend.y;
else
blend_ratio.x = Math.min(major_blend.x, 0.4f);
if (minor_blend.y > 0.4f)
blend_ratio.y = minor_blend.y;
else
blend_ratio.y = Math.min(minor_blend.x, 0.4f);
// Scale coefficient for this terrain
this.terrain_scale = this.zone.template.terrain_max_y / 255f;
}
public static Zone getNextZoneWithTerrain(Zone zone) {
// Not all zones have a terrain. Some are for display only
// and heights returned are from the parent heightmap. This
// is controlled in the JSON via the has_terrain_gen field.
Zone terrain_zone = zone;
if (zone == null)
return ZoneManager.seaFloor;
if (zone.terrain != null)
return zone;
if (zone.equals(ZoneManager.seaFloor))
return zone;
while (terrain_zone.terrain == null)
terrain_zone = terrain_zone.parent;
return terrain_zone;
}
public static float getWorldHeight(Zone zone, Vector3fImmutable world_loc) {
// Retrieve the next zone up in the tree with a terrain defined.
Zone terrainZone = getNextZoneWithTerrain(zone);
Zone parentZone = getNextZoneWithTerrain(zone.parent);
// Transform world loc into zone space coordinate system
Vector2f terrainLoc = ZoneManager.worldToTerrainSpace(world_loc, terrainZone);
Vector2f parentLoc = ZoneManager.worldToTerrainSpace(world_loc, parentZone);
// Offset from origin needed for blending function
Vector2f terrainOffset = ZoneManager.worldToZoneOffset(world_loc, terrainZone);
// Interpolate height for this position in both terrains
float interpolatedChildHeight = terrainZone.terrain.getInterpolatedTerrainHeight(terrainLoc);
interpolatedChildHeight += terrainZone.global_height;
float interpolatedParentTerrainHeight = parentZone.terrain.getInterpolatedTerrainHeight(parentLoc);
interpolatedParentTerrainHeight += parentZone.global_height;
// Blend between terrains
float blendCoefficient = terrainZone.terrain.getTerrainBlendCoefficient(terrainOffset);
float terrainHeight = interpolatedChildHeight * blendCoefficient;
terrainHeight += interpolatedParentTerrainHeight * (1 - blendCoefficient);
return terrainHeight;
}
public static float getWorldHeight(Vector3fImmutable world_loc) {
Zone currentZone = ZoneManager.findSmallestZone(world_loc);
return getWorldHeight(currentZone, world_loc);
}
public Vector2f getTerrainCell(Vector2f terrain_loc) {
// Calculate terrain cell with offset
Vector2f terrain_cell = new Vector2f(terrain_loc.x / this.cell_size.x, terrain_loc.y / this.cell_size.y);
// Clamp values when standing directly on pole
terrain_cell.x = Math.max(0, Math.min(this.cell_count.x - 1, terrain_cell.x));
terrain_cell.y = Math.max(0, Math.min(this.cell_count.y - 1, terrain_cell.y));
return terrain_cell;
}
public float getInterpolatedTerrainHeight(Vector2f terrain_loc) {
float interpolatedHeight;
// Early exit for guild zones
if (this.zone.guild_zone)
return 5.0f;
// Determine terrain and offset from top left vertex
Vector2f terrain_cell = getTerrainCell(terrain_loc);
int pixel_x = (int) Math.floor(terrain_cell.x);
int pixel_y = (int) Math.floor(terrain_cell.y);
Vector2f pixel_offset = new Vector2f(terrain_cell.x % 1, terrain_cell.y % 1);
// 4 surrounding vertices from the pixel array.
short top_left_pixel = terrain_pixel_data[pixel_x][pixel_y];
short top_right_pixel = terrain_pixel_data[pixel_x + 1][pixel_y];
short bottom_left_pixel = terrain_pixel_data[pixel_x][pixel_y + 1];
short bottom_right_pixel = terrain_pixel_data[pixel_x + 1][pixel_y + 1];
// Interpolate between the 4 vertices
interpolatedHeight = top_left_pixel * (1 - pixel_offset.x) * (1 - pixel_offset.y);
interpolatedHeight += top_right_pixel * (1 - pixel_offset.y) * (pixel_offset.x);
interpolatedHeight += (bottom_left_pixel * (1 - pixel_offset.x) * pixel_offset.y);
interpolatedHeight += (bottom_right_pixel * pixel_offset.y * pixel_offset.x);
interpolatedHeight *= this.terrain_scale; // Scale height
return interpolatedHeight;
}
public float getTerrainBlendCoefficient(Vector2f zone_offset) {
// Normalize terrain offset
Vector2f normalizedOffset = new Vector2f(Math.abs(zone_offset.x) / this.zone.template.major_radius,
Math.abs(zone_offset.y) / this.zone.template.minor_radius);
float blendCoefficient;
if (normalizedOffset.x <= 1 - blend_ratio.x || normalizedOffset.x <= normalizedOffset.y) {
if (normalizedOffset.y < 1 - blend_ratio.y)
return 1;
blendCoefficient = (normalizedOffset.y - (1 - blend_ratio.y)) / blend_ratio.y;
} else
blendCoefficient = (normalizedOffset.x - (1 - blend_ratio.x)) / blend_ratio.x;
blendCoefficient = (float) Math.atan((0.5f - blendCoefficient) * PI);
return (blendCoefficient + 1) * 0.5f;
}
}

22
src/engine/InterestManagement/WorldGrid.java

@ -8,11 +8,11 @@ @@ -8,11 +8,11 @@
package engine.InterestManagement;
import engine.Enum.GridObjectType;
import engine.gameManager.DispatchManager;
import engine.math.FastMath;
import engine.math.Vector3f;
import engine.math.Vector3fImmutable;
import engine.net.DispatchMessage;
import engine.mbEnums.GridObjectType;
import engine.net.client.ClientConnection;
import engine.net.client.msg.LoadCharacterMsg;
import engine.net.client.msg.LoadStructureMsg;
@ -201,7 +201,7 @@ public class WorldGrid { @@ -201,7 +201,7 @@ public class WorldGrid {
UnloadObjectsMsg uom = new UnloadObjectsMsg();
uom.addObject(awo);
DispatchMessage.sendToAllInRange(awo, uom);
DispatchManager.sendToAllInRange(awo, uom);
}
public static void loadObject(AbstractWorldObject awo) {
@ -213,15 +213,15 @@ public class WorldGrid { @@ -213,15 +213,15 @@ public class WorldGrid {
case Building:
lsm = new LoadStructureMsg();
lsm.addObject((Building) awo);
DispatchMessage.sendToAllInRange(awo, lsm);
DispatchManager.sendToAllInRange(awo, lsm);
break;
case NPC:
lcm = new LoadCharacterMsg((NPC) awo, false);
DispatchMessage.sendToAllInRange(awo, lcm);
DispatchManager.sendToAllInRange(awo, lcm);
break;
case Mob:
lcm = new LoadCharacterMsg((Mob) awo, false);
DispatchMessage.sendToAllInRange(awo, lcm);
DispatchManager.sendToAllInRange(awo, lcm);
break;
default:
// *** Refactor: Log error?
@ -239,19 +239,19 @@ public class WorldGrid { @@ -239,19 +239,19 @@ public class WorldGrid {
case Building:
lsm = new LoadStructureMsg();
lsm.addObject((Building) awo);
DispatchMessage.sendToAllInRange(awo, lsm);
DispatchManager.sendToAllInRange(awo, lsm);
break;
case NPC:
lcm = new LoadCharacterMsg((NPC) awo, false);
DispatchMessage.sendToAllInRange(awo, lcm);
DispatchManager.sendToAllInRange(awo, lcm);
break;
case Mob:
lcm = new LoadCharacterMsg((Mob) awo, false);
DispatchMessage.sendToAllInRange(awo, lcm);
DispatchManager.sendToAllInRange(awo, lcm);
break;
case PlayerCharacter:
lcm = new LoadCharacterMsg((PlayerCharacter) awo, false);
DispatchMessage.sendToAllInRange(awo, lcm);
DispatchManager.sendToAllInRange(awo, lcm);
break;
default:
// *** Refactor: Log error?
@ -263,7 +263,7 @@ public class WorldGrid { @@ -263,7 +263,7 @@ public class WorldGrid {
ClientConnection origin) {
UnloadObjectsMsg uom = new UnloadObjectsMsg();
uom.addObject(awo);
DispatchMessage.sendToAllInRange(awo, uom);
DispatchManager.sendToAllInRange(awo, uom);
}
public static void addObject(AbstractWorldObject awo, PlayerCharacter pc) {

8
src/engine/db/archive/BaneRecord.java

@ -9,8 +9,8 @@ @@ -9,8 +9,8 @@
package engine.db.archive;
import engine.Enum;
import engine.gameManager.DbManager;
import engine.mbEnums;
import engine.objects.Bane;
import engine.objects.City;
import engine.workthreads.WarehousePushThread;
@ -21,7 +21,7 @@ import java.sql.*; @@ -21,7 +21,7 @@ import java.sql.*;
import java.time.LocalDateTime;
import java.util.concurrent.LinkedBlockingQueue;
import static engine.Enum.RecordEventType;
import static engine.mbEnums.RecordEventType;
public class BaneRecord extends DataRecord {
@ -38,7 +38,7 @@ public class BaneRecord extends DataRecord { @@ -38,7 +38,7 @@ public class BaneRecord extends DataRecord {
private DateTime baneDropTime;
private BaneRecord(Bane bane) {
this.recordType = Enum.DataRecordType.BANE;
this.recordType = mbEnums.DataRecordType.BANE;
this.eventType = RecordEventType.PENDING;
}
@ -51,7 +51,7 @@ public class BaneRecord extends DataRecord { @@ -51,7 +51,7 @@ public class BaneRecord extends DataRecord {
baneRecord = new BaneRecord(bane);
baneRecord.eventType = eventType;
} else {
baneRecord.recordType = Enum.DataRecordType.BANE;
baneRecord.recordType = mbEnums.DataRecordType.BANE;
baneRecord.eventType = eventType;
}

6
src/engine/db/archive/CharacterRecord.java

@ -9,8 +9,8 @@ @@ -9,8 +9,8 @@
package engine.db.archive;
import engine.Enum;
import engine.gameManager.DbManager;
import engine.mbEnums;
import engine.objects.Guild;
import engine.objects.PlayerCharacter;
import engine.workthreads.WarehousePushThread;
@ -33,7 +33,7 @@ public class CharacterRecord extends DataRecord { @@ -33,7 +33,7 @@ public class CharacterRecord extends DataRecord {
private PlayerCharacter player;
private CharacterRecord(PlayerCharacter player) {
this.recordType = Enum.DataRecordType.CHARACTER;
this.recordType = mbEnums.DataRecordType.CHARACTER;
this.player = player;
}
@ -45,7 +45,7 @@ public class CharacterRecord extends DataRecord { @@ -45,7 +45,7 @@ public class CharacterRecord extends DataRecord {
if (characterRecord == null) {
characterRecord = new CharacterRecord(player);
} else {
characterRecord.recordType = Enum.DataRecordType.CHARACTER;
characterRecord.recordType = mbEnums.DataRecordType.CHARACTER;
characterRecord.player = player;
}

16
src/engine/db/archive/CityRecord.java

@ -9,8 +9,8 @@ @@ -9,8 +9,8 @@
package engine.db.archive;
import engine.Enum;
import engine.gameManager.DbManager;
import engine.mbEnums;
import engine.objects.City;
import engine.workthreads.WarehousePushThread;
@ -20,7 +20,7 @@ import java.util.concurrent.LinkedBlockingQueue; @@ -20,7 +20,7 @@ import java.util.concurrent.LinkedBlockingQueue;
public class CityRecord extends DataRecord {
private static final LinkedBlockingQueue<CityRecord> recordPool = new LinkedBlockingQueue<>();
private Enum.RecordEventType eventType;
private mbEnums.RecordEventType eventType;
private City city;
private String cityHash;
private String cityGuildHash;
@ -32,13 +32,13 @@ public class CityRecord extends DataRecord { @@ -32,13 +32,13 @@ public class CityRecord extends DataRecord {
private java.time.LocalDateTime establishedDatetime;
private CityRecord(City city) {
this.recordType = Enum.DataRecordType.CITY;
this.recordType = mbEnums.DataRecordType.CITY;
this.city = city;
this.eventType = Enum.RecordEventType.CREATE;
this.eventType = mbEnums.RecordEventType.CREATE;
}
public static CityRecord borrow(City city, Enum.RecordEventType eventType) {
public static CityRecord borrow(City city, mbEnums.RecordEventType eventType) {
CityRecord cityRecord;
cityRecord = recordPool.poll();
@ -47,7 +47,7 @@ public class CityRecord extends DataRecord { @@ -47,7 +47,7 @@ public class CityRecord extends DataRecord {
cityRecord = new CityRecord(city);
cityRecord.eventType = eventType;
} else {
cityRecord.recordType = Enum.DataRecordType.CITY;
cityRecord.recordType = mbEnums.DataRecordType.CITY;
cityRecord.eventType = eventType;
cityRecord.city = city;
@ -67,9 +67,9 @@ public class CityRecord extends DataRecord { @@ -67,9 +67,9 @@ public class CityRecord extends DataRecord {
cityRecord.locX = cityRecord.city.getTOL().getLoc().x;
cityRecord.locY = -cityRecord.city.getTOL().getLoc().z; // flip sign on 'y' coordinate
cityRecord.zoneHash = cityRecord.city.getParent().getHash();
cityRecord.zoneHash = cityRecord.city.getParent().hash;
if (cityRecord.eventType.equals(Enum.RecordEventType.CREATE))
if (cityRecord.eventType.equals(mbEnums.RecordEventType.CREATE))
cityRecord.establishedDatetime = cityRecord.city.established;
else
cityRecord.establishedDatetime = java.time.LocalDateTime.now();

4
src/engine/db/archive/DataRecord.java

@ -9,11 +9,11 @@ @@ -9,11 +9,11 @@
package engine.db.archive;
import engine.Enum;
import engine.mbEnums;
class DataRecord {
public Enum.DataRecordType recordType;
public mbEnums.DataRecordType recordType;
DataRecord() {

2
src/engine/db/archive/DataWarehouse.java

@ -22,7 +22,7 @@ import java.sql.ResultSet; @@ -22,7 +22,7 @@ import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.concurrent.LinkedBlockingQueue;
import static engine.Enum.DataRecordType;
import static engine.mbEnums.DataRecordType;
public class DataWarehouse implements Runnable {

17
src/engine/db/archive/GuildRecord.java

@ -9,9 +9,9 @@ @@ -9,9 +9,9 @@
package engine.db.archive;
import engine.Enum;
import engine.Enum.RecordEventType;
import engine.gameManager.DbManager;
import engine.mbEnums;
import engine.mbEnums.RecordEventType;
import engine.objects.Guild;
import engine.workthreads.WarehousePushThread;
@ -30,7 +30,7 @@ public class GuildRecord extends DataRecord { @@ -30,7 +30,7 @@ public class GuildRecord extends DataRecord {
public static HashMap<Integer, GuildRecord> GuildRecordCache = null;
public String guildHash;
public int guildID;
private Enum.RecordEventType eventType;
private mbEnums.RecordEventType eventType;
private Guild guild;
private String guildName;
private String charterName;
@ -44,9 +44,9 @@ public class GuildRecord extends DataRecord { @@ -44,9 +44,9 @@ public class GuildRecord extends DataRecord {
private java.time.LocalDateTime eventDatetime;
private GuildRecord(Guild guild) {
this.recordType = Enum.DataRecordType.GUILD;
this.recordType = mbEnums.DataRecordType.GUILD;
this.guild = guild;
this.eventType = Enum.RecordEventType.CREATE;
this.eventType = mbEnums.RecordEventType.CREATE;
}
@ -71,7 +71,7 @@ public class GuildRecord extends DataRecord { @@ -71,7 +71,7 @@ public class GuildRecord extends DataRecord {
}
public static GuildRecord borrow(Guild guild, Enum.RecordEventType eventType) {
public static GuildRecord borrow(Guild guild, mbEnums.RecordEventType eventType) {
GuildRecord guildRecord;
//add
guildRecord = recordPool.poll();
@ -81,7 +81,7 @@ public class GuildRecord extends DataRecord { @@ -81,7 +81,7 @@ public class GuildRecord extends DataRecord {
guildRecord.eventType = eventType;
} else {
guildRecord.guild = guild;
guildRecord.recordType = Enum.DataRecordType.GUILD;
guildRecord.recordType = mbEnums.DataRecordType.GUILD;
guildRecord.eventType = eventType;
}
@ -89,7 +89,8 @@ public class GuildRecord extends DataRecord { @@ -89,7 +89,8 @@ public class GuildRecord extends DataRecord {
guildRecord.guildHash = guildRecord.guild.getHash();
guildRecord.guildID = guildRecord.guild.getObjectUUID();
guildRecord.guildName = guildRecord.guild.getName();
guildRecord.charterName = Enum.GuildType.getGuildTypeFromInt(guildRecord.guild.getCharter()).getCharterName();
mbEnums.GuildCharterType guildCharterType = guild.charter;
guildRecord.charterName = guildCharterType.name;
guildRecord.GLHash = DataWarehouse.hasher.encrypt(guildRecord.guild.getGuildLeaderUUID());

16
src/engine/db/archive/MineRecord.java

@ -9,8 +9,8 @@ @@ -9,8 +9,8 @@
package engine.db.archive;
import engine.Enum;
import engine.gameManager.DbManager;
import engine.mbEnums;
import engine.objects.AbstractCharacter;
import engine.objects.Mine;
import engine.objects.PlayerCharacter;
@ -23,7 +23,7 @@ import java.util.concurrent.LinkedBlockingQueue; @@ -23,7 +23,7 @@ import java.util.concurrent.LinkedBlockingQueue;
public class MineRecord extends DataRecord {
private static final LinkedBlockingQueue<MineRecord> recordPool = new LinkedBlockingQueue<>();
private Enum.RecordEventType eventType;
private mbEnums.RecordEventType eventType;
private String zoneHash;
private String charHash;
private String mineGuildHash;
@ -33,12 +33,12 @@ public class MineRecord extends DataRecord { @@ -33,12 +33,12 @@ public class MineRecord extends DataRecord {
private float locY;
private MineRecord() {
this.recordType = Enum.DataRecordType.MINE;
this.eventType = Enum.RecordEventType.CAPTURE;
this.recordType = mbEnums.DataRecordType.MINE;
this.eventType = mbEnums.RecordEventType.CAPTURE;
}
public static MineRecord borrow(Mine mine, AbstractCharacter character, Enum.RecordEventType eventType) {
public static MineRecord borrow(Mine mine, AbstractCharacter character, mbEnums.RecordEventType eventType) {
MineRecord mineRecord;
mineRecord = recordPool.poll();
@ -48,13 +48,13 @@ public class MineRecord extends DataRecord { @@ -48,13 +48,13 @@ public class MineRecord extends DataRecord {
mineRecord = new MineRecord();
mineRecord.eventType = eventType;
} else {
mineRecord.recordType = Enum.DataRecordType.MINE;
mineRecord.recordType = mbEnums.DataRecordType.MINE;
mineRecord.eventType = eventType;
}
mineRecord.zoneHash = mine.getParentZone().getHash();
mineRecord.zoneHash = mine.getParentZone().hash;
if (character.getObjectType().equals(Enum.GameObjectType.PlayerCharacter)) {
if (character.getObjectType().equals(mbEnums.GameObjectType.PlayerCharacter)) {
player = (PlayerCharacter) character;
mineRecord.charHash = player.getHash();
} else

6
src/engine/db/archive/PvpRecord.java

@ -23,8 +23,8 @@ import java.time.LocalDateTime; @@ -23,8 +23,8 @@ import java.time.LocalDateTime;
import java.util.LinkedList;
import java.util.concurrent.LinkedBlockingQueue;
import static engine.Enum.DataRecordType;
import static engine.Enum.PvpHistoryType;
import static engine.mbEnums.DataRecordType;
import static engine.mbEnums.PvpHistoryType;
public class PvpRecord extends DataRecord {
@ -281,7 +281,7 @@ public class PvpRecord extends DataRecord { @@ -281,7 +281,7 @@ public class PvpRecord extends DataRecord {
outStatement.setInt(8, this.victim.getLevel());
outStatement.setString(9, DataWarehouse.hasher.encrypt(zone.getObjectUUID()));
outStatement.setString(10, zone.getName());
outStatement.setString(10, zone.zoneName);
outStatement.setFloat(11, this.location.getX());
outStatement.setFloat(12, -this.location.getZ()); // flip sign on 'y' coordinate
outStatement.setBoolean(13, this.pvpExp);

16
src/engine/db/archive/RealmRecord.java

@ -9,8 +9,8 @@ @@ -9,8 +9,8 @@
package engine.db.archive;
import engine.Enum;
import engine.gameManager.DbManager;
import engine.mbEnums;
import engine.objects.Realm;
import engine.workthreads.WarehousePushThread;
@ -23,20 +23,20 @@ public class RealmRecord extends DataRecord { @@ -23,20 +23,20 @@ public class RealmRecord extends DataRecord {
private static final LinkedBlockingQueue<RealmRecord> recordPool = new LinkedBlockingQueue<>();
private Realm realm;
private Enum.RecordEventType eventType;
private mbEnums.RecordEventType eventType;
private String cityHash;
private String guildHash;
private String charterType;
private LocalDateTime eventDateTime;
private RealmRecord(Realm realm) {
this.recordType = Enum.DataRecordType.REALM;
this.recordType = mbEnums.DataRecordType.REALM;
this.realm = realm;
this.eventType = Enum.RecordEventType.CAPTURE;
this.eventType = mbEnums.RecordEventType.CAPTURE;
}
public static RealmRecord borrow(Realm realm, Enum.RecordEventType eventType) {
public static RealmRecord borrow(Realm realm, mbEnums.RecordEventType eventType) {
RealmRecord realmRecord;
realmRecord = recordPool.poll();
@ -45,7 +45,7 @@ public class RealmRecord extends DataRecord { @@ -45,7 +45,7 @@ public class RealmRecord extends DataRecord {
realmRecord = new RealmRecord(realm);
realmRecord.eventType = eventType;
} else {
realmRecord.recordType = Enum.DataRecordType.REALM;
realmRecord.recordType = mbEnums.DataRecordType.REALM;
realmRecord.eventType = eventType;
realmRecord.realm = realm;
@ -53,9 +53,9 @@ public class RealmRecord extends DataRecord { @@ -53,9 +53,9 @@ public class RealmRecord extends DataRecord {
realmRecord.cityHash = realm.getRulingCity().getHash();
realmRecord.guildHash = realm.getRulingCity().getGuild().getHash();
realmRecord.charterType = Enum.CharterType.getCharterTypeByID(realmRecord.realm.getCharterType()).name();
realmRecord.charterType = mbEnums.CharterType.getCharterTypeByID(realmRecord.realm.getCharterType()).name();
if (realmRecord.eventType.equals(Enum.RecordEventType.CAPTURE))
if (realmRecord.eventType.equals(mbEnums.RecordEventType.CAPTURE))
realmRecord.eventDateTime = realm.ruledSince;
else
realmRecord.eventDateTime = LocalDateTime.now();

8
src/engine/db/handlers/dbAccountHandler.java

@ -9,10 +9,10 @@ @@ -9,10 +9,10 @@
package engine.db.handlers;
import engine.Enum;
import engine.Enum.GameObjectType;
import engine.gameManager.ConfigManager;
import engine.gameManager.DbManager;
import engine.mbEnums;
import engine.mbEnums.GameObjectType;
import engine.objects.Account;
import engine.objects.PlayerCharacter;
import org.pmw.tinylog.Logger;
@ -27,7 +27,7 @@ public class dbAccountHandler extends dbHandlerBase { @@ -27,7 +27,7 @@ public class dbAccountHandler extends dbHandlerBase {
public dbAccountHandler() {
this.localClass = Account.class;
this.localObjectType = Enum.GameObjectType.valueOf(this.localClass.getSimpleName());
this.localObjectType = mbEnums.GameObjectType.valueOf(this.localClass.getSimpleName());
}
public Account GET_ACCOUNT(int accountID) {
@ -204,7 +204,7 @@ public class dbAccountHandler extends dbHandlerBase { @@ -204,7 +204,7 @@ public class dbAccountHandler extends dbHandlerBase {
if (account != null) {
account.runAfterLoad();
if (ConfigManager.serverType.equals(Enum.ServerType.LOGINSERVER))
if (ConfigManager.serverType.equals(mbEnums.ServerType.LOGINSERVER))
Account.AccountsMap.put(uname, account.getObjectUUID());
}

6
src/engine/db/handlers/dbBaseClassHandler.java

@ -9,9 +9,9 @@ @@ -9,9 +9,9 @@
package engine.db.handlers;
import engine.Enum;
import engine.Enum.GameObjectType;
import engine.gameManager.DbManager;
import engine.mbEnums;
import engine.mbEnums.GameObjectType;
import engine.objects.BaseClass;
import org.pmw.tinylog.Logger;
@ -25,7 +25,7 @@ public class dbBaseClassHandler extends dbHandlerBase { @@ -25,7 +25,7 @@ public class dbBaseClassHandler extends dbHandlerBase {
public dbBaseClassHandler() {
this.localClass = BaseClass.class;
this.localObjectType = Enum.GameObjectType.BaseClass;
this.localObjectType = mbEnums.GameObjectType.BaseClass;
}
public BaseClass GET_BASE_CLASS(final int id) {

51
src/engine/db/handlers/dbBoonHandler.java

@ -1,51 +0,0 @@ @@ -1,51 +0,0 @@
// • ▌ ▄ ·. ▄▄▄· ▄▄ • ▪ ▄▄· ▄▄▄▄· ▄▄▄· ▐▄▄▄ ▄▄▄ .
// ·██ ▐███▪▐█ ▀█ ▐█ ▀ ▪██ ▐█ ▌▪▐█ ▀█▪▐█ ▀█ •█▌ ▐█▐▌·
// ▐█ ▌▐▌▐█·▄█▀▀█ ▄█ ▀█▄▐█·██ ▄▄▐█▀▀█▄▄█▀▀█ ▐█▐ ▐▌▐▀▀▀
// ██ ██▌▐█▌▐█ ▪▐▌▐█▄▪▐█▐█▌▐███▌██▄▪▐█▐█ ▪▐▌██▐ █▌▐█▄▄▌
// ▀▀ █▪▀▀▀ ▀ ▀ ·▀▀▀▀ ▀▀▀·▀▀▀ ·▀▀▀▀ ▀ ▀ ▀▀ █▪ ▀▀▀
// Magicbane Emulator Project © 2013 - 2022
// www.magicbane.com
package engine.db.handlers;
import engine.gameManager.DbManager;
import engine.objects.Boon;
import org.pmw.tinylog.Logger;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
public class dbBoonHandler extends dbHandlerBase {
public dbBoonHandler() {
}
public ArrayList<Boon> GET_BOON_AMOUNTS_FOR_ITEMBASE(int itemBaseUUID) {
ArrayList<Boon> boons = new ArrayList<>();
Boon thisBoon;
try (Connection connection = DbManager.getConnection();
PreparedStatement preparedStatement = connection.prepareStatement("SELECT * FROM `static_item_boons` WHERE `itemBaseID` = ?")) {
preparedStatement.setInt(1, itemBaseUUID);
ResultSet rs = preparedStatement.executeQuery();
while (rs.next()) {
thisBoon = new Boon(rs);
boons.add(thisBoon);
}
} catch (SQLException e) {
Logger.error(e);
}
return boons;
}
}

97
src/engine/db/handlers/dbBuildingHandler.java

@ -9,12 +9,13 @@ @@ -9,12 +9,13 @@
package engine.db.handlers;
import engine.Enum;
import engine.Enum.DbObjectType;
import engine.Enum.ProtectionState;
import engine.Enum.TaxType;
import engine.gameManager.BuildingManager;
import engine.gameManager.DbManager;
import engine.math.Vector3fImmutable;
import engine.mbEnums;
import engine.mbEnums.DbObjectType;
import engine.mbEnums.ProtectionState;
import engine.mbEnums.TaxType;
import engine.objects.*;
import org.joda.time.DateTime;
import org.pmw.tinylog.Logger;
@ -27,12 +28,13 @@ import java.time.LocalDateTime; @@ -27,12 +28,13 @@ import java.time.LocalDateTime;
import java.time.ZoneId;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.concurrent.ConcurrentHashMap;
public class dbBuildingHandler extends dbHandlerBase {
public dbBuildingHandler() {
this.localClass = Building.class;
this.localObjectType = Enum.GameObjectType.valueOf(this.localClass.getSimpleName());
this.localObjectType = mbEnums.GameObjectType.valueOf(this.localClass.getSimpleName());
}
public Building CREATE_BUILDING(int parentZoneID, int OwnerUUID, String name, int meshUUID,
@ -88,14 +90,12 @@ public class dbBuildingHandler extends dbHandlerBase { @@ -88,14 +90,12 @@ public class dbBuildingHandler extends dbHandlerBase {
return removeFromBuildings(b);
}
public ArrayList<Building> GET_ALL_BUILDINGS_FOR_ZONE(Zone zone) {
public ArrayList<Building> GET_ALL_BUILDINGS() {
ArrayList<Building> buildings = new ArrayList<>();
try (Connection connection = DbManager.getConnection();
PreparedStatement preparedStatement = connection.prepareStatement("SELECT `obj_building`.*, `object`.`parent` FROM `object` INNER JOIN `obj_building` ON `obj_building`.`UID` = `object`.`UID` WHERE `object`.`parent` = ?;")) {
preparedStatement.setLong(1, zone.getObjectUUID());
PreparedStatement preparedStatement = connection.prepareStatement("SELECT `obj_building`.*, `object`.`parent` FROM `object` INNER JOIN `obj_building` ON `obj_building`.`UID` = `object`.`UID` ORDER BY `object`.`UID` ASC;")) {
ResultSet rs = preparedStatement.executeQuery();
buildings = getObjectsFromRs(rs, 1000);
@ -112,7 +112,7 @@ public class dbBuildingHandler extends dbHandlerBase { @@ -112,7 +112,7 @@ public class dbBuildingHandler extends dbHandlerBase {
if (uuid == 0)
return null;
Building building = (Building) DbManager.getFromCache(Enum.GameObjectType.Building, uuid);
Building building = (Building) DbManager.getFromCache(mbEnums.GameObjectType.Building, uuid);
if (building != null)
return building;
@ -425,26 +425,28 @@ public class dbBuildingHandler extends dbHandlerBase { @@ -425,26 +425,28 @@ public class dbBuildingHandler extends dbHandlerBase {
return false;
}
public void LOAD_ALL_FRIENDS_FOR_BUILDING(Building building) {
if (building == null)
return;
public void LOAD_BUILDING_FRIENDS() {
try (Connection connection = DbManager.getConnection();
PreparedStatement preparedStatement = connection.prepareStatement("SELECT * FROM `dyn_building_friends` WHERE `buildingUID` = ?")) {
PreparedStatement preparedStatement = connection.prepareStatement("SELECT * FROM `dyn_building_friends`")) {
preparedStatement.setInt(1, building.getObjectUUID());
ResultSet rs = preparedStatement.executeQuery();
while (rs.next()) {
BuildingFriends friend = new BuildingFriends(rs);
switch (friend.getFriendType()) {
// Create map if it does not yet exist
if (!BuildingManager._buildingFriends.containsKey(friend.buildingUID))
BuildingManager._buildingFriends.put(friend.buildingUID, new ConcurrentHashMap<>());
switch (friend.friendType) {
case 7:
building.getFriends().put(friend.getPlayerUID(), friend);
BuildingManager._buildingFriends.get(friend.buildingUID).put(friend.playerUID, friend);
break;
case 8:
case 9:
building.getFriends().put(friend.getGuildUID(), friend);
BuildingManager._buildingFriends.get(friend.buildingUID).put(friend.guildUID, friend);
break;
}
}
@ -455,26 +457,29 @@ public class dbBuildingHandler extends dbHandlerBase { @@ -455,26 +457,29 @@ public class dbBuildingHandler extends dbHandlerBase {
}
public void LOAD_ALL_CONDEMNED_FOR_BUILDING(Building building) {
if (building == null)
return;
public void LOAD_BUILDING_CONDEMNED() {
try (Connection connection = DbManager.getConnection();
PreparedStatement preparedStatement = connection.prepareStatement("SELECT * FROM `dyn_building_condemned` WHERE `buildingUID` = ?")) {
PreparedStatement preparedStatement = connection.prepareStatement("SELECT * FROM `dyn_building_condemned`")) {
preparedStatement.setInt(1, building.getObjectUUID());
ResultSet rs = preparedStatement.executeQuery();
while (rs.next()) {
Condemned condemned = new Condemned(rs);
switch (condemned.getFriendType()) {
// Create map if it does not yet exist
if (!BuildingManager._buildingCondemned.containsKey(condemned.buildingUUID))
BuildingManager._buildingCondemned.put(condemned.buildingUUID, new ConcurrentHashMap<>());
switch (condemned.friendType) {
case 2:
building.getCondemned().put(condemned.getPlayerUID(), condemned);
BuildingManager._buildingCondemned.get(condemned.buildingUUID).put(condemned.playerUID, condemned);
break;
case 4:
case 5:
building.getCondemned().put(condemned.getGuildUID(), condemned);
BuildingManager._buildingCondemned.get(condemned.buildingUUID).put(condemned.guildUID, condemned);
break;
}
}
@ -484,35 +489,27 @@ public class dbBuildingHandler extends dbHandlerBase { @@ -484,35 +489,27 @@ public class dbBuildingHandler extends dbHandlerBase {
}
}
public ArrayList<Vector3fImmutable> LOAD_PATROL_POINTS(Building building) {
if (building == null)
return null;
ArrayList<Vector3fImmutable> patrolPoints = new ArrayList<>();
public void LOAD_BARRACKS_PATROL_POINTS() {
try (Connection connection = DbManager.getConnection();
PreparedStatement preparedStatement = connection.prepareStatement("SELECT * FROM `dyn_building_patrol_points` WHERE `buildingUID` = ?")) {
preparedStatement.setInt(1, building.getObjectUUID());
PreparedStatement preparedStatement = connection.prepareStatement("SELECT * FROM `dyn_building_patrol_points`")) {
ResultSet rs = preparedStatement.executeQuery();
while (rs.next()) {
float x1 = rs.getFloat("patrolX");
float y1 = rs.getFloat("patrolY");
float z1 = rs.getFloat("patrolZ");
Vector3fImmutable patrolPoint = new Vector3fImmutable(x1, y1, z1);
patrolPoints.add(patrolPoint);
int buildingUUID = rs.getInt("buildingUID");
if (!BuildingManager._buildingPatrolPoints.containsKey(buildingUUID))
BuildingManager._buildingPatrolPoints.put(buildingUUID, new ArrayList<>());
Vector3fImmutable patrolPoint = new Vector3fImmutable(rs.getFloat("patrolX"), rs.getFloat("patrolY"), rs.getFloat("patrolZ"));
BuildingManager._buildingPatrolPoints.get(buildingUUID).add(patrolPoint);
}
} catch (SQLException e) {
Logger.error(e);
}
return patrolPoints;
}
public boolean ADD_TO_CONDEMNLIST(final long parentUID, final long playerUID, final long guildID, final int friendType) {
@ -722,10 +719,10 @@ public class dbBuildingHandler extends dbHandlerBase { @@ -722,10 +719,10 @@ public class dbBuildingHandler extends dbHandlerBase {
+ "WHERE`buildingUID` = ? AND `playerUID` = ? AND `guildUID` = ? AND `friendType` = ?")) {
preparedStatement.setBoolean(1, active);
preparedStatement.setInt(2, condemn.getParent());
preparedStatement.setInt(3, condemn.getPlayerUID());
preparedStatement.setInt(4, condemn.getGuildUID());
preparedStatement.setInt(5, condemn.getFriendType());
preparedStatement.setInt(2, condemn.buildingUUID);
preparedStatement.setInt(3, condemn.playerUID);
preparedStatement.setInt(4, condemn.guildUID);
preparedStatement.setInt(5, condemn.friendType);
return (preparedStatement.executeUpdate() > 0);

3
src/engine/db/handlers/dbBuildingLocationHandler.java

@ -10,6 +10,7 @@ @@ -10,6 +10,7 @@
package engine.db.handlers;
import engine.gameManager.DbManager;
import engine.mbEnums;
import engine.objects.BuildingLocation;
import org.pmw.tinylog.Logger;
@ -23,7 +24,7 @@ public class dbBuildingLocationHandler extends dbHandlerBase { @@ -23,7 +24,7 @@ public class dbBuildingLocationHandler extends dbHandlerBase {
public dbBuildingLocationHandler() {
this.localClass = BuildingLocation.class;
this.localObjectType = engine.Enum.GameObjectType.valueOf(this.localClass.getSimpleName());
this.localObjectType = mbEnums.GameObjectType.valueOf(this.localClass.getSimpleName());
}
public ArrayList<BuildingLocation> LOAD_BUILDING_LOCATIONS() {

3
src/engine/db/handlers/dbCSSessionHandler.java

@ -10,6 +10,7 @@ @@ -10,6 +10,7 @@
package engine.db.handlers;
import engine.gameManager.DbManager;
import engine.mbEnums;
import engine.objects.Account;
import engine.objects.PlayerCharacter;
import engine.session.CSSession;
@ -26,7 +27,7 @@ public class dbCSSessionHandler extends dbHandlerBase { @@ -26,7 +27,7 @@ public class dbCSSessionHandler extends dbHandlerBase {
public dbCSSessionHandler() {
this.localClass = CSSession.class;
this.localObjectType = engine.Enum.GameObjectType.valueOf(this.localClass.getSimpleName());
this.localObjectType = mbEnums.GameObjectType.valueOf(this.localClass.getSimpleName());
}
public boolean ADD_CSSESSION(String secKey, Account acc, InetAddress inet, String machineID) {

6
src/engine/db/handlers/dbCharacterPowerHandler.java

@ -9,8 +9,8 @@ @@ -9,8 +9,8 @@
package engine.db.handlers;
import engine.Enum;
import engine.gameManager.DbManager;
import engine.mbEnums;
import engine.objects.CharacterPower;
import engine.objects.PlayerCharacter;
import engine.server.MBServerStatics;
@ -23,7 +23,7 @@ public class dbCharacterPowerHandler extends dbHandlerBase { @@ -23,7 +23,7 @@ public class dbCharacterPowerHandler extends dbHandlerBase {
public dbCharacterPowerHandler() {
this.localClass = CharacterPower.class;
this.localObjectType = Enum.GameObjectType.valueOf(this.localClass.getSimpleName());
this.localObjectType = mbEnums.GameObjectType.valueOf(this.localClass.getSimpleName());
}
public CharacterPower ADD_CHARACTER_POWER(CharacterPower toAdd) {
@ -74,7 +74,7 @@ public class dbCharacterPowerHandler extends dbHandlerBase { @@ -74,7 +74,7 @@ public class dbCharacterPowerHandler extends dbHandlerBase {
public CharacterPower GET_CHARACTER_POWER(int objectUUID) {
CharacterPower characterPower = (CharacterPower) DbManager.getFromCache(Enum.GameObjectType.CharacterPower, objectUUID);
CharacterPower characterPower = (CharacterPower) DbManager.getFromCache(mbEnums.GameObjectType.CharacterPower, objectUUID);
if (characterPower != null)
return characterPower;

6
src/engine/db/handlers/dbCharacterRuneHandler.java

@ -9,8 +9,8 @@ @@ -9,8 +9,8 @@
package engine.db.handlers;
import engine.Enum;
import engine.gameManager.DbManager;
import engine.mbEnums;
import engine.objects.CharacterRune;
import org.pmw.tinylog.Logger;
@ -21,7 +21,7 @@ public class dbCharacterRuneHandler extends dbHandlerBase { @@ -21,7 +21,7 @@ public class dbCharacterRuneHandler extends dbHandlerBase {
public dbCharacterRuneHandler() {
this.localClass = CharacterRune.class;
this.localObjectType = Enum.GameObjectType.valueOf(this.localClass.getSimpleName());
this.localObjectType = mbEnums.GameObjectType.valueOf(this.localClass.getSimpleName());
}
public CharacterRune ADD_CHARACTER_RUNE(final CharacterRune toAdd) {
@ -49,7 +49,7 @@ public class dbCharacterRuneHandler extends dbHandlerBase { @@ -49,7 +49,7 @@ public class dbCharacterRuneHandler extends dbHandlerBase {
public CharacterRune GET_CHARACTER_RUNE(int runeID) {
CharacterRune characterRune = (CharacterRune) DbManager.getFromCache(Enum.GameObjectType.CharacterRune, runeID);
CharacterRune characterRune = (CharacterRune) DbManager.getFromCache(mbEnums.GameObjectType.CharacterRune, runeID);
if (characterRune != null)
return characterRune;

8
src/engine/db/handlers/dbCharacterSkillHandler.java

@ -9,8 +9,8 @@ @@ -9,8 +9,8 @@
package engine.db.handlers;
import engine.Enum;
import engine.gameManager.DbManager;
import engine.mbEnums;
import engine.objects.AbstractCharacter;
import engine.objects.CharacterSkill;
import engine.objects.PlayerCharacter;
@ -24,7 +24,7 @@ public class dbCharacterSkillHandler extends dbHandlerBase { @@ -24,7 +24,7 @@ public class dbCharacterSkillHandler extends dbHandlerBase {
public dbCharacterSkillHandler() {
this.localClass = CharacterSkill.class;
this.localObjectType = Enum.GameObjectType.valueOf(this.localClass.getSimpleName());
this.localObjectType = mbEnums.GameObjectType.valueOf(this.localClass.getSimpleName());
}
public CharacterSkill ADD_SKILL(CharacterSkill toAdd) {
@ -72,7 +72,7 @@ public class dbCharacterSkillHandler extends dbHandlerBase { @@ -72,7 +72,7 @@ public class dbCharacterSkillHandler extends dbHandlerBase {
public CharacterSkill GET_SKILL(final int objectUUID) {
CharacterSkill characterSkill = (CharacterSkill) DbManager.getFromCache(Enum.GameObjectType.CharacterSkill, objectUUID);
CharacterSkill characterSkill = (CharacterSkill) DbManager.getFromCache(mbEnums.GameObjectType.CharacterSkill, objectUUID);
if (characterSkill != null)
return characterSkill;
@ -95,7 +95,7 @@ public class dbCharacterSkillHandler extends dbHandlerBase { @@ -95,7 +95,7 @@ public class dbCharacterSkillHandler extends dbHandlerBase {
ConcurrentHashMap<String, CharacterSkill> characterSkills = new ConcurrentHashMap<>(MBServerStatics.CHM_INIT_CAP, MBServerStatics.CHM_LOAD, MBServerStatics.CHM_THREAD_LOW);
if (ac == null || (!(ac.getObjectType().equals(Enum.GameObjectType.PlayerCharacter))))
if (ac == null || (!(ac.getObjectType().equals(mbEnums.GameObjectType.PlayerCharacter))))
return characterSkills;
PlayerCharacter playerCharacter = (PlayerCharacter) ac;

36
src/engine/db/handlers/dbCityHandler.java

@ -9,8 +9,8 @@ @@ -9,8 +9,8 @@
package engine.db.handlers;
import engine.Enum;
import engine.gameManager.DbManager;
import engine.mbEnums;
import engine.objects.AbstractGameObject;
import engine.objects.Building;
import engine.objects.City;
@ -25,7 +25,7 @@ public class dbCityHandler extends dbHandlerBase { @@ -25,7 +25,7 @@ public class dbCityHandler extends dbHandlerBase {
public dbCityHandler() {
this.localClass = City.class;
this.localObjectType = Enum.GameObjectType.valueOf(this.localClass.getSimpleName());
this.localObjectType = mbEnums.GameObjectType.valueOf(this.localClass.getSimpleName());
}
public static void addObject(ArrayList<AbstractGameObject> list, ResultSet rs) throws SQLException {
@ -34,40 +34,42 @@ public class dbCityHandler extends dbHandlerBase { @@ -34,40 +34,42 @@ public class dbCityHandler extends dbHandlerBase {
case "zone":
Zone zone = new Zone(rs);
DbManager.addToCache(zone);
zone.runAfterLoad();
list.add(zone);
break;
case "building":
Building building = new Building(rs);
DbManager.addToCache(building);
building.runAfterLoad();
list.add(building);
break;
case "city":
City city = new City(rs);
DbManager.addToCache(city);
city.runAfterLoad();
list.add(city);
break;
}
}
public ArrayList<AbstractGameObject> CREATE_CITY(int ownerID, int parentZoneID, int realmID, float xCoord, float yCoord, float zCoord, float rotation, float W, String name, LocalDateTime established) {
public ArrayList<AbstractGameObject> CREATE_CITY(int ownerID, int parentZoneID, float xCoord, float yCoord, float zCoord, float rotation, float W, String name, LocalDateTime established) {
LocalDateTime upgradeTime = LocalDateTime.now().plusHours(2);
ArrayList<AbstractGameObject> objectList = new ArrayList<>();
try (Connection connection = DbManager.getConnection();
PreparedStatement preparedStatement = connection.prepareStatement("CALL `city_CREATE`(?, ?, ?, ?, ?, ?, ?, ?, ?,?,?)")) {
PreparedStatement preparedStatement = connection.prepareStatement("CALL `city_CREATE`(?, ?, ?, ?, ?, ?, ?, ?,?,?)")) {
preparedStatement.setLong(1, ownerID); //objectUUID of owning player
preparedStatement.setLong(2, parentZoneID); //objectUUID of parent (continent) zone
preparedStatement.setLong(3, realmID); //objectUUID of realm city belongs in
preparedStatement.setFloat(4, xCoord); //xOffset from parentZone center
preparedStatement.setFloat(5, yCoord); //yOffset from parentZone center
preparedStatement.setFloat(6, zCoord); //zOffset from parentZone center
preparedStatement.setString(7, name); //city name
preparedStatement.setTimestamp(8, Timestamp.valueOf(established));
preparedStatement.setFloat(9, rotation);
preparedStatement.setFloat(10, W);
preparedStatement.setTimestamp(11, Timestamp.valueOf(upgradeTime));
preparedStatement.setFloat(3, xCoord); //xOffset from parentZone center
preparedStatement.setFloat(4, yCoord); //yOffset from parentZone center
preparedStatement.setFloat(5, zCoord); //zOffset from parentZone center
preparedStatement.setString(6, name); //city name
preparedStatement.setTimestamp(7, Timestamp.valueOf(established));
preparedStatement.setFloat(8, rotation);
preparedStatement.setFloat(9, W);
preparedStatement.setTimestamp(10, Timestamp.valueOf(upgradeTime));
boolean work = preparedStatement.execute();
@ -96,14 +98,12 @@ public class dbCityHandler extends dbHandlerBase { @@ -96,14 +98,12 @@ public class dbCityHandler extends dbHandlerBase {
return objectList;
}
public ArrayList<City> GET_CITIES_BY_ZONE(final int objectUUID) {
public ArrayList<City> GET_ALL_CITIES() {
ArrayList<City> cityList = new ArrayList<>();
try (Connection connection = DbManager.getConnection();
PreparedStatement preparedStatement = connection.prepareStatement("SELECT `obj_city`.*, `object`.`parent` FROM `obj_city` INNER JOIN `object` ON `object`.`UID` = `obj_city`.`UID` WHERE `object`.`parent`=?;")) {
preparedStatement.setLong(1, objectUUID);
PreparedStatement preparedStatement = connection.prepareStatement("SELECT `obj_city`.*, `object`.`parent` FROM `obj_city` INNER JOIN `object` ON `object`.`UID` = `obj_city`.`UID` ORDER BY `object`.`UID` ASC;")) {
ResultSet rs = preparedStatement.executeQuery();
cityList = getObjectsFromRs(rs, 100);
@ -117,7 +117,7 @@ public class dbCityHandler extends dbHandlerBase { @@ -117,7 +117,7 @@ public class dbCityHandler extends dbHandlerBase {
public City GET_CITY(final int cityId) {
City city = (City) DbManager.getFromCache(Enum.GameObjectType.City, cityId);
City city = (City) DbManager.getFromCache(mbEnums.GameObjectType.City, cityId);
if (city != null)
return city;

49
src/engine/db/handlers/dbContractHandler.java

@ -9,11 +9,11 @@ @@ -9,11 +9,11 @@
package engine.db.handlers;
import engine.Enum;
import engine.gameManager.DbManager;
import engine.gameManager.ItemManager;
import engine.mbEnums;
import engine.objects.Contract;
import engine.objects.ItemBase;
import engine.objects.MobEquipment;
import engine.objects.Item;
import org.pmw.tinylog.Logger;
import java.sql.Connection;
@ -25,12 +25,12 @@ public class dbContractHandler extends dbHandlerBase { @@ -25,12 +25,12 @@ public class dbContractHandler extends dbHandlerBase {
public dbContractHandler() {
this.localClass = Contract.class;
this.localObjectType = Enum.GameObjectType.valueOf(this.localClass.getSimpleName());
this.localObjectType = mbEnums.GameObjectType.valueOf(this.localClass.getSimpleName());
}
public Contract GET_CONTRACT(final int objectUUID) {
Contract contract = (Contract) DbManager.getFromCache(Enum.GameObjectType.Contract, objectUUID);
Contract contract = (Contract) DbManager.getFromCache(mbEnums.GameObjectType.Contract, objectUUID);
if (contract != null)
return contract;
@ -63,33 +63,12 @@ public class dbContractHandler extends dbHandlerBase { @@ -63,33 +63,12 @@ public class dbContractHandler extends dbHandlerBase {
while (rs.next()) {
//handle item base
int itemBaseID = rs.getInt("itembaseID");
int templateID = rs.getInt("templateID");
ItemBase ib = ItemBase.getItemBase(itemBaseID);
Item item = new Item(templateID);
item.objectUUID = ItemManager.lastNegativeID.decrementAndGet();
contract.getSellInventory().add(item);
if (ib != null) {
MobEquipment me = new MobEquipment(ib, 0, 0);
contract.getSellInventory().add(me);
//handle magic effects
String prefix = rs.getString("prefix");
int pRank = rs.getInt("pRank");
String suffix = rs.getString("suffix");
int sRank = rs.getInt("sRank");
if (prefix != null) {
me.setPrefix(prefix, pRank);
me.setIsID(true);
}
if (suffix != null) {
me.setSuffix(suffix, sRank);
me.setIsID(true);
}
}
}
} catch (SQLException e) {
Logger.error(e);
@ -127,12 +106,12 @@ public class dbContractHandler extends dbHandlerBase { @@ -127,12 +106,12 @@ public class dbContractHandler extends dbHandlerBase {
}
}
public boolean updateAllowedBuildings(final Contract con, final long slotbitvalue) {
public boolean updateAllowedBuildings(final Contract con) {
try (Connection connection = DbManager.getConnection();
PreparedStatement preparedStatement = connection.prepareStatement("UPDATE `static_npc_contract` SET `allowedBuildingTypeID`=? WHERE `contractID`=?")) {
PreparedStatement preparedStatement = connection.prepareStatement("UPDATE `static_npc_contract` SET `slotInBuildings`=? WHERE `contractID`=?")) {
preparedStatement.setLong(1, slotbitvalue);
preparedStatement.setString(1, mbEnums.asString(con.allowedBuildings));
preparedStatement.setInt(2, con.getContractID());
return (preparedStatement.executeUpdate() > 0);
@ -147,7 +126,7 @@ public class dbContractHandler extends dbHandlerBase { @@ -147,7 +126,7 @@ public class dbContractHandler extends dbHandlerBase {
try (Connection connection = DbManager.getConnection();
PreparedStatement preparedStatement = connection.prepareStatement("UPDATE `static_npc_contract` SET `contractID`=?, `name`=?, "
+ "`mobbaseID`=?, `classID`=?, vendorDialog=?, iconID=?, allowedBuildingTypeID=? WHERE `ID`=?")) {
+ "`mobbaseID`=?, `classID`=?, vendorDialog=?, iconID=?, slotInBuildings=? WHERE `ID`=?")) {
preparedStatement.setInt(1, con.getContractID());
preparedStatement.setString(2, con.getName());
@ -156,7 +135,7 @@ public class dbContractHandler extends dbHandlerBase { @@ -156,7 +135,7 @@ public class dbContractHandler extends dbHandlerBase {
preparedStatement.setInt(5, (con.getVendorDialog() != null) ? con.getVendorDialog().getObjectUUID() : 0);
preparedStatement.setInt(6, con.getIconID());
preparedStatement.setInt(8, con.getObjectUUID());
preparedStatement.setLong(7, con.getAllowedBuildings().toLong());
preparedStatement.setString(7, mbEnums.asString(con.allowedBuildings));
return (preparedStatement.executeUpdate() > 0);

6
src/engine/db/handlers/dbEffectsBaseHandler.java

@ -9,9 +9,9 @@ @@ -9,9 +9,9 @@
package engine.db.handlers;
import engine.Enum;
import engine.gameManager.DbManager;
import engine.gameManager.PowersManager;
import engine.mbEnums;
import engine.powers.EffectsBase;
import engine.powers.effectmodifiers.*;
import org.pmw.tinylog.Logger;
@ -63,7 +63,7 @@ public class dbEffectsBaseHandler extends dbHandlerBase { @@ -63,7 +63,7 @@ public class dbEffectsBaseHandler extends dbHandlerBase {
IDString = rs.getString("IDString");
EffectsBase effectBase = PowersManager.getEffectByIDString(IDString);
Enum.ModType modifier = Enum.ModType.GetModType(rs.getString("modType"));
mbEnums.ModType modifier = mbEnums.ModType.GetModType(rs.getString("modType"));
//combine item prefix and suffix effect modifiers
@ -86,7 +86,7 @@ public class dbEffectsBaseHandler extends dbHandlerBase { @@ -86,7 +86,7 @@ public class dbEffectsBaseHandler extends dbHandlerBase {
}
private static AbstractEffectModifier getCombinedModifiers(AbstractEffectModifier abstractEffectModifier, ResultSet rs, EffectsBase effectBase, Enum.ModType modifier) throws SQLException {
private static AbstractEffectModifier getCombinedModifiers(AbstractEffectModifier abstractEffectModifier, ResultSet rs, EffectsBase effectBase, mbEnums.ModType modifier) throws SQLException {
switch (modifier) {
case AdjustAboveDmgCap:
abstractEffectModifier = new AdjustAboveDmgCapEffectModifier(rs);

33
src/engine/db/handlers/dbEffectsResourceCostHandler.java

@ -10,38 +10,49 @@ @@ -10,38 +10,49 @@
package engine.db.handlers;
import engine.gameManager.DbManager;
import engine.gameManager.PowersManager;
import engine.mbEnums;
import engine.objects.EffectsResourceCosts;
import org.json.JSONObject;
import org.pmw.tinylog.Logger;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.HashMap;
public class dbEffectsResourceCostHandler extends dbHandlerBase {
public dbEffectsResourceCostHandler() {
this.localClass = EffectsResourceCosts.class;
this.localObjectType = engine.Enum.GameObjectType.valueOf(this.localClass.getSimpleName());
this.localObjectType = mbEnums.GameObjectType.valueOf(this.localClass.getSimpleName());
}
public ArrayList<EffectsResourceCosts> GET_ALL_EFFECT_RESOURCES(String idString) {
ArrayList<EffectsResourceCosts> effectsResourceCosts = new ArrayList<>();
public void LOAD_ALL_COSTMAPS() {
try (Connection connection = DbManager.getConnection();
PreparedStatement preparedStatement = connection.prepareStatement("SELECT * FROM `static_power_effectcost` WHERE `IDString` = ?")) {
preparedStatement.setString(1, idString);
PreparedStatement preparedStatement = connection.prepareStatement("SELECT * FROM `static_effect_costmaps`")) {
ResultSet rs = preparedStatement.executeQuery();
effectsResourceCosts = getObjectsFromRs(rs, 1000);
while (rs.next()) {
String effectID = rs.getString("effectID");
String costString = rs.getString("costmap");
JSONObject costJSON = new JSONObject(costString);
HashMap<mbEnums.ResourceType, Integer> costmap = new HashMap<>();
for (String key : costJSON.keySet()) {
int value = costJSON.getInt(key);
costmap.put(mbEnums.ResourceType.valueOf(key), value);
}
PowersManager._effect_costMaps.put(effectID, costmap);
}
} catch (SQLException e) {
Logger.error(e);
}
return effectsResourceCosts;
}
}

32
src/engine/db/handlers/dbGuildHandler.java

@ -9,9 +9,9 @@ @@ -9,9 +9,9 @@
package engine.db.handlers;
import engine.Enum;
import engine.Enum.GuildHistoryType;
import engine.gameManager.DbManager;
import engine.mbEnums;
import engine.mbEnums.GuildHistoryType;
import engine.objects.*;
import engine.server.world.WorldServer;
import org.joda.time.DateTime;
@ -24,7 +24,7 @@ public class dbGuildHandler extends dbHandlerBase { @@ -24,7 +24,7 @@ public class dbGuildHandler extends dbHandlerBase {
public dbGuildHandler() {
this.localClass = Guild.class;
this.localObjectType = engine.Enum.GameObjectType.valueOf(this.localClass.getSimpleName());
this.localObjectType = mbEnums.GameObjectType.valueOf(this.localClass.getSimpleName());
}
public static ArrayList<PlayerCharacter> GET_GUILD_BANISHED(final int id) {
@ -276,7 +276,7 @@ public class dbGuildHandler extends dbHandlerBase { @@ -276,7 +276,7 @@ public class dbGuildHandler extends dbHandlerBase {
public Guild GET_GUILD(int id) {
Guild guild = (Guild) DbManager.getFromCache(Enum.GameObjectType.Guild, id);
Guild guild = (Guild) DbManager.getFromCache(mbEnums.GameObjectType.Guild, id);
if (guild != null)
return guild;
@ -427,7 +427,7 @@ public class dbGuildHandler extends dbHandlerBase { @@ -427,7 +427,7 @@ public class dbGuildHandler extends dbHandlerBase {
preparedStatement.setInt(6, guildTag.symbolColor);
preparedStatement.setInt(7, guildTag.backgroundDesign);
preparedStatement.setInt(8, guildTag.symbol);
preparedStatement.setInt(9, g.getCharter());
preparedStatement.setInt(9, g.charter.templateID);
preparedStatement.setString(10, g.getLeadershipType());
preparedStatement.setString(11, g.getMotto());
@ -573,7 +573,7 @@ public class dbGuildHandler extends dbHandlerBase { @@ -573,7 +573,7 @@ public class dbGuildHandler extends dbHandlerBase {
preparedStatement.setInt(4, g.getGuildTag().symbolColor);
preparedStatement.setInt(5, g.getGuildTag().backgroundDesign);
preparedStatement.setInt(6, g.getGuildTag().symbol);
preparedStatement.setInt(7, g.getCharter());
preparedStatement.setInt(7, g.charter.templateID);
preparedStatement.setString(8, g.getMOTD());
preparedStatement.setString(9, g.getICMOTD());
preparedStatement.setString(10, "");
@ -695,24 +695,4 @@ public class dbGuildHandler extends dbHandlerBase { @@ -695,24 +695,4 @@ public class dbGuildHandler extends dbHandlerBase {
}
}
//TODO uncomment this when finished with guild history warehouse integration
// public HashMap<Integer, GuildRecord> GET_WAREHOUSE_GUILD_HISTORY(){
//
// HashMap<Integer, GuildRecord> tempMap = new HashMap<>();
// prepareCallable("SELECT * FROM `warehouse_guildhistory` WHERE `eventType` = 'CREATE'");
// try {
// ResultSet rs = executeQuery();
//
// while (rs.next()) {
// GuildRecord guildRecord = new GuildRecord(rs);
// tempMap.put(guildRecord.guildID, guildRecord);
// }
// }catch (Exception e){
// Logger.error(e);
// }
// return tempMap;
//
// }
}

6
src/engine/db/handlers/dbHandlerBase.java

@ -9,10 +9,10 @@ @@ -9,10 +9,10 @@
package engine.db.handlers;
import engine.Enum;
import engine.Enum.GameObjectType;
import engine.gameManager.ConfigManager;
import engine.gameManager.DbManager;
import engine.mbEnums;
import engine.mbEnums.GameObjectType;
import engine.objects.AbstractGameObject;
import engine.objects.AbstractWorldObject;
import org.pmw.tinylog.Logger;
@ -42,7 +42,7 @@ public abstract class dbHandlerBase { @@ -42,7 +42,7 @@ public abstract class dbHandlerBase {
// Only call runAfterLoad() for objects instanced on the world server
if ((abstractGameObject != null && abstractGameObject instanceof AbstractWorldObject) &&
(ConfigManager.serverType.equals(Enum.ServerType.WORLDSERVER) ||
(ConfigManager.serverType.equals(mbEnums.ServerType.WORLDSERVER) ||
(abstractGameObject.getObjectType() == GameObjectType.Guild)))
((AbstractWorldObject) abstractGameObject).runAfterLoad();

43
src/engine/db/handlers/dbHeightMapHandler.java

@ -1,43 +0,0 @@ @@ -1,43 +0,0 @@
package engine.db.handlers;
import engine.InterestManagement.HeightMap;
import engine.gameManager.DbManager;
import org.pmw.tinylog.Logger;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class dbHeightMapHandler extends dbHandlerBase {
public dbHeightMapHandler() {
}
public void LOAD_ALL_HEIGHTMAPS() {
HeightMap thisHeightmap;
HeightMap.heightMapsCreated = 0;
try (Connection connection = DbManager.getConnection();
PreparedStatement preparedStatement = connection.prepareStatement("SELECT * FROM static_zone_heightmap INNER JOIN static_zone_size ON static_zone_size.loadNum = static_zone_heightmap.zoneLoadID")) {
ResultSet rs = preparedStatement.executeQuery();
while (rs.next()) {
thisHeightmap = new HeightMap(rs);
if (thisHeightmap.getHeightmapImage() == null) {
Logger.info("Imagemap for " + thisHeightmap.getHeightMapID() + " was null");
continue;
}
}
} catch (SQLException e) {
Logger.error(e);
}
}
}

138
src/engine/db/handlers/dbItemBaseHandler.java

@ -1,138 +0,0 @@ @@ -1,138 +0,0 @@
// • ▌ ▄ ·. ▄▄▄· ▄▄ • ▪ ▄▄· ▄▄▄▄· ▄▄▄· ▐▄▄▄ ▄▄▄ .
// ·██ ▐███▪▐█ ▀█ ▐█ ▀ ▪██ ▐█ ▌▪▐█ ▀█▪▐█ ▀█ •█▌ ▐█▐▌·
// ▐█ ▌▐▌▐█·▄█▀▀█ ▄█ ▀█▄▐█·██ ▄▄▐█▀▀█▄▄█▀▀█ ▐█▐ ▐▌▐▀▀▀
// ██ ██▌▐█▌▐█ ▪▐▌▐█▄▪▐█▐█▌▐███▌██▄▪▐█▐█ ▪▐▌██▐ █▌▐█▄▄▌
// ▀▀ █▪▀▀▀ ▀ ▀ ·▀▀▀▀ ▀▀▀·▀▀▀ ·▀▀▀▀ ▀ ▀ ▀▀ █▪ ▀▀▀
// Magicbane Emulator Project © 2013 - 2022
// www.magicbane.com
package engine.db.handlers;
import engine.gameManager.DbManager;
import engine.objects.ItemBase;
import org.pmw.tinylog.Logger;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.HashMap;
public class dbItemBaseHandler extends dbHandlerBase {
public dbItemBaseHandler() {
}
public void LOAD_BAKEDINSTATS(ItemBase itemBase) {
try (Connection connection = DbManager.getConnection();
PreparedStatement preparedStatement = connection.prepareStatement("SELECT * FROM `static_item_bakedinstat` WHERE `itemID` = ?")) {
preparedStatement.setInt(1, itemBase.getUUID());
ResultSet rs = preparedStatement.executeQuery();
while (rs.next()) {
if (rs.getBoolean("fromUse"))
itemBase.getUsedStats().put(rs.getInt("token"), rs.getInt("numTrains"));
else
itemBase.getBakedInStats().put(rs.getInt("token"), rs.getInt("numTrains"));
}
} catch (SQLException e) {
Logger.error(e);
}
}
public void LOAD_ANIMATIONS(ItemBase itemBase) {
ArrayList<Integer> tempList = new ArrayList<>();
ArrayList<Integer> tempListOff = new ArrayList<>();
try (Connection connection = DbManager.getConnection();
PreparedStatement preparedStatement = connection.prepareStatement("SELECT * FROM `static_itembase_animations` WHERE `itemBaseUUID` = ?")) {
preparedStatement.setInt(1, itemBase.getUUID());
ResultSet rs = preparedStatement.executeQuery();
while (rs.next()) {
int animation = rs.getInt("animation");
boolean rightHand = rs.getBoolean("rightHand");
if (rightHand)
tempList.add(animation);
else
tempListOff.add(animation);
}
} catch (SQLException e) {
Logger.error(e);
}
itemBase.setAnimations(tempList);
itemBase.setOffHandAnimations(tempListOff);
}
public void LOAD_ALL_ITEMBASES() {
ItemBase itemBase;
int recordsRead = 0;
try (Connection connection = DbManager.getConnection();
PreparedStatement preparedStatement = connection.prepareStatement("SELECT * FROM static_itembase")) {
ResultSet rs = preparedStatement.executeQuery();
while (rs.next()) {
recordsRead++;
itemBase = new ItemBase(rs);
ItemBase.addToCache(itemBase);
}
} catch (SQLException e) {
Logger.error(e);
}
Logger.info("read: " + recordsRead + " cached: " + ItemBase.getUUIDCache().size());
}
public HashMap<Integer, ArrayList<Integer>> LOAD_RUNES_FOR_NPC_AND_MOBS() {
HashMap<Integer, ArrayList<Integer>> runeSets = new HashMap<>();
int runeSetID;
int runeBaseID;
int recordsRead = 0;
try (Connection connection = DbManager.getConnection();
PreparedStatement preparedStatement = connection.prepareStatement("SELECT * FROM static_npc_runeSet")) {
ResultSet rs = preparedStatement.executeQuery();
while (rs.next()) {
recordsRead++;
runeSetID = rs.getInt("runeSet");
runeBaseID = rs.getInt("runeBase");
if (runeSets.get(runeSetID) == null) {
ArrayList<Integer> runeList = new ArrayList<>();
runeList.add(runeBaseID);
runeSets.put(runeSetID, runeList);
} else {
ArrayList<Integer> runeList = runeSets.get(runeSetID);
runeList.add(runeSetID);
runeSets.put(runeSetID, runeList);
}
}
} catch (SQLException e) {
Logger.error(e);
return runeSets;
}
Logger.info("read: " + recordsRead + " cached: " + runeSets.size());
return runeSets;
}
}

177
src/engine/db/handlers/dbItemHandler.java

@ -9,12 +9,15 @@ @@ -9,12 +9,15 @@
package engine.db.handlers;
import engine.Enum.ItemContainerType;
import engine.Enum.ItemType;
import engine.gameManager.DbManager;
import engine.mbEnums;
import engine.mbEnums.ItemContainerType;
import engine.mbEnums.ItemType;
import engine.objects.AbstractCharacter;
import engine.objects.CharacterItemManager;
import engine.objects.Item;
import engine.objects.ItemTemplate;
import org.json.JSONObject;
import org.pmw.tinylog.Logger;
import java.sql.Connection;
@ -22,6 +25,7 @@ import java.sql.PreparedStatement; @@ -22,6 +25,7 @@ import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
@ -29,7 +33,7 @@ public class dbItemHandler extends dbHandlerBase { @@ -29,7 +33,7 @@ public class dbItemHandler extends dbHandlerBase {
public dbItemHandler() {
this.localClass = Item.class;
this.localObjectType = engine.Enum.GameObjectType.valueOf(this.localClass.getSimpleName());
this.localObjectType = mbEnums.GameObjectType.valueOf(this.localClass.getSimpleName());
}
private static String formatTradeString(HashSet<Integer> list) {
@ -52,46 +56,56 @@ public class dbItemHandler extends dbHandlerBase { @@ -52,46 +56,56 @@ public class dbItemHandler extends dbHandlerBase {
return ret;
}
public Item ADD_ITEM(Item toAdd) {
public Item PERSIST(Item toAdd) {
try (Connection connection = DbManager.getConnection();
PreparedStatement preparedStatement = connection.prepareStatement("CALL `item_CREATE`(?, ?, ?, ?, ?, ?, ?, ?, ?,?);")) {
PreparedStatement preparedStatement = connection.prepareStatement("CALL `item_CREATE`(?, ?, ?, ?, ?, ?, ?, ?,?);")) {
preparedStatement.setInt(1, toAdd.getOwnerID());
preparedStatement.setInt(2, toAdd.getItemBaseID());
preparedStatement.setInt(3, toAdd.getChargesRemaining());
preparedStatement.setInt(4, toAdd.getDurabilityCurrent());
preparedStatement.setInt(5, toAdd.getDurabilityMax());
preparedStatement.setInt(1, toAdd.ownerID);
preparedStatement.setInt(2, toAdd.templateID);
preparedStatement.setInt(3, (byte) toAdd.chargesRemaining);
preparedStatement.setInt(4, (short) toAdd.combat_health_current);
if (toAdd.getNumOfItems() < 1)
preparedStatement.setInt(6, 1);
preparedStatement.setInt(5, 1);
else
preparedStatement.setInt(6, toAdd.getNumOfItems());
preparedStatement.setInt(5, toAdd.getNumOfItems());
switch (toAdd.containerType) {
case INVENTORY:
preparedStatement.setString(7, "inventory");
preparedStatement.setString(6, "inventory");
break;
case EQUIPPED:
preparedStatement.setString(7, "equip");
preparedStatement.setString(6, "equip");
break;
case BANK:
preparedStatement.setString(7, "bank");
preparedStatement.setString(6, "bank");
break;
case VAULT:
preparedStatement.setString(7, "vault");
preparedStatement.setString(6, "vault");
break;
case FORGE:
preparedStatement.setString(7, "forge");
preparedStatement.setString(6, "forge");
break;
default:
preparedStatement.setString(7, "none"); //Shouldn't be here
preparedStatement.setString(6, "none"); //Shouldn't be here
break;
}
preparedStatement.setByte(8, toAdd.getEquipSlot());
preparedStatement.setInt(9, toAdd.getFlags());
preparedStatement.setString(10, toAdd.getCustomName());
if (toAdd.equipSlot.equals(mbEnums.EquipSlotType.NONE))
preparedStatement.setString(7, "");
else
preparedStatement.setString(7, toAdd.equipSlot.name());
String flagString = "";
for (mbEnums.ItemFlags itemflag : toAdd.flags)
flagString += itemflag.toString() + ";";
flagString = flagString.replaceAll(";$", "");
preparedStatement.setString(8, flagString);
preparedStatement.setString(9, toAdd.name);
ResultSet rs = preparedStatement.executeQuery();
@ -148,7 +162,7 @@ public class dbItemHandler extends dbHandlerBase { @@ -148,7 +162,7 @@ public class dbItemHandler extends dbHandlerBase {
ArrayList<Item> itemList;
try (Connection connection = DbManager.getConnection();
PreparedStatement preparedStatement = connection.prepareStatement("SELECT `obj_item`.*, `object`.`parent`, `object`.`type` FROM `object` INNER JOIN `obj_item` ON `object`.`UID` = `obj_item`.`UID` WHERE `object`.`parent`=? && `obj_item`.`item_container`='equip';")) {
PreparedStatement preparedStatement = connection.prepareStatement("SELECT `obj_item`.*, `object`.`parent`, `object`.`type` FROM `object` INNER JOIN `obj_item` ON `object`.`UID` = `obj_item`.`UID` WHERE `object`.`parent`=? && `obj_item`.`container`='equip';")) {
preparedStatement.setLong(1, targetId);
ResultSet rs = preparedStatement.executeQuery();
@ -163,6 +177,49 @@ public class dbItemHandler extends dbHandlerBase { @@ -163,6 +177,49 @@ public class dbItemHandler extends dbHandlerBase {
return itemList;
}
public void LOAD_ITEM_TEMPLATES() {
HashMap<ItemType, Integer> templateTCountMap = new HashMap<>();
try (Connection connection = DbManager.getConnection();
PreparedStatement preparedStatement = connection.prepareStatement("SELECT * FROM `static_item_templates`;");
ResultSet rs = preparedStatement.executeQuery()) {
while (rs.next()) {
int templateID = rs.getInt("id");
JSONObject jsonObject = new JSONObject(rs.getString("template"));
ItemTemplate itemTemplate = new ItemTemplate(jsonObject);
itemTemplate.template_id = templateID;
ItemTemplate.templates.put(templateID, itemTemplate);
templateTCountMap.merge(itemTemplate.item_type, 1, Integer::sum);
}
Logger.info(templateTCountMap.toString());
} catch (Exception e) {
Logger.error(e);
}
}
public void LOAD_TEMPLATE_MODTABLES() {
try (Connection connection = DbManager.getConnection();
PreparedStatement preparedStatement = connection.prepareStatement("SELECT * FROM `static_vendor_items`;");
ResultSet rs = preparedStatement.executeQuery()) {
while (rs.next()) {
int templateID = rs.getInt("templateID");
int modTable = rs.getInt("modTable");
ItemTemplate template = ItemTemplate.templates.get(templateID);
template.modTable = modTable;
}
} catch (Exception e) {
Logger.error(e);
}
}
public Item GET_ITEM(final int itemUUID) {
Item item;
@ -242,7 +299,7 @@ public class dbItemHandler extends dbHandlerBase { @@ -242,7 +299,7 @@ public class dbItemHandler extends dbHandlerBase {
public boolean MOVE_GOLD(final Item from, final Item to, final int amt) {
try (Connection connection = DbManager.getConnection();
PreparedStatement preparedStatement = connection.prepareStatement("UPDATE `obj_item` SET `item_numberOfItems` = CASE WHEN `UID`=? THEN ? WHEN `UID`=? THEN ? END WHERE `UID` IN (?, ?);")) {
PreparedStatement preparedStatement = connection.prepareStatement("UPDATE `obj_item` SET `numberOfItems` = CASE WHEN `UID`=? THEN ? WHEN `UID`=? THEN ? END WHERE `UID` IN (?, ?);")) {
int newFromAmt = from.getNumOfItems() - amt;
int newToAmt = to.getNumOfItems() + amt;
@ -268,11 +325,11 @@ public class dbItemHandler extends dbHandlerBase { @@ -268,11 +325,11 @@ public class dbItemHandler extends dbHandlerBase {
for (Item item : inventory) {
if (item.getItemBase().getType().equals(ItemType.GOLD))
if (item.template.item_type.equals(ItemType.GOLD))
continue;
try (Connection connection = DbManager.getConnection();
PreparedStatement preparedStatement = connection.prepareStatement("UPDATE `obj_item` LEFT JOIN `object` ON `object`.`UID` = `obj_item`.`UID` SET `object`.`parent`=NULL, `obj_item`.`item_container`='none' WHERE `object`.`UID`=?;")) {
PreparedStatement preparedStatement = connection.prepareStatement("UPDATE `obj_item` LEFT JOIN `object` ON `object`.`UID` = `obj_item`.`UID` SET `object`.`parent`=NULL, `obj_item`.`container`='none' WHERE `object`.`UID`=?;")) {
preparedStatement.setLong(1, item.getObjectUUID());
worked = (preparedStatement.executeUpdate() > 0);
@ -288,12 +345,12 @@ public class dbItemHandler extends dbHandlerBase { @@ -288,12 +345,12 @@ public class dbItemHandler extends dbHandlerBase {
return worked;
}
public HashSet<Integer> GET_ITEMS_FOR_VENDOR(final int vendorID) {
public HashSet<Integer> GET_VENDOR_CAN_ROLL_LIST(final int vendorID) {
HashSet<Integer> itemSet = new HashSet<>();
try (Connection connection = DbManager.getConnection();
PreparedStatement preparedStatement = connection.prepareStatement("SELECT ID FROM static_itembase WHERE vendorType = ?")) {
PreparedStatement preparedStatement = connection.prepareStatement("SELECT templateID FROM static_vendor_items WHERE vendorType = ?")) {
preparedStatement.setInt(1, vendorID);
@ -311,8 +368,8 @@ public class dbItemHandler extends dbHandlerBase { @@ -311,8 +368,8 @@ public class dbItemHandler extends dbHandlerBase {
}
//Used to transfer a single item between owners or equip or vault or bank or inventory
public boolean UPDATE_OWNER(final Item item, int newOwnerID, boolean ownerNPC, boolean ownerPlayer,
boolean ownerAccount, ItemContainerType containerType, int slot) {
public boolean UPDATE_OWNER(final Item item, int newOwnerID,
ItemContainerType containerType, mbEnums.EquipSlotType slot) {
boolean worked = false;
@ -346,7 +403,12 @@ public class dbItemHandler extends dbHandlerBase { @@ -346,7 +403,12 @@ public class dbItemHandler extends dbHandlerBase {
preparedStatement.setString(3, "none"); //Shouldn't be here
break;
}
preparedStatement.setInt(4, slot);
if (slot.equals(mbEnums.EquipSlotType.NONE))
preparedStatement.setString(4, "");
else
preparedStatement.setString(4, slot.name());
ResultSet rs = preparedStatement.executeQuery();
if (rs.next())
@ -362,11 +424,11 @@ public class dbItemHandler extends dbHandlerBase { @@ -362,11 +424,11 @@ public class dbItemHandler extends dbHandlerBase {
public boolean SET_DURABILITY(final Item item, int value) {
try (Connection connection = DbManager.getConnection();
PreparedStatement preparedStatement = connection.prepareStatement("UPDATE `obj_item` SET `item_durabilityCurrent`=? WHERE `UID`=? AND `item_durabilityCurrent`=?")) {
PreparedStatement preparedStatement = connection.prepareStatement("UPDATE `obj_item` SET `combat_health_current`=? WHERE `UID`=? AND `combat_health_current`=?")) {
preparedStatement.setInt(1, value);
preparedStatement.setLong(2, item.getObjectUUID());
preparedStatement.setInt(3, item.getDurabilityCurrent());
preparedStatement.setInt(3, (short) item.combat_health_current);
return (preparedStatement.executeUpdate() > 0);
@ -379,7 +441,7 @@ public class dbItemHandler extends dbHandlerBase { @@ -379,7 +441,7 @@ public class dbItemHandler extends dbHandlerBase {
public boolean UPDATE_FORGE_TO_INVENTORY(final Item item) {
try (Connection connection = DbManager.getConnection();
PreparedStatement preparedStatement = connection.prepareStatement("UPDATE `obj_item` SET `item_container` = ? WHERE `UID` = ? AND `item_container` = 'forge';")) {
PreparedStatement preparedStatement = connection.prepareStatement("UPDATE `obj_item` SET `container` = ? WHERE `UID` = ? AND `container` = 'forge';")) {
preparedStatement.setString(1, "inventory");
preparedStatement.setLong(2, item.getObjectUUID());
@ -412,11 +474,11 @@ public class dbItemHandler extends dbHandlerBase { @@ -412,11 +474,11 @@ public class dbItemHandler extends dbHandlerBase {
*/
public boolean UPDATE_GOLD(final Item item, int newValue, int oldValue) {
if (!item.getItemBase().getType().equals(ItemType.GOLD))
if (!item.template.item_type.equals(ItemType.GOLD))
return false;
try (Connection connection = DbManager.getConnection();
PreparedStatement preparedStatement = connection.prepareStatement("UPDATE `obj_item` SET `item_numberOfItems`=? WHERE `UID`=?")) {
PreparedStatement preparedStatement = connection.prepareStatement("UPDATE `obj_item` SET `numberOfItems`=? WHERE `UID`=?")) {
preparedStatement.setInt(1, newValue);
preparedStatement.setLong(2, item.getObjectUUID());
@ -433,9 +495,9 @@ public class dbItemHandler extends dbHandlerBase { @@ -433,9 +495,9 @@ public class dbItemHandler extends dbHandlerBase {
public boolean UPDATE_REMAINING_CHARGES(final Item item) {
try (Connection connection = DbManager.getConnection();
PreparedStatement preparedStatement = connection.prepareStatement("UPDATE `obj_item` SET `item_chargesRemaining` = ? WHERE `UID` = ?")) {
PreparedStatement preparedStatement = connection.prepareStatement("UPDATE `obj_item` SET `chargesRemaining` = ? WHERE `UID` = ?")) {
preparedStatement.setInt(1, item.getChargesRemaining());
preparedStatement.setInt(1, (byte) item.chargesRemaining);
preparedStatement.setLong(2, item.getObjectUUID());
return (preparedStatement.executeUpdate() > 0);
@ -453,7 +515,7 @@ public class dbItemHandler extends dbHandlerBase { @@ -453,7 +515,7 @@ public class dbItemHandler extends dbHandlerBase {
public boolean ZERO_ITEM_STACK(Item item) {
try (Connection connection = DbManager.getConnection();
PreparedStatement preparedStatement = connection.prepareStatement("UPDATE `obj_item` SET `item_numberOfItems`=0 WHERE `UID` = ?")) {
PreparedStatement preparedStatement = connection.prepareStatement("UPDATE `obj_item` SET `numberOfItems`=0 WHERE `UID` = ?")) {
preparedStatement.setLong(1, item.getObjectUUID());
@ -468,9 +530,16 @@ public class dbItemHandler extends dbHandlerBase { @@ -468,9 +530,16 @@ public class dbItemHandler extends dbHandlerBase {
public boolean UPDATE_FLAGS(Item item) {
try (Connection connection = DbManager.getConnection();
PreparedStatement preparedStatement = connection.prepareStatement("UPDATE `obj_item` SET `item_flags`=? WHERE `UID` = ?")) {
PreparedStatement preparedStatement = connection.prepareStatement("UPDATE `obj_item` SET `flags`=? WHERE `UID` = ?")) {
String flagString = "";
for (mbEnums.ItemFlags itemflag : item.flags)
flagString += itemflag.toString() + ";";
flagString = flagString.replaceAll(";$", "");
preparedStatement.setInt(1, item.getFlags());
preparedStatement.setString(1, flagString);
preparedStatement.setLong(2, item.getObjectUUID());
return (preparedStatement.executeUpdate() > 0);
@ -483,8 +552,13 @@ public class dbItemHandler extends dbHandlerBase { @@ -483,8 +552,13 @@ public class dbItemHandler extends dbHandlerBase {
public boolean UPDATE_VALUE(Item item, int value) {
// Write 0 if we will not modify the value from template
if (value == item.template.item_value)
value = 0;
try (Connection connection = DbManager.getConnection();
PreparedStatement preparedStatement = connection.prepareStatement("UPDATE `obj_item` SET `item_value`=? WHERE `UID` = ?")) {
PreparedStatement preparedStatement = connection.prepareStatement("UPDATE `obj_item` SET `value`=? WHERE `UID` = ?")) {
preparedStatement.setInt(1, value);
preparedStatement.setLong(2, item.getObjectUUID());
@ -496,4 +570,25 @@ public class dbItemHandler extends dbHandlerBase { @@ -496,4 +570,25 @@ public class dbItemHandler extends dbHandlerBase {
return false;
}
}
public boolean UPDATE_EQUIP_SLOT(Item item) {
try (Connection connection = DbManager.getConnection();
PreparedStatement preparedStatement = connection.prepareStatement("UPDATE `obj_item` SET `equipSlot`=? WHERE `UID` = ?")) {
if (item.equipSlot.equals(mbEnums.EquipSlotType.NONE))
preparedStatement.setString(1, "");
else
preparedStatement.setString(1, item.equipSlot.name());
preparedStatement.setLong(2, item.getObjectUUID());
return (preparedStatement.executeUpdate() > 0);
} catch (SQLException e) {
Logger.error(e);
return false;
}
}
}

3
src/engine/db/handlers/dbKitHandler.java

@ -10,6 +10,7 @@ @@ -10,6 +10,7 @@
package engine.db.handlers;
import engine.gameManager.DbManager;
import engine.mbEnums;
import engine.objects.Kit;
import org.pmw.tinylog.Logger;
@ -23,7 +24,7 @@ public class dbKitHandler extends dbHandlerBase { @@ -23,7 +24,7 @@ public class dbKitHandler extends dbHandlerBase {
public dbKitHandler() {
this.localClass = Kit.class;
this.localObjectType = engine.Enum.GameObjectType.valueOf(this.localClass.getSimpleName());
this.localObjectType = mbEnums.GameObjectType.valueOf(this.localClass.getSimpleName());
}
public ArrayList<Kit> GET_ALL_KITS() {

3
src/engine/db/handlers/dbMenuHandler.java

@ -10,6 +10,7 @@ @@ -10,6 +10,7 @@
package engine.db.handlers;
import engine.gameManager.DbManager;
import engine.mbEnums;
import engine.objects.MenuOption;
import org.pmw.tinylog.Logger;
@ -23,7 +24,7 @@ public class dbMenuHandler extends dbHandlerBase { @@ -23,7 +24,7 @@ public class dbMenuHandler extends dbHandlerBase {
public dbMenuHandler() {
this.localClass = MenuOption.class;
this.localObjectType = engine.Enum.GameObjectType.valueOf(this.localClass.getSimpleName());
this.localObjectType = mbEnums.GameObjectType.valueOf(this.localClass.getSimpleName());
}
public ArrayList<MenuOption> GET_MENU_OPTIONS(final int id) {

9
src/engine/db/handlers/dbMineHandler.java

@ -8,11 +8,10 @@ @@ -8,11 +8,10 @@
package engine.db.handlers;
import engine.Enum;
import engine.gameManager.DbManager;
import engine.mbEnums;
import engine.objects.Mine;
import engine.objects.MineProduction;
import engine.objects.Resource;
import org.pmw.tinylog.Logger;
import java.sql.Connection;
@ -25,7 +24,7 @@ public class dbMineHandler extends dbHandlerBase { @@ -25,7 +24,7 @@ public class dbMineHandler extends dbHandlerBase {
public dbMineHandler() {
this.localClass = Mine.class;
this.localObjectType = Enum.GameObjectType.valueOf(this.localClass.getSimpleName());
this.localObjectType = mbEnums.GameObjectType.valueOf(this.localClass.getSimpleName());
}
public Mine GET_MINE(int id) {
@ -33,7 +32,7 @@ public class dbMineHandler extends dbHandlerBase { @@ -33,7 +32,7 @@ public class dbMineHandler extends dbHandlerBase {
if (id == 0)
return null;
Mine mine = (Mine) DbManager.getFromCache(Enum.GameObjectType.Mine, id);
Mine mine = (Mine) DbManager.getFromCache(mbEnums.GameObjectType.Mine, id);
if (mine != null)
return mine;
@ -84,7 +83,7 @@ public class dbMineHandler extends dbHandlerBase { @@ -84,7 +83,7 @@ public class dbMineHandler extends dbHandlerBase {
return false;
}
public boolean CHANGE_RESOURCE(Mine mine, Resource resource) {
public boolean CHANGE_RESOURCE(Mine mine, mbEnums.ResourceType resource) {
try (Connection connection = DbManager.getConnection();
PreparedStatement preparedStatement = connection.prepareStatement("UPDATE `obj_mine` SET `mine_resource`=? WHERE `UID`=?")) {

5
src/engine/db/handlers/dbMobBaseHandler.java

@ -9,8 +9,9 @@ @@ -9,8 +9,9 @@
package engine.db.handlers;
import engine.Enum.GameObjectType;
import engine.gameManager.DbManager;
import engine.mbEnums;
import engine.mbEnums.GameObjectType;
import engine.objects.MobBase;
import engine.objects.MobBaseEffects;
import engine.objects.MobBaseStats;
@ -26,7 +27,7 @@ public class dbMobBaseHandler extends dbHandlerBase { @@ -26,7 +27,7 @@ public class dbMobBaseHandler extends dbHandlerBase {
public dbMobBaseHandler() {
this.localClass = MobBase.class;
this.localObjectType = engine.Enum.GameObjectType.valueOf(this.localClass.getSimpleName());
this.localObjectType = mbEnums.GameObjectType.valueOf(this.localClass.getSimpleName());
}
public MobBase GET_MOBBASE(int id) {

95
src/engine/db/handlers/dbMobHandler.java

@ -10,8 +10,8 @@ @@ -10,8 +10,8 @@
package engine.db.handlers;
import engine.gameManager.DbManager;
import engine.mbEnums;
import engine.objects.Mob;
import engine.objects.Zone;
import org.joda.time.DateTime;
import org.pmw.tinylog.Logger;
@ -25,34 +25,30 @@ public class dbMobHandler extends dbHandlerBase { @@ -25,34 +25,30 @@ public class dbMobHandler extends dbHandlerBase {
public dbMobHandler() {
this.localClass = Mob.class;
this.localObjectType = engine.Enum.GameObjectType.valueOf(this.localClass.getSimpleName());
this.localObjectType = mbEnums.GameObjectType.valueOf(this.localClass.getSimpleName());
}
public Mob ADD_MOB(Mob toAdd) {
public Mob PERSIST(Mob toAdd) {
Mob mobile = null;
try (Connection connection = DbManager.getConnection();
PreparedStatement preparedStatement = connection.prepareStatement("CALL `mob_CREATE`(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?);")) {
preparedStatement.setLong(1, toAdd.getParentZoneID());
preparedStatement.setInt(2, toAdd.getMobBaseID());
preparedStatement.setInt(3, toAdd.getGuildUUID());
preparedStatement.setFloat(4, toAdd.getSpawnX());
preparedStatement.setFloat(5, toAdd.getSpawnY());
preparedStatement.setFloat(6, toAdd.getSpawnZ());
PreparedStatement preparedStatement = connection.prepareStatement("CALL `mob_CREATE`(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?);")) {
preparedStatement.setLong(1, toAdd.parentZoneUUID);
preparedStatement.setInt(2, toAdd.loadID);
preparedStatement.setInt(3, toAdd.guildUUID);
preparedStatement.setFloat(4, toAdd.bindLoc.x);
preparedStatement.setFloat(5, toAdd.bindLoc.y);
preparedStatement.setFloat(6, toAdd.bindLoc.z);
preparedStatement.setInt(7, 0);
preparedStatement.setFloat(8, toAdd.getSpawnRadius());
preparedStatement.setInt(9, toAdd.getTrueSpawnTime());
if (toAdd.getContract() != null)
preparedStatement.setInt(10, toAdd.getContract().getContractID());
else
preparedStatement.setInt(10, 0);
preparedStatement.setInt(11, toAdd.getBuildingID());
preparedStatement.setInt(12, toAdd.getLevel());
preparedStatement.setString(13, toAdd.getFirstName());
preparedStatement.setFloat(8, toAdd.spawnRadius);
preparedStatement.setInt(9, toAdd.spawnDelay);
preparedStatement.setInt(10, toAdd.contractUUID);
preparedStatement.setInt(11, toAdd.buildingUUID);
preparedStatement.setInt(12, toAdd.level);
preparedStatement.setString(13, toAdd.firstName);
preparedStatement.setString(14, toAdd.behaviourType.toString());
ResultSet rs = preparedStatement.executeQuery();
@ -69,6 +65,23 @@ public class dbMobHandler extends dbHandlerBase { @@ -69,6 +65,23 @@ public class dbMobHandler extends dbHandlerBase {
return mobile;
}
public ArrayList<Mob> GET_ALL_MOBS() {
ArrayList<Mob> mobileList = new ArrayList<>();
try (Connection connection = DbManager.getConnection();
PreparedStatement preparedStatement = connection.prepareStatement("SELECT `obj_mob`.*, `object`.`parent` FROM `object` INNER JOIN `obj_mob` ON `obj_mob`.`UID` = `object`.`UID` ORDER BY `object`.`UID` ASC;")) {
ResultSet rs = preparedStatement.executeQuery();
mobileList = getObjectsFromRs(rs, 1000);
} catch (SQLException e) {
Logger.error(e);
}
return mobileList;
}
public boolean updateUpgradeTime(Mob mob, DateTime upgradeDateTime) {
try (Connection connection = DbManager.getConnection();
@ -106,17 +119,17 @@ public class dbMobHandler extends dbHandlerBase { @@ -106,17 +119,17 @@ public class dbMobHandler extends dbHandlerBase {
return row_count;
}
public void LOAD_PATROL_POINTS(Mob captain) {
public void LOAD_GUARD_MINIONS(Mob guardCaptain) {
try (Connection connection = DbManager.getConnection();
PreparedStatement preparedStatement = connection.prepareStatement("SELECT * FROM `dyn_guards` WHERE `captainUID` = ?")) {
preparedStatement.setInt(1, captain.getObjectUUID());
preparedStatement.setInt(1, guardCaptain.getObjectUUID());
ResultSet rs = preparedStatement.executeQuery();
while (rs.next()) {
String name = rs.getString("name");
Mob toCreate = Mob.createGuardMob(captain, captain.getGuild(), captain.getParentZone(), captain.building.getLoc(), captain.getLevel(), name);
String minionName = rs.getString("minionName");
Mob toCreate = Mob.createGuardMinion(guardCaptain, guardCaptain.getLevel(), minionName);
if (toCreate == null)
return;
@ -131,15 +144,13 @@ public class dbMobHandler extends dbHandlerBase { @@ -131,15 +144,13 @@ public class dbMobHandler extends dbHandlerBase {
}
}
public boolean ADD_TO_GUARDS(final long captainUID, final int mobBaseID, final String name, final int slot) {
public boolean ADD_GUARD_MINION(final long captainUID, final String minionName) {
try (Connection connection = DbManager.getConnection();
PreparedStatement preparedStatement = connection.prepareStatement("INSERT INTO `dyn_guards` (`captainUID`, `mobBaseID`,`name`, `slot`) VALUES (?,?,?,?)")) {
PreparedStatement preparedStatement = connection.prepareStatement("INSERT INTO `dyn_guards` (`captainUID`, `minionName`) VALUES (?,?)")) {
preparedStatement.setLong(1, captainUID);
preparedStatement.setInt(2, mobBaseID);
preparedStatement.setString(3, name);
preparedStatement.setInt(4, slot);
preparedStatement.setString(2, minionName);
return (preparedStatement.executeUpdate() > 0);
@ -149,14 +160,13 @@ public class dbMobHandler extends dbHandlerBase { @@ -149,14 +160,13 @@ public class dbMobHandler extends dbHandlerBase {
}
}
public boolean REMOVE_FROM_GUARDS(final long captainUID, final int mobBaseID, final int slot) {
public boolean REMOVE_GUARD_MINION(final long captainUID, final String minionName) {
try (Connection connection = DbManager.getConnection();
PreparedStatement preparedStatement = connection.prepareStatement("DELETE FROM `dyn_guards` WHERE `captainUID`=? AND `mobBaseID`=? AND `slot` =?")) {
PreparedStatement preparedStatement = connection.prepareStatement("DELETE FROM `dyn_guards` WHERE `captainUID`=? AND `minionName`=? LIMIT 1;")) {
preparedStatement.setLong(1, captainUID);
preparedStatement.setInt(2, mobBaseID);
preparedStatement.setInt(3, slot);
preparedStatement.setString(2, minionName);
return (preparedStatement.executeUpdate() > 0);
@ -166,24 +176,19 @@ public class dbMobHandler extends dbHandlerBase { @@ -166,24 +176,19 @@ public class dbMobHandler extends dbHandlerBase {
}
}
public ArrayList<Mob> GET_ALL_MOBS_FOR_ZONE(Zone zone) {
ArrayList<Mob> mobileList = new ArrayList<>();
public boolean REMOVE_ALL_MINIONS(final long captainUID) {
try (Connection connection = DbManager.getConnection();
PreparedStatement preparedStatement = connection.prepareStatement("SELECT `obj_mob`.*, `object`.`parent` FROM `object` INNER JOIN `obj_mob` ON `obj_mob`.`UID` = `object`.`UID` WHERE `object`.`parent` = ?;")) {
PreparedStatement preparedStatement = connection.prepareStatement("DELETE FROM `dyn_guards` WHERE `captainUID`=?;")) {
preparedStatement.setLong(1, zone.getObjectUUID());
preparedStatement.setLong(1, captainUID);
ResultSet rs = preparedStatement.executeQuery();
mobileList = getObjectsFromRs(rs, 1000);
return (preparedStatement.executeUpdate() > 0);
} catch (SQLException e) {
Logger.error(e);
return false;
}
return mobileList;
}
public Mob GET_MOB(final int objectUUID) {

180
src/engine/db/handlers/dbNPCHandler.java

@ -9,13 +9,12 @@ @@ -9,13 +9,12 @@
package engine.db.handlers;
import engine.Enum.ProfitType;
import engine.gameManager.DbManager;
import engine.math.Vector3fImmutable;
import engine.mbEnums;
import engine.mbEnums.ProfitType;
import engine.objects.NPC;
import engine.objects.NPCProfits;
import engine.objects.ProducedItem;
import engine.objects.Zone;
import org.joda.time.DateTime;
import org.pmw.tinylog.Logger;
@ -24,12 +23,52 @@ import java.sql.PreparedStatement; @@ -24,12 +23,52 @@ import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.HashMap;
public class dbNPCHandler extends dbHandlerBase {
public dbNPCHandler() {
this.localClass = NPC.class;
this.localObjectType = engine.Enum.GameObjectType.valueOf(this.localClass.getSimpleName());
this.localObjectType = mbEnums.GameObjectType.valueOf(this.localClass.getSimpleName());
}
public static HashMap<Integer, ArrayList<Integer>> LOAD_RUNES_FOR_NPC_AND_MOBS() {
HashMap<Integer, ArrayList<Integer>> runeSets = new HashMap<>();
int runeSetID;
int runeBaseID;
int recordsRead = 0;
try (Connection connection = DbManager.getConnection();
PreparedStatement preparedStatement = connection.prepareStatement("SELECT * FROM static_npc_runeSet")) {
ResultSet rs = preparedStatement.executeQuery();
while (rs.next()) {
recordsRead++;
runeSetID = rs.getInt("runeSet");
runeBaseID = rs.getInt("runeBase");
if (runeSets.get(runeSetID) == null) {
ArrayList<Integer> runeList = new ArrayList<>();
runeList.add(runeBaseID);
runeSets.put(runeSetID, runeList);
} else {
ArrayList<Integer> runeList = runeSets.get(runeSetID);
runeList.add(runeSetID);
runeSets.put(runeSetID, runeList);
}
}
} catch (SQLException e) {
Logger.error(e);
return runeSets;
}
Logger.info("read: " + recordsRead + " cached: " + runeSets.size());
return runeSets;
}
public NPC PERSIST(NPC toAdd) {
@ -94,14 +133,12 @@ public class dbNPCHandler extends dbHandlerBase { @@ -94,14 +133,12 @@ public class dbNPCHandler extends dbHandlerBase {
return row_count;
}
public ArrayList<NPC> GET_ALL_NPCS_FOR_ZONE(Zone zone) {
public ArrayList<NPC> GET_ALL_NPCS() {
ArrayList<NPC> npcList = new ArrayList<>();
try (Connection connection = DbManager.getConnection();
PreparedStatement preparedStatement = connection.prepareStatement("SELECT `obj_npc`.*, `object`.`parent` FROM `object` INNER JOIN `obj_npc` ON `obj_npc`.`UID` = `object`.`UID` WHERE `object`.`parent` = ?;")) {
preparedStatement.setLong(1, zone.getObjectUUID());
PreparedStatement preparedStatement = connection.prepareStatement("SELECT `obj_npc`.*, `object`.`parent` FROM `object` INNER JOIN `obj_npc` ON `obj_npc`.`UID` = `object`.`UID` ORDER BY `object`.`UID` ASC;")) {
ResultSet rs = preparedStatement.executeQuery();
npcList = getObjectsFromRs(rs, 1000);
@ -273,6 +310,22 @@ public class dbNPCHandler extends dbHandlerBase { @@ -273,6 +310,22 @@ public class dbNPCHandler extends dbHandlerBase {
}
}
public boolean UPDATE_RACE(NPC npc, int value) {
try (Connection connection = DbManager.getConnection();
PreparedStatement preparedStatement = connection.prepareStatement("UPDATE `obj_npc` SET `npc_raceID`=? WHERE `UID`=?")) {
preparedStatement.setInt(1, value);
preparedStatement.setLong(2, npc.getObjectUUID());
return (preparedStatement.executeUpdate() > 0);
} catch (SQLException e) {
Logger.error(e);
return false;
}
}
public void LOAD_PIRATE_NAMES() {
String pirateName;
@ -308,117 +361,6 @@ public class dbNPCHandler extends dbHandlerBase { @@ -308,117 +361,6 @@ public class dbNPCHandler extends dbHandlerBase {
+ NPC._pirateNames.size() + " mobBases");
}
public boolean ADD_TO_PRODUCTION_LIST(final long ID, final long npcUID, final long itemBaseID, DateTime dateTime, String prefix, String suffix, String name, boolean isRandom, int playerID) {
try (Connection connection = DbManager.getConnection();
PreparedStatement preparedStatement = connection.prepareStatement("INSERT INTO `dyn_npc_production` (`ID`,`npcUID`, `itemBaseID`,`dateToUpgrade`, `isRandom`, `prefix`, `suffix`, `name`,`playerID`) VALUES (?,?,?,?,?,?,?,?,?)")) {
preparedStatement.setLong(1, ID);
preparedStatement.setLong(2, npcUID);
preparedStatement.setLong(3, itemBaseID);
preparedStatement.setTimestamp(4, new java.sql.Timestamp(dateTime.getMillis()));
preparedStatement.setBoolean(5, isRandom);
preparedStatement.setString(6, prefix);
preparedStatement.setString(7, suffix);
preparedStatement.setString(8, name);
preparedStatement.setInt(9, playerID);
return (preparedStatement.executeUpdate() > 0);
} catch (SQLException e) {
Logger.error(e);
return false;
}
}
public boolean REMOVE_FROM_PRODUCTION_LIST(final long ID, final long npcUID) {
try (Connection connection = DbManager.getConnection();
PreparedStatement preparedStatement = connection.prepareStatement("DELETE FROM `dyn_npc_production` WHERE `ID`=? AND `npcUID`=?;")) {
preparedStatement.setLong(1, ID);
preparedStatement.setLong(2, npcUID);
return (preparedStatement.executeUpdate() > 0);
} catch (SQLException e) {
Logger.error(e);
return false;
}
}
public boolean UPDATE_ITEM_TO_INVENTORY(final long ID, final long npcUID) {
try (Connection connection = DbManager.getConnection();
PreparedStatement preparedStatement = connection.prepareStatement("UPDATE `dyn_npc_production` SET `inForge`=? WHERE `ID`=? AND `npcUID`=?;")) {
preparedStatement.setByte(1, (byte) 0);
preparedStatement.setLong(2, ID);
preparedStatement.setLong(3, npcUID);
return (preparedStatement.executeUpdate() > 0);
} catch (SQLException e) {
Logger.error(e);
return false;
}
}
public boolean UPDATE_ITEM_PRICE(final long ID, final long npcUID, int value) {
try (Connection connection = DbManager.getConnection();
PreparedStatement preparedStatement = connection.prepareStatement("UPDATE `dyn_npc_production` SET `value`=? WHERE `ID`=? AND `npcUID`=?;")) {
preparedStatement.setInt(1, value);
preparedStatement.setLong(2, ID);
preparedStatement.setLong(3, npcUID);
return (preparedStatement.executeUpdate() > 0);
} catch (SQLException e) {
Logger.error(e);
return false;
}
}
public boolean UPDATE_ITEM_ID(final long ID, final long npcUID, final long value) {
try (Connection connection = DbManager.getConnection();
PreparedStatement preparedStatement = connection.prepareStatement("UPDATE `dyn_npc_production` SET `ID`=? WHERE `ID`=? AND `npcUID`=? LIMIT 1;")) {
preparedStatement.setLong(1, value);
preparedStatement.setLong(2, ID);
preparedStatement.setLong(3, npcUID);
return (preparedStatement.executeUpdate() > 0);
} catch (SQLException e) {
Logger.error(e);
return false;
}
}
public void LOAD_ALL_ITEMS_TO_PRODUCE(NPC npc) {
if (npc == null)
return;
try (Connection connection = DbManager.getConnection();
PreparedStatement preparedStatement = connection.prepareStatement("SELECT * FROM `dyn_npc_production` WHERE `npcUID` = ?")) {
preparedStatement.setInt(1, npc.getObjectUUID());
ResultSet rs = preparedStatement.executeQuery();
while (rs.next()) {
ProducedItem producedItem = new ProducedItem(rs);
npc.forgedItems.add(producedItem);
}
} catch (SQLException e) {
Logger.error(e);
}
}
public boolean UPDATE_PROFITS(NPC npc, ProfitType profitType, float value) {
try (Connection connection = DbManager.getConnection();

6
src/engine/db/handlers/dbPetitionHandler.java

@ -9,8 +9,8 @@ @@ -9,8 +9,8 @@
package engine.db.handlers;
import engine.Enum;
import engine.gameManager.DbManager;
import engine.mbEnums;
import engine.objects.Petition;
import org.pmw.tinylog.Logger;
@ -58,8 +58,8 @@ public class dbPetitionHandler extends dbHandlerBase { @@ -58,8 +58,8 @@ public class dbPetitionHandler extends dbHandlerBase {
" VALUES (?,?,?,?,?,?,?,?,?);")) {
preparedStatement.setTimestamp(1, new java.sql.Timestamp(System.currentTimeMillis()));
preparedStatement.setString(2, Enum.PetitionType.values()[petition.primaryType].name());
preparedStatement.setString(3, Enum.PetitionSubType.values()[petition.subType].name());
preparedStatement.setString(2, mbEnums.PetitionType.values()[petition.primaryType].name());
preparedStatement.setString(3, mbEnums.PetitionSubType.values()[petition.subType].name());
preparedStatement.setInt(4, petition.reportAccount.getObjectUUID());
preparedStatement.setString(5, petition.reportAccount.getUname());
preparedStatement.setInt(6, petition.reportPlayer.getObjectUUID());

10
src/engine/db/handlers/dbPlayerCharacterHandler.java

@ -9,8 +9,8 @@ @@ -9,8 +9,8 @@
package engine.db.handlers;
import engine.Enum;
import engine.gameManager.DbManager;
import engine.mbEnums;
import engine.objects.AbstractWorldObject;
import engine.objects.Heraldry;
import engine.objects.PlayerCharacter;
@ -29,7 +29,7 @@ public class dbPlayerCharacterHandler extends dbHandlerBase { @@ -29,7 +29,7 @@ public class dbPlayerCharacterHandler extends dbHandlerBase {
public dbPlayerCharacterHandler() {
this.localClass = PlayerCharacter.class;
this.localObjectType = Enum.GameObjectType.valueOf(this.localClass.getSimpleName());
this.localObjectType = mbEnums.GameObjectType.valueOf(this.localClass.getSimpleName());
}
public PlayerCharacter ADD_PLAYER_CHARACTER(final PlayerCharacter toAdd) {
@ -45,8 +45,8 @@ public class dbPlayerCharacterHandler extends dbHandlerBase { @@ -45,8 +45,8 @@ public class dbPlayerCharacterHandler extends dbHandlerBase {
preparedStatement.setLong(1, toAdd.getAccount().getObjectUUID());
preparedStatement.setString(2, toAdd.getFirstName());
preparedStatement.setString(3, toAdd.getLastName());
preparedStatement.setInt(4, toAdd.getRace().getRaceRuneID());
preparedStatement.setInt(5, toAdd.getBaseClass().getObjectUUID());
preparedStatement.setInt(4, toAdd.race.getRaceRuneID());
preparedStatement.setInt(5, toAdd.baseClass.getObjectUUID());
preparedStatement.setInt(6, toAdd.getStrMod());
preparedStatement.setInt(7, toAdd.getDexMod());
preparedStatement.setInt(8, toAdd.getConMod());
@ -176,7 +176,7 @@ public class dbPlayerCharacterHandler extends dbHandlerBase { @@ -176,7 +176,7 @@ public class dbPlayerCharacterHandler extends dbHandlerBase {
if (objectUUID == 0)
return null;
PlayerCharacter playerCharacter = (PlayerCharacter) DbManager.getFromCache(Enum.GameObjectType.PlayerCharacter, objectUUID);
PlayerCharacter playerCharacter = (PlayerCharacter) DbManager.getFromCache(mbEnums.GameObjectType.PlayerCharacter, objectUUID);
if (playerCharacter != null)
return playerCharacter;

76
src/engine/db/handlers/dbPowerHandler.java

@ -9,62 +9,57 @@ @@ -9,62 +9,57 @@
package engine.db.handlers;
import engine.Enum;
import engine.gameManager.DbManager;
import engine.gameManager.PowersManager;
import engine.mbEnums;
import engine.objects.Mob;
import engine.objects.PreparedStatementShared;
import engine.powers.EffectsBase;
import engine.powers.MobPowerEntry;
import org.pmw.tinylog.Logger;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
public class dbPowerHandler extends dbHandlerBase {
public dbPowerHandler() {
this.localClass = Mob.class;
this.localObjectType = engine.Enum.GameObjectType.valueOf(this.localClass.getSimpleName());
this.localObjectType = mbEnums.GameObjectType.valueOf(this.localClass.getSimpleName());
}
public static void addAllSourceTypes() {
PreparedStatementShared ps = null;
try {
ps = new PreparedStatementShared("SELECT * FROM static_power_sourcetype");
ResultSet rs = ps.executeQuery();
try (Connection connection = DbManager.getConnection();
PreparedStatement preparedStatement = connection.prepareStatement("SELECT * FROM static_power_sourcetype")) {
ResultSet rs = preparedStatement.executeQuery();
String IDString, source;
while (rs.next()) {
IDString = rs.getString("IDString");
int token = DbManager.hasher.SBStringHash(IDString);
source = rs.getString("source").replace("-", "").trim();
Enum.EffectSourceType effectSourceType = Enum.EffectSourceType.GetEffectSourceType(source);
mbEnums.EffectSourceType effectSourceType = mbEnums.EffectSourceType.GetEffectSourceType(source);
if (EffectsBase.effectSourceTypeMap.containsKey(token) == false)
EffectsBase.effectSourceTypeMap.put(token, new HashSet<>());
EffectsBase.effectSourceTypeMap.get(token).add(effectSourceType);
}
rs.close();
} catch (Exception e) {
Logger.error(e);
} finally {
ps.release();
}
}
public static void addAllAnimationOverrides() {
PreparedStatementShared ps = null;
try {
ps = new PreparedStatementShared("SELECT * FROM static_power_animation_override");
ResultSet rs = ps.executeQuery();
try (Connection connection = DbManager.getConnection();
PreparedStatement preparedStatement = connection.prepareStatement("SELECT * FROM static_power_animation_override")) {
ResultSet rs = preparedStatement.executeQuery();
String IDString;
int animation;
while (rs.next()) {
@ -78,51 +73,10 @@ public class dbPowerHandler extends dbHandlerBase { @@ -78,51 +73,10 @@ public class dbPowerHandler extends dbHandlerBase {
PowersManager.AnimationOverrides.put(IDString, animation);
}
rs.close();
} catch (Exception e) {
Logger.error(e);
} finally {
ps.release();
}
}
public static HashMap<Integer, ArrayList<MobPowerEntry>> LOAD_MOB_POWERS() {
HashMap<Integer, ArrayList<MobPowerEntry>> mobPowers = new HashMap<>();
MobPowerEntry mobPowerEntry;
int mobbaseID;
int recordsRead = 0;
try (Connection connection = DbManager.getConnection();
PreparedStatement preparedStatement = connection.prepareStatement("SELECT * FROM static_npc_mobbase_powers ORDER BY `id` ASC;")) {
ResultSet rs = preparedStatement.executeQuery();
while (rs.next()) {
recordsRead++;
mobbaseID = rs.getInt("mobbaseUUID");
mobPowerEntry = new MobPowerEntry(rs);
if (mobPowers.get(mobbaseID) == null) {
ArrayList<MobPowerEntry> powerList = new ArrayList<>();
powerList.add(mobPowerEntry);
mobPowers.put(mobbaseID, powerList);
} else {
ArrayList<MobPowerEntry> powerList = mobPowers.get(mobbaseID);
powerList.add(mobPowerEntry);
mobPowers.put(mobbaseID, powerList);
}
}
} catch (SQLException e) {
Logger.error(e);
return mobPowers;
}
Logger.info("read: " + recordsRead + " cached: " + mobPowers.size());
return mobPowers;
}
}

3
src/engine/db/handlers/dbPromotionClassHandler.java

@ -10,6 +10,7 @@ @@ -10,6 +10,7 @@
package engine.db.handlers;
import engine.gameManager.DbManager;
import engine.mbEnums;
import engine.objects.PromotionClass;
import org.pmw.tinylog.Logger;
@ -23,7 +24,7 @@ public class dbPromotionClassHandler extends dbHandlerBase { @@ -23,7 +24,7 @@ public class dbPromotionClassHandler extends dbHandlerBase {
public dbPromotionClassHandler() {
this.localClass = PromotionClass.class;
this.localObjectType = engine.Enum.GameObjectType.valueOf(this.localClass.getSimpleName());
this.localObjectType = mbEnums.GameObjectType.valueOf(this.localClass.getSimpleName());
}
public ArrayList<Integer> GET_ALLOWED_RUNES(final PromotionClass pc) {

3
src/engine/db/handlers/dbRuneBaseAttributeHandler.java

@ -10,6 +10,7 @@ @@ -10,6 +10,7 @@
package engine.db.handlers;
import engine.gameManager.DbManager;
import engine.mbEnums;
import engine.objects.RuneBaseAttribute;
import org.pmw.tinylog.Logger;
@ -23,7 +24,7 @@ public class dbRuneBaseAttributeHandler extends dbHandlerBase { @@ -23,7 +24,7 @@ public class dbRuneBaseAttributeHandler extends dbHandlerBase {
public dbRuneBaseAttributeHandler() {
this.localClass = RuneBaseAttribute.class;
this.localObjectType = engine.Enum.GameObjectType.valueOf(this.localClass.getSimpleName());
this.localObjectType = mbEnums.GameObjectType.valueOf(this.localClass.getSimpleName());
}
public ArrayList<RuneBaseAttribute> GET_ATTRIBUTES_FOR_RUNEBASE() {

5
src/engine/db/handlers/dbRuneBaseEffectHandler.java

@ -9,8 +9,9 @@ @@ -9,8 +9,9 @@
package engine.db.handlers;
import engine.Enum.GameObjectType;
import engine.gameManager.DbManager;
import engine.mbEnums;
import engine.mbEnums.GameObjectType;
import engine.objects.AbstractGameObject;
import engine.objects.RuneBaseEffect;
import org.pmw.tinylog.Logger;
@ -26,7 +27,7 @@ public class dbRuneBaseEffectHandler extends dbHandlerBase { @@ -26,7 +27,7 @@ public class dbRuneBaseEffectHandler extends dbHandlerBase {
public dbRuneBaseEffectHandler() {
this.localClass = RuneBaseEffect.class;
this.localObjectType = engine.Enum.GameObjectType.valueOf(this.localClass.getSimpleName());
this.localObjectType = mbEnums.GameObjectType.valueOf(this.localClass.getSimpleName());
}
public ArrayList<RuneBaseEffect> GET_EFFECTS_FOR_RUNEBASE(int id) {

83
src/engine/db/handlers/dbRuneBaseHandler.java

@ -10,7 +10,10 @@ @@ -10,7 +10,10 @@
package engine.db.handlers;
import engine.gameManager.DbManager;
import engine.mbEnums;
import engine.objects.RuneBase;
import engine.powers.RunePowerEntry;
import engine.powers.RuneSkillAdjustEntry;
import org.pmw.tinylog.Logger;
import java.sql.Connection;
@ -24,7 +27,85 @@ public class dbRuneBaseHandler extends dbHandlerBase { @@ -24,7 +27,85 @@ public class dbRuneBaseHandler extends dbHandlerBase {
public dbRuneBaseHandler() {
this.localClass = RuneBase.class;
this.localObjectType = engine.Enum.GameObjectType.valueOf(this.localClass.getSimpleName());
this.localObjectType = mbEnums.GameObjectType.valueOf(this.localClass.getSimpleName());
}
public static HashMap<Integer, ArrayList<RunePowerEntry>> LOAD_RUNE_POWERS() {
HashMap<Integer, ArrayList<RunePowerEntry>> mobPowers = new HashMap<>();
RunePowerEntry runePowerEntry;
int rune_id;
int recordsRead = 0;
try (Connection connection = DbManager.getConnection();
PreparedStatement preparedStatement = connection.prepareStatement("SELECT * FROM static_rune_powers")) {
ResultSet rs = preparedStatement.executeQuery();
while (rs.next()) {
recordsRead++;
rune_id = rs.getInt("rune_id");
runePowerEntry = new RunePowerEntry(rs);
if (mobPowers.get(rune_id) == null) {
ArrayList<RunePowerEntry> runePowerList = new ArrayList<>();
runePowerList.add(runePowerEntry);
mobPowers.put(rune_id, runePowerList);
} else {
ArrayList<RunePowerEntry> powerList = mobPowers.get(rune_id);
powerList.add(runePowerEntry);
mobPowers.put(rune_id, powerList);
}
}
} catch (SQLException e) {
Logger.error(e);
return mobPowers;
}
Logger.info("read: " + recordsRead + " cached: " + mobPowers.size());
return mobPowers;
}
public static HashMap<Integer, ArrayList<RuneSkillAdjustEntry>> LOAD_RUNE_SKILL_ADJUSTS() {
HashMap<Integer, ArrayList<RuneSkillAdjustEntry>> runeSkillAdjusts = new HashMap<>();
RuneSkillAdjustEntry runeSkillAdjustEntry;
int rune_id;
int recordsRead = 0;
try (Connection connection = DbManager.getConnection();
PreparedStatement preparedStatement = connection.prepareStatement("SELECT * FROM static_rune_skill_adjusts")) {
ResultSet rs = preparedStatement.executeQuery();
while (rs.next()) {
recordsRead++;
rune_id = rs.getInt("rune_id");
runeSkillAdjustEntry = new RuneSkillAdjustEntry(rs);
if (runeSkillAdjusts.get(rune_id) == null) {
ArrayList<RuneSkillAdjustEntry> skillAdjustList = new ArrayList<>();
skillAdjustList.add(runeSkillAdjustEntry);
runeSkillAdjusts.put(rune_id, skillAdjustList);
} else {
ArrayList<RuneSkillAdjustEntry> powerList = runeSkillAdjusts.get(rune_id);
powerList.add(runeSkillAdjustEntry);
runeSkillAdjusts.put(rune_id, powerList);
}
}
} catch (SQLException e) {
Logger.error(e);
return runeSkillAdjusts;
}
Logger.info("read: " + recordsRead + " cached: " + runeSkillAdjusts.size());
return runeSkillAdjusts;
}
public void GET_RUNE_REQS(final RuneBase rb) {

8
src/engine/db/handlers/dbRunegateHandler.java

@ -9,8 +9,8 @@ @@ -9,8 +9,8 @@
package engine.db.handlers;
import engine.Enum;
import engine.gameManager.DbManager;
import engine.mbEnums;
import engine.objects.Building;
import engine.objects.Portal;
import org.pmw.tinylog.Logger;
@ -49,7 +49,7 @@ public class dbRunegateHandler extends dbHandlerBase { @@ -49,7 +49,7 @@ public class dbRunegateHandler extends dbHandlerBase {
public ArrayList<Portal> GET_PORTAL_LIST(int gateUID) {
ArrayList<Portal> portalList = new ArrayList<>();
Building sourceBuilding = (Building) DbManager.getObject(Enum.GameObjectType.Building, gateUID);
Building sourceBuilding = (Building) DbManager.getObject(mbEnums.GameObjectType.Building, gateUID);
try (Connection connection = DbManager.getConnection();
PreparedStatement preparedStatement = connection.prepareStatement("SELECT * FROM `static_runegate_portals` WHERE `sourceBuilding` = ?;")) {
@ -60,8 +60,8 @@ public class dbRunegateHandler extends dbHandlerBase { @@ -60,8 +60,8 @@ public class dbRunegateHandler extends dbHandlerBase {
while (rs.next()) {
int targetBuildingID = rs.getInt("targetBuilding");
Building targetBuilding = (Building) DbManager.getObject(Enum.GameObjectType.Building, targetBuildingID);
Enum.PortalType portalType = Enum.PortalType.valueOf(rs.getString("portalType"));
Building targetBuilding = (Building) DbManager.getObject(mbEnums.GameObjectType.Building, targetBuildingID);
mbEnums.PortalType portalType = mbEnums.PortalType.valueOf(rs.getString("portalType"));
Portal portal = new Portal(sourceBuilding, portalType, targetBuilding);
portalList.add(portal);
}

5
src/engine/db/handlers/dbShrineHandler.java

@ -9,9 +9,10 @@ @@ -9,9 +9,10 @@
package engine.db.handlers;
import engine.Enum.ProtectionState;
import engine.gameManager.DbManager;
import engine.math.Vector3fImmutable;
import engine.mbEnums;
import engine.mbEnums.ProtectionState;
import engine.objects.AbstractGameObject;
import engine.objects.Building;
import engine.objects.Shrine;
@ -28,7 +29,7 @@ public class dbShrineHandler extends dbHandlerBase { @@ -28,7 +29,7 @@ public class dbShrineHandler extends dbHandlerBase {
public dbShrineHandler() {
this.localClass = Shrine.class;
this.localObjectType = engine.Enum.GameObjectType.valueOf(this.localClass.getSimpleName());
this.localObjectType = mbEnums.GameObjectType.valueOf(this.localClass.getSimpleName());
}
public static void addObject(ArrayList<AbstractGameObject> list, ResultSet rs) throws SQLException {

6
src/engine/db/handlers/dbSkillBaseHandler.java

@ -9,9 +9,9 @@ @@ -9,9 +9,9 @@
package engine.db.handlers;
import engine.Enum;
import engine.Enum.GameObjectType;
import engine.gameManager.DbManager;
import engine.mbEnums;
import engine.mbEnums.GameObjectType;
import engine.objects.MaxSkills;
import engine.objects.SkillsBase;
import org.pmw.tinylog.Logger;
@ -27,7 +27,7 @@ public class dbSkillBaseHandler extends dbHandlerBase { @@ -27,7 +27,7 @@ public class dbSkillBaseHandler extends dbHandlerBase {
public dbSkillBaseHandler() {
this.localClass = SkillsBase.class;
this.localObjectType = Enum.GameObjectType.valueOf(this.localClass.getSimpleName());
this.localObjectType = mbEnums.GameObjectType.valueOf(this.localClass.getSimpleName());
}
public SkillsBase GET_BASE(final int objectUUID) {

3
src/engine/db/handlers/dbSkillReqHandler.java

@ -10,6 +10,7 @@ @@ -10,6 +10,7 @@
package engine.db.handlers;
import engine.gameManager.DbManager;
import engine.mbEnums;
import engine.objects.SkillReq;
import engine.powers.PowersBase;
import org.pmw.tinylog.Logger;
@ -25,7 +26,7 @@ public class dbSkillReqHandler extends dbHandlerBase { @@ -25,7 +26,7 @@ public class dbSkillReqHandler extends dbHandlerBase {
public dbSkillReqHandler() {
this.localClass = SkillReq.class;
this.localObjectType = engine.Enum.GameObjectType.valueOf(this.localClass.getSimpleName());
this.localObjectType = mbEnums.GameObjectType.valueOf(this.localClass.getSimpleName());
}
public static ArrayList<PowersBase> getAllPowersBase() {

6
src/engine/db/handlers/dbVendorDialogHandler.java

@ -9,8 +9,8 @@ @@ -9,8 +9,8 @@
package engine.db.handlers;
import engine.Enum;
import engine.gameManager.DbManager;
import engine.mbEnums;
import engine.objects.VendorDialog;
import org.pmw.tinylog.Logger;
@ -23,12 +23,12 @@ public class dbVendorDialogHandler extends dbHandlerBase { @@ -23,12 +23,12 @@ public class dbVendorDialogHandler extends dbHandlerBase {
public dbVendorDialogHandler() {
this.localClass = VendorDialog.class;
this.localObjectType = Enum.GameObjectType.valueOf(this.localClass.getSimpleName());
this.localObjectType = mbEnums.GameObjectType.valueOf(this.localClass.getSimpleName());
}
public VendorDialog GET_VENDORDIALOG(final int objectUUID) {
VendorDialog vendorDialog = (VendorDialog) DbManager.getFromCache(Enum.GameObjectType.VendorDialog, objectUUID);
VendorDialog vendorDialog = (VendorDialog) DbManager.getFromCache(mbEnums.GameObjectType.VendorDialog, objectUUID);
if (vendorDialog != null)
return vendorDialog;

523
src/engine/db/handlers/dbWarehouseHandler.java

@ -9,14 +9,20 @@ @@ -9,14 +9,20 @@
package engine.db.handlers;
import engine.Enum.GameObjectType;
import engine.Enum.ProtectionState;
import engine.Enum.TransactionType;
import engine.gameManager.DbManager;
import engine.math.Vector3fImmutable;
import engine.objects.*;
import engine.gameManager.ForgeManager;
import engine.loot.WorkOrder;
import engine.mbEnums;
import engine.mbEnums.GameObjectType;
import engine.mbEnums.TransactionType;
import engine.objects.Building;
import engine.objects.City;
import engine.objects.Transaction;
import engine.objects.Warehouse;
import engine.server.MBServerStatics;
import org.joda.time.DateTime;
import org.json.JSONArray;
import org.json.JSONObject;
import org.pmw.tinylog.Logger;
import java.sql.Connection;
@ -31,261 +37,21 @@ public class dbWarehouseHandler extends dbHandlerBase { @@ -31,261 +37,21 @@ public class dbWarehouseHandler extends dbHandlerBase {
private static final ConcurrentHashMap<Integer, String> columns = new ConcurrentHashMap<>(MBServerStatics.CHM_INIT_CAP, MBServerStatics.CHM_LOAD, MBServerStatics.CHM_THREAD_LOW);
public dbWarehouseHandler() {
this.localClass = Warehouse.class;
this.localObjectType = engine.Enum.GameObjectType.valueOf(this.localClass.getSimpleName());
}
public static void addObject(ArrayList<AbstractGameObject> list, ResultSet rs) throws SQLException {
String type = rs.getString("type");
switch (type) {
case "building":
Building building = new Building(rs);
DbManager.addToCache(building);
list.add(building);
break;
case "warehouse":
Warehouse warehouse = new Warehouse(rs);
DbManager.addToCache(warehouse);
list.add(warehouse);
break;
}
}
public ArrayList<AbstractGameObject> CREATE_WAREHOUSE(int parentZoneID, int OwnerUUID, String name, int meshUUID,
Vector3fImmutable location, float meshScale, int currentHP,
ProtectionState protectionState, int currentGold, int rank,
DateTime upgradeDate, int blueprintUUID, float w, float rotY) {
ArrayList<AbstractGameObject> warehouseList = new ArrayList<>();
try (Connection connection = DbManager.getConnection();
PreparedStatement preparedStatement = connection.prepareStatement("CALL `WAREHOUSE_CREATE`(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ? ,? ,? ,?, ?);")) {
preparedStatement.setInt(1, parentZoneID);
preparedStatement.setInt(2, OwnerUUID);
preparedStatement.setString(3, name);
preparedStatement.setInt(4, meshUUID);
preparedStatement.setFloat(5, location.x);
preparedStatement.setFloat(6, location.y);
preparedStatement.setFloat(7, location.z);
preparedStatement.setFloat(8, meshScale);
preparedStatement.setInt(9, currentHP);
preparedStatement.setString(10, protectionState.name());
preparedStatement.setInt(11, currentGold);
preparedStatement.setInt(12, rank);
if (upgradeDate != null)
preparedStatement.setTimestamp(13, new java.sql.Timestamp(upgradeDate.getMillis()));
else
preparedStatement.setNull(13, java.sql.Types.DATE);
preparedStatement.setInt(14, blueprintUUID);
preparedStatement.setFloat(15, w);
preparedStatement.setFloat(16, rotY);
preparedStatement.execute();
ResultSet rs = preparedStatement.getResultSet();
while (rs.next())
addObject(warehouseList, rs);
while (preparedStatement.getMoreResults()) {
rs = preparedStatement.getResultSet();
while (rs.next())
addObject(warehouseList, rs);
}
} catch (SQLException e) {
Logger.error(e);
}
return warehouseList;
}
public boolean updateLocks(final Warehouse wh, long locks) {
try (Connection connection = DbManager.getConnection();
PreparedStatement preparedStatement = connection.prepareStatement("UPDATE `obj_warehouse` SET `warehouse_locks`=? WHERE `UID` = ?")) {
preparedStatement.setLong(1, locks);
preparedStatement.setInt(2, wh.getUID());
return (preparedStatement.executeUpdate() > 0);
} catch (SQLException e) {
Logger.error(e);
}
return false;
}
public boolean updateGold(final Warehouse wh, int amount) {
try (Connection connection = DbManager.getConnection();
PreparedStatement preparedStatement = connection.prepareStatement("UPDATE `obj_warehouse` SET `warehouse_gold`=? WHERE `UID` = ?")) {
preparedStatement.setInt(1, amount);
preparedStatement.setInt(2, wh.getUID());
return (preparedStatement.executeUpdate() > 0);
} catch (SQLException e) {
Logger.error(e);
}
return false;
}
public boolean updateStone(final Warehouse wh, int amount) {
try (Connection connection = DbManager.getConnection();
PreparedStatement preparedStatement = connection.prepareStatement("UPDATE `obj_warehouse` SET `warehouse_stone`=? WHERE `UID` = ?")) {
preparedStatement.setInt(1, amount);
preparedStatement.setInt(2, wh.getUID());
return (preparedStatement.executeUpdate() > 0);
} catch (SQLException e) {
Logger.error(e);
}
return false;
}
public boolean updateTruesteel(final Warehouse wh, int amount) {
try (Connection connection = DbManager.getConnection();
PreparedStatement preparedStatement = connection.prepareStatement("UPDATE `obj_warehouse` SET `warehouse_truesteel`=? WHERE `UID` = ?")) {
preparedStatement.setInt(1, amount);
preparedStatement.setInt(2, wh.getUID());
return (preparedStatement.executeUpdate() > 0);
} catch (SQLException e) {
Logger.error(e);
}
return false;
}
public boolean updateIron(final Warehouse wh, int amount) {
try (Connection connection = DbManager.getConnection();
PreparedStatement preparedStatement = connection.prepareStatement("UPDATE `obj_warehouse` SET `warehouse_iron`=? WHERE `UID` = ?")) {
preparedStatement.setInt(1, amount);
preparedStatement.setInt(2, wh.getUID());
return (preparedStatement.executeUpdate() > 0);
} catch (SQLException e) {
Logger.error(e);
}
return false;
}
public boolean updateAdamant(final Warehouse wh, int amount) {
try (Connection connection = DbManager.getConnection();
PreparedStatement preparedStatement = connection.prepareStatement("UPDATE `obj_warehouse` SET `warehouse_adamant`=? WHERE `UID` = ?")) {
preparedStatement.setInt(1, amount);
preparedStatement.setInt(2, wh.getUID());
return (preparedStatement.executeUpdate() > 0);
} catch (SQLException e) {
Logger.error(e);
}
return false;
}
public boolean updateLumber(final Warehouse wh, int amount) {
try (Connection connection = DbManager.getConnection();
PreparedStatement preparedStatement = connection.prepareStatement("UPDATE `obj_warehouse` SET `warehouse_lumber`=? WHERE `UID` = ?")) {
preparedStatement.setInt(1, amount);
preparedStatement.setInt(2, wh.getUID());
return (preparedStatement.executeUpdate() > 0);
} catch (SQLException e) {
Logger.error(e);
}
return false;
}
public boolean updateOak(final Warehouse wh, int amount) {
try (Connection connection = DbManager.getConnection();
PreparedStatement preparedStatement = connection.prepareStatement("UPDATE `obj_warehouse` SET `warehouse_oak`=? WHERE `UID` = ?")) {
preparedStatement.setInt(1, amount);
preparedStatement.setInt(2, wh.getUID());
return (preparedStatement.executeUpdate() > 0);
} catch (SQLException e) {
Logger.error(e);
}
return false;
}
public boolean updateBronzewood(final Warehouse wh, int amount) {
try (Connection connection = DbManager.getConnection();
PreparedStatement preparedStatement = connection.prepareStatement("UPDATE `obj_warehouse` SET `warehouse_bronzewood`=? WHERE `UID` = ?")) {
preparedStatement.setInt(1, amount);
preparedStatement.setInt(2, wh.getUID());
return (preparedStatement.executeUpdate() > 0);
} catch (SQLException e) {
Logger.error(e);
}
return false;
}
public boolean updateMandrake(final Warehouse wh, int amount) {
try (Connection connection = DbManager.getConnection();
PreparedStatement preparedStatement = connection.prepareStatement("UPDATE `obj_warehouse` SET `warehouse_mandrake`=? WHERE `UID` = ?")) {
preparedStatement.setInt(1, amount);
preparedStatement.setInt(2, wh.getUID());
return (preparedStatement.executeUpdate() > 0);
} catch (SQLException e) {
Logger.error(e);
}
return false;
}
public boolean updateCoal(final Warehouse wh, int amount) {
try (Connection connection = DbManager.getConnection();
PreparedStatement preparedStatement = connection.prepareStatement("UPDATE `obj_warehouse` SET `warehouse_coal`=? WHERE `UID` = ?")) {
preparedStatement.setInt(1, amount);
preparedStatement.setInt(2, wh.getUID());
return (preparedStatement.executeUpdate() > 0);
} catch (SQLException e) {
Logger.error(e);
}
return false;
}
public boolean updateAgate(final Warehouse wh, int amount) {
public boolean CREATE_TRANSACTION(int warehouseBuildingID, GameObjectType targetType, int targetUUID, TransactionType transactionType, mbEnums.ResourceType resource, int amount, DateTime date) {
try (Connection connection = DbManager.getConnection();
PreparedStatement preparedStatement = connection.prepareStatement("UPDATE `obj_warehouse` SET `warehouse_agate`=? WHERE `UID` = ?")) {
PreparedStatement preparedStatement = connection.prepareStatement("INSERT INTO `dyn_warehouse_transactions` (`warehouseUID`, `targetType`,`targetUID`, `type`,`resource`,`amount`,`date` ) VALUES (?,?,?,?,?,?,?)")) {
preparedStatement.setInt(1, amount);
preparedStatement.setInt(2, wh.getUID());
preparedStatement.setLong(1, warehouseBuildingID);
preparedStatement.setString(2, targetType.name());
preparedStatement.setLong(3, targetUUID);
preparedStatement.setString(4, transactionType.name());
preparedStatement.setString(5, resource.name());
preparedStatement.setInt(6, amount);
preparedStatement.setTimestamp(7, new java.sql.Timestamp(date.getMillis()));
return (preparedStatement.executeUpdate() > 0);
@ -295,125 +61,62 @@ public class dbWarehouseHandler extends dbHandlerBase { @@ -295,125 +61,62 @@ public class dbWarehouseHandler extends dbHandlerBase {
return false;
}
public boolean updateDiamond(final Warehouse wh, int amount) {
try (Connection connection = DbManager.getConnection();
PreparedStatement preparedStatement = connection.prepareStatement("UPDATE `obj_warehouse` SET `warehouse_diamond`=? WHERE `UID` = ?")) {
preparedStatement.setInt(1, amount);
preparedStatement.setInt(2, wh.getUID());
return (preparedStatement.executeUpdate() > 0);
public ArrayList<Transaction> GET_TRANSACTIONS_FOR_WAREHOUSE(final int warehouseUUID) {
} catch (SQLException e) {
Logger.error(e);
}
return false;
}
ArrayList<Transaction> transactionsList = new ArrayList<>();
public boolean updateOnyx(final Warehouse wh, int amount) {
try (Connection connection = DbManager.getConnection();
PreparedStatement preparedStatement = connection.prepareStatement("UPDATE `obj_warehouse` SET `warehouse_onyx`=? WHERE `UID` = ?")) {
preparedStatement.setInt(1, amount);
preparedStatement.setInt(2, wh.getUID());
return (preparedStatement.executeUpdate() > 0);
} catch (SQLException e) {
Logger.error(e);
}
return false;
}
public boolean updateAzoth(final Warehouse wh, int amount) {
PreparedStatement preparedStatement = connection.prepareStatement("SELECT * FROM dyn_warehouse_transactions WHERE `warehouseUID` = ?;")) {
try (Connection connection = DbManager.getConnection();
PreparedStatement preparedStatement = connection.prepareStatement("UPDATE `obj_warehouse` SET `warehouse_azoth`=? WHERE `UID` = ?")) {
preparedStatement.setInt(1, warehouseUUID);
preparedStatement.setInt(1, amount);
preparedStatement.setInt(2, wh.getUID());
ResultSet rs = preparedStatement.executeQuery();
return (preparedStatement.executeUpdate() > 0);
while (rs.next()) {
Transaction transactions = new Transaction(rs);
transactionsList.add(transactions);
}
} catch (SQLException e) {
Logger.error(e);
}
return false;
}
public boolean updateOrichalk(final Warehouse wh, int amount) {
try (Connection connection = DbManager.getConnection();
PreparedStatement preparedStatement = connection.prepareStatement("UPDATE `obj_warehouse` SET `warehouse_orichalk`=? WHERE `UID` = ?")) {
preparedStatement.setInt(1, amount);
preparedStatement.setInt(2, wh.getUID());
return (preparedStatement.executeUpdate() > 0);
} catch (SQLException e) {
Logger.error(e);
}
return false;
return transactionsList;
}
public boolean updateAntimony(final Warehouse wh, int amount) {
public void DELETE_WAREHOUSE(Warehouse warehouse) {
try (Connection connection = DbManager.getConnection();
PreparedStatement preparedStatement = connection.prepareStatement("UPDATE `obj_warehouse` SET `warehouse_antimony`=? WHERE `UID` = ?")) {
preparedStatement.setInt(1, amount);
preparedStatement.setInt(2, wh.getUID());
return (preparedStatement.executeUpdate() > 0);
PreparedStatement preparedStatement = connection.prepareStatement("DELETE FROM `dyn_warehouse` WHERE `cityUUID` = ?;")) {
preparedStatement.setInt(1, warehouse.city.getObjectUUID());
preparedStatement.executeUpdate();
} catch (SQLException e) {
Logger.error(e);
}
return false;
}
public boolean updateSulfur(final Warehouse wh, int amount) {
try (Connection connection = DbManager.getConnection();
PreparedStatement preparedStatement = connection.prepareStatement("UPDATE `obj_warehouse` SET `warehouse_sulfur`=? WHERE `UID` = ?")) {
preparedStatement.setInt(1, amount);
preparedStatement.setInt(2, wh.getUID());
return (preparedStatement.executeUpdate() > 0);
} catch (SQLException e) {
Logger.error(e);
}
return false;
}
public boolean updateQuicksilver(final Warehouse wh, int amount) {
public boolean UPDATE_WAREHOUSE(Warehouse warehouse) {
try (Connection connection = DbManager.getConnection();
PreparedStatement preparedStatement = connection.prepareStatement("UPDATE `obj_warehouse` SET `warehouse_quicksilver`=? WHERE `UID` = ?")) {
JSONObject warehouseJSON = new JSONObject();
preparedStatement.setInt(1, amount);
preparedStatement.setInt(2, wh.getUID());
JSONObject resources = new JSONObject(warehouse.resources);
warehouseJSON.put("resources", resources);
return (preparedStatement.executeUpdate() > 0);
JSONArray locks = new JSONArray();
} catch (SQLException e) {
Logger.error(e);
}
return false;
}
for (mbEnums.ResourceType resource : warehouse.locked)
locks.put(resource.name());
public boolean updateGalvor(final Warehouse wh, int amount) {
warehouseJSON.put("locked", locks);
try (Connection connection = DbManager.getConnection();
PreparedStatement preparedStatement = connection.prepareStatement("UPDATE `obj_warehouse` SET `warehouse_galvor`=? WHERE `UID` = ?")) {
PreparedStatement preparedStatement = connection.prepareStatement("INSERT INTO `dyn_warehouse` (`cityUUID`, `warehouse`) VALUES (?, ?) " +
"ON DUPLICATE KEY UPDATE `warehouse` = VALUES(`warehouse`)")) {
preparedStatement.setInt(1, amount);
preparedStatement.setInt(2, wh.getUID());
preparedStatement.setInt(1, warehouse.city.getObjectUUID());
preparedStatement.setString(2, warehouseJSON.toString());
return (preparedStatement.executeUpdate() > 0);
@ -423,45 +126,44 @@ public class dbWarehouseHandler extends dbHandlerBase { @@ -423,45 +126,44 @@ public class dbWarehouseHandler extends dbHandlerBase {
return false;
}
public boolean updateWormwood(final Warehouse wh, int amount) {
public void LOAD_WAREHOUSES() {
try (Connection connection = DbManager.getConnection();
PreparedStatement preparedStatement = connection.prepareStatement("UPDATE `obj_warehouse` SET `warehouse_wormwood`=? WHERE `UID` = ?")) {
PreparedStatement preparedStatement = connection.prepareStatement("SELECT * FROM `dyn_warehouse`;");
ResultSet rs = preparedStatement.executeQuery()) {
preparedStatement.setInt(1, amount);
preparedStatement.setInt(2, wh.getUID());
while (rs.next()) {
int cityUID = rs.getInt("cityUUID");
JSONObject jsonObject = new JSONObject(rs.getString("warehouse"));
City city = City.getCity(cityUID);
city.warehouse = new Warehouse(jsonObject);
city.warehouse.city = city;
// Locate warehouse building
for (Building building : city.parentZone.zoneBuildingSet) {
if (building.getBlueprint().getBuildingGroup().equals(mbEnums.BuildingGroup.WAREHOUSE)) {
city.warehouse.building = building;
break;
}
}
return (preparedStatement.executeUpdate() > 0);
}
} catch (SQLException e) {
} catch (Exception e) {
Logger.error(e);
}
return false;
}
public boolean updateObsidian(final Warehouse wh, int amount) {
public boolean WRITE_WORKORDER(WorkOrder workOrder) {
try (Connection connection = DbManager.getConnection();
PreparedStatement preparedStatement = connection.prepareStatement("UPDATE `obj_warehouse` SET `warehouse_obsidian`=? WHERE `UID` = ?")) {
preparedStatement.setInt(1, amount);
preparedStatement.setInt(2, wh.getUID());
return (preparedStatement.executeUpdate() > 0);
} catch (SQLException e) {
Logger.error(e);
}
return false;
}
public boolean updateBloodstone(final Warehouse wh, int amount) {
JSONObject warehouseJSON = WorkOrder.toJson(workOrder);
try (Connection connection = DbManager.getConnection();
PreparedStatement preparedStatement = connection.prepareStatement("UPDATE `obj_warehouse` SET `warehouse_bloodstone`=? WHERE `UID` = ?")) {
PreparedStatement preparedStatement = connection.prepareStatement("INSERT INTO `dyn_workorders` (`workorderID`, `workorder`) VALUES (?, ?) " +
"ON DUPLICATE KEY UPDATE `workorder` = VALUES(`workorder`)")) {
preparedStatement.setInt(1, amount);
preparedStatement.setInt(2, wh.getUID());
preparedStatement.setInt(1, workOrder.workOrderID);
preparedStatement.setString(2, warehouseJSON.toString());
return (preparedStatement.executeUpdate() > 0);
@ -471,85 +173,56 @@ public class dbWarehouseHandler extends dbHandlerBase { @@ -471,85 +173,56 @@ public class dbWarehouseHandler extends dbHandlerBase {
return false;
}
public boolean updateMithril(final Warehouse wh, int amount) {
public void DELETE_WORKORDER(WorkOrder workOrder) {
try (Connection connection = DbManager.getConnection();
PreparedStatement preparedStatement = connection.prepareStatement("UPDATE `obj_warehouse` SET `warehouse_mithril`=? WHERE `UID` = ?")) {
preparedStatement.setInt(1, amount);
preparedStatement.setInt(2, wh.getUID());
return (preparedStatement.executeUpdate() > 0);
PreparedStatement preparedStatement = connection.prepareStatement("DELETE FROM `dyn_workorders` WHERE `workorderID` = ?;")) {
preparedStatement.setInt(1, workOrder.workOrderID);
preparedStatement.executeUpdate();
} catch (SQLException e) {
Logger.error(e);
}
return false;
}
public boolean CREATE_TRANSACTION(int warehouseBuildingID, GameObjectType targetType, int targetUUID, TransactionType transactionType, Resource resource, int amount, DateTime date) {
try (Connection connection = DbManager.getConnection();
PreparedStatement preparedStatement = connection.prepareStatement("INSERT INTO `dyn_warehouse_transactions` (`warehouseUID`, `targetType`,`targetUID`, `type`,`resource`,`amount`,`date` ) VALUES (?,?,?,?,?,?,?)")) {
preparedStatement.setLong(1, warehouseBuildingID);
preparedStatement.setString(2, targetType.name());
preparedStatement.setLong(3, targetUUID);
preparedStatement.setString(4, transactionType.name());
preparedStatement.setString(5, resource.name());
preparedStatement.setInt(6, amount);
preparedStatement.setTimestamp(7, new java.sql.Timestamp(date.getMillis()));
return (preparedStatement.executeUpdate() > 0);
} catch (SQLException e) {
Logger.error(e);
}
return false;
}
public ArrayList<Transaction> GET_TRANSACTIONS_FOR_WAREHOUSE(final int warehouseUUID) {
public void LOAD_WORKORDERS() {
ArrayList<Transaction> transactionsList = new ArrayList<>();
// Method loads NPC workOrders from disk at bootstrap.
// A workOrder will persist until completed or junked
// via the client interface.
ArrayList<WorkOrder> submitList = new ArrayList<>();
ArrayList<WorkOrder> orphanList = new ArrayList<>();
try (Connection connection = DbManager.getConnection();
PreparedStatement preparedStatement = connection.prepareStatement("SELECT * FROM dyn_warehouse_transactions WHERE `warehouseUID` = ?;")) {
preparedStatement.setInt(1, warehouseUUID);
ResultSet rs = preparedStatement.executeQuery();
PreparedStatement preparedStatement = connection.prepareStatement("SELECT * FROM `dyn_workorders`;");
ResultSet rs = preparedStatement.executeQuery()) {
while (rs.next()) {
Transaction transactions = new Transaction(rs);
transactionsList.add(transactions);
JSONObject jsonObject = new JSONObject(rs.getString("workorder"));
WorkOrder workOrder = new WorkOrder(jsonObject);
submitList.add(workOrder);
}
} catch (SQLException e) {
} catch (Exception e) {
Logger.error(e);
}
return transactionsList;
}
// Submit new workOrders to the ForgeManager
public void LOAD_ALL_WAREHOUSES() {
for (WorkOrder workOrder : submitList) {
Warehouse warehouse;
DbManager.WarehouseQueries.DELETE_WORKORDER(workOrder);
try (Connection connection = DbManager.getConnection();
PreparedStatement preparedStatement = connection.prepareStatement("SELECT `obj_warehouse`.*, `object`.`parent`, `object`.`type` FROM `object` LEFT JOIN `obj_warehouse` ON `object`.`UID` = `obj_warehouse`.`UID` WHERE `object`.`type` = 'warehouse';")) {
// Delete but do not reconstitute orphan workOrders
if (workOrder.vendor == null)
continue;
ResultSet rs = preparedStatement.executeQuery();
while (rs.next()) {
warehouse = new Warehouse(rs);
warehouse.runAfterLoad();
warehouse.loadAllTransactions();
}
} catch (SQLException e) {
Logger.error(e);
workOrder.workOrderID = ForgeManager.workOrderCounter.incrementAndGet();
DbManager.WarehouseQueries.WRITE_WORKORDER(workOrder);
ForgeManager.vendorWorkOrderLookup.get(workOrder.vendor).add(workOrder);
ForgeManager.forge.add(workOrder);
}
}
}

83
src/engine/db/handlers/dbZoneHandler.java

@ -9,11 +9,11 @@ @@ -9,11 +9,11 @@
package engine.db.handlers;
import engine.Enum;
import engine.gameManager.DbManager;
import engine.gameManager.ZoneManager;
import engine.math.Vector2f;
import engine.mbEnums;
import engine.objects.Zone;
import engine.objects.ZoneTemplate;
import org.pmw.tinylog.Logger;
import java.sql.Connection;
@ -26,33 +26,29 @@ public class dbZoneHandler extends dbHandlerBase { @@ -26,33 +26,29 @@ public class dbZoneHandler extends dbHandlerBase {
public dbZoneHandler() {
this.localClass = Zone.class;
this.localObjectType = Enum.GameObjectType.valueOf(this.localClass.getSimpleName());
this.localObjectType = mbEnums.GameObjectType.valueOf(this.localClass.getSimpleName());
}
public ArrayList<Zone> GET_ALL_NODES(Zone zone) {
ArrayList<Zone> wsmList = new ArrayList<>();
wsmList.addAll(zone.getNodes());
if (zone.absX == 0.0f) {
zone.absX = zone.getXCoord();
}
if (zone.absY == 0.0f) {
zone.absY = zone.getYCoord();
}
if (zone.absZ == 0.0f) {
zone.absZ = zone.getZCoord();
}
for (Zone child : zone.getNodes()) {
child.absX = child.getXCoord() + zone.absX;
child.absY = child.getYCoord() + zone.absY;
child.absZ = child.getZCoord() + zone.absZ;
wsmList.addAll(this.GET_ALL_NODES(child));
public ArrayList<Zone> GET_ALL_ZONES() {
ArrayList<Zone> zoneList = new ArrayList<>();
try (Connection connection = DbManager.getConnection();
PreparedStatement preparedStatement = connection.prepareStatement("SELECT `obj_zone`.*, `object`.`parent` FROM `object` INNER JOIN `obj_zone` ON `obj_zone`.`UID` = `object`.`UID` ORDER BY `object`.`UID` ASC;")) {
ResultSet rs = preparedStatement.executeQuery();
zoneList = getObjectsFromRs(rs, 2000);
} catch (SQLException e) {
Logger.error(e);
}
return wsmList;
return zoneList;
}
public Zone GET_BY_UID(long ID) {
Zone zone = (Zone) DbManager.getFromCache(Enum.GameObjectType.Zone, (int) ID);
Zone zone = (Zone) DbManager.getFromCache(mbEnums.GameObjectType.Zone, (int) ID);
if (zone != null)
return zone;
@ -72,43 +68,38 @@ public class dbZoneHandler extends dbHandlerBase { @@ -72,43 +68,38 @@ public class dbZoneHandler extends dbHandlerBase {
return zone;
}
public ArrayList<Zone> GET_MAP_NODES(final int objectUUID) {
ArrayList<Zone> zoneList = new ArrayList<>();
public void LOAD_ALL_ZONE_TEMPLATES() {
try (Connection connection = DbManager.getConnection();
PreparedStatement preparedStatement = connection.prepareStatement("SELECT `obj_zone`.*, `object`.`parent` FROM `object` INNER JOIN `obj_zone` ON `obj_zone`.`UID` = `object`.`UID` WHERE `object`.`parent` = ?;")) {
preparedStatement.setLong(1, objectUUID);
PreparedStatement preparedStatement = connection.prepareStatement("SELECT * FROM static_zone_templates")) {
ResultSet rs = preparedStatement.executeQuery();
zoneList = getObjectsFromRs(rs, 2000);
} catch (SQLException e) {
Logger.error(e);
}
return zoneList;
}
while (rs.next()) {
ZoneTemplate zoneTemplate = new ZoneTemplate(rs);
ZoneManager._zone_templates.put(zoneTemplate.templateID, zoneTemplate);
}
public void LOAD_ZONE_EXTENTS() {
// Add player city
try (Connection connection = DbManager.getConnection();
PreparedStatement preparedStatement = connection.prepareStatement("SELECT * FROM `static_zone_size`;")) {
ZoneTemplate zoneTemplate = new ZoneTemplate();
ResultSet rs = preparedStatement.executeQuery();
zoneTemplate.templateID = 0;
zoneTemplate.sea_level_type = "PARENT";
zoneTemplate.sea_level = 0;
zoneTemplate.max_blend = 128;
zoneTemplate.min_blend = 128;
zoneTemplate.terrain_max_y = 5;
zoneTemplate.major_radius = (int) mbEnums.CityBoundsType.ZONE.halfExtents;
zoneTemplate.minor_radius = (int) mbEnums.CityBoundsType.ZONE.halfExtents;
zoneTemplate.terrain_type = "PLANAR";
while (rs.next()) {
Vector2f zoneSize = new Vector2f();
int loadNum = rs.getInt("loadNum");
zoneSize.x = rs.getFloat("xRadius");
zoneSize.y = rs.getFloat("zRadius");
ZoneManager._zone_size_data.put(loadNum, zoneSize);
}
ZoneManager._zone_templates.put(zoneTemplate.templateID, zoneTemplate);
} catch (SQLException e) {
Logger.error(e);
}
}
public boolean DELETE_ZONE(final Zone zone) {

2
src/engine/devcmd/AbstractDevCmd.java

@ -9,9 +9,9 @@ @@ -9,9 +9,9 @@
package engine.devcmd;
import engine.Enum.GameObjectType;
import engine.gameManager.ChatManager;
import engine.gameManager.DbManager;
import engine.mbEnums.GameObjectType;
import engine.objects.*;
import java.util.ArrayList;

2
src/engine/devcmd/cmds/AddBuildingCmd.java

@ -9,7 +9,6 @@ @@ -9,7 +9,6 @@
package engine.devcmd.cmds;
import engine.Enum.ProtectionState;
import engine.InterestManagement.WorldGrid;
import engine.devcmd.AbstractDevCmd;
import engine.gameManager.ChatManager;
@ -17,6 +16,7 @@ import engine.gameManager.DbManager; @@ -17,6 +16,7 @@ import engine.gameManager.DbManager;
import engine.gameManager.ZoneManager;
import engine.math.Vector3f;
import engine.math.Vector3fImmutable;
import engine.mbEnums.ProtectionState;
import engine.objects.*;
import engine.server.MBServerStatics;

6
src/engine/devcmd/cmds/AddGoldCmd.java

@ -32,7 +32,7 @@ public class AddGoldCmd extends AbstractDevCmd { @@ -32,7 +32,7 @@ public class AddGoldCmd extends AbstractDevCmd {
return;
}
Item gold = pc.getCharItemManager().getGoldInventory();
Item gold = pc.charItemManager.getGoldInventory();
int curAmt;
if (gold == null)
curAmt = 0;
@ -54,13 +54,13 @@ public class AddGoldCmd extends AbstractDevCmd { @@ -54,13 +54,13 @@ public class AddGoldCmd extends AbstractDevCmd {
return;
}
if (!pc.getCharItemManager().addGoldToInventory(amt, true)) {
if (!pc.charItemManager.addGoldToInventory(amt, true)) {
throwbackError(pc, "Failed to add gold to inventory");
return;
}
ChatManager.chatSayInfo(pc, amt + " gold added to inventory");
pc.getCharItemManager().updateInventory();
pc.charItemManager.updateInventory();
}
@Override

40
src/engine/devcmd/cmds/AddMobCmd.java

@ -9,18 +9,16 @@ @@ -9,18 +9,16 @@
package engine.devcmd.cmds;
import engine.Enum.GameObjectType;
import engine.devcmd.AbstractDevCmd;
import engine.gameManager.ChatManager;
import engine.gameManager.DbManager;
import engine.gameManager.ZoneManager;
import engine.math.Vector3fImmutable;
import engine.objects.*;
import engine.mbEnums;
import engine.objects.AbstractGameObject;
import engine.objects.Mob;
import engine.objects.PlayerCharacter;
import engine.objects.Zone;
import org.pmw.tinylog.Logger;
/**
* @author Eighty
*/
public class AddMobCmd extends AbstractDevCmd {
public AddMobCmd() {
@ -37,27 +35,8 @@ public class AddMobCmd extends AbstractDevCmd { @@ -37,27 +35,8 @@ public class AddMobCmd extends AbstractDevCmd {
Zone zone = ZoneManager.findSmallestZone(pc.getLoc());
if (words[0].equals("all")) {
for (AbstractGameObject mobbaseAGO : DbManager.getList(GameObjectType.MobBase)) {
MobBase mb = (MobBase) mobbaseAGO;
int loadID = mb.getObjectUUID();
Mob mob = Mob.createMob(loadID, Vector3fImmutable.getRandomPointInCircle(pc.getLoc(), 100),
null, true, zone, null, 0, "", 1);
if (mob != null) {
mob.updateDatabase();
this.setResult(String.valueOf(mob.getDBID()));
} else {
throwbackError(pc, "Failed to create mob of type " + loadID);
Logger.error("Failed to create mob of type "
+ loadID);
}
}
return;
}
int loadID;
try {
loadID = Integer.parseInt(words[0]);
} catch (NumberFormatException e) {
@ -71,20 +50,19 @@ public class AddMobCmd extends AbstractDevCmd { @@ -71,20 +50,19 @@ public class AddMobCmd extends AbstractDevCmd {
return; // NaN
}
if (zone == null) {
throwbackError(pc, "Failed to find zone to place mob in.");
return;
}
if (zone.isPlayerCity()) {
if (zone.guild_zone) {
throwbackError(pc, "Cannot use ./mob on Player cities. Try ./servermob instead.");
return;
}
Mob mob = Mob.createMob(loadID, pc.getLoc(),
null, true, zone, null, 0, "", 1);
null, zone, null, null, "", 1, mbEnums.AIAgentType.MOBILE);
if (mob != null) {
mob.updateDatabase();
ChatManager.chatSayInfo(pc,

2
src/engine/devcmd/cmds/AddNPCCmd.java

@ -9,10 +9,10 @@ @@ -9,10 +9,10 @@
package engine.devcmd.cmds;
import engine.Enum.GameObjectType;
import engine.InterestManagement.WorldGrid;
import engine.devcmd.AbstractDevCmd;
import engine.gameManager.*;
import engine.mbEnums.GameObjectType;
import engine.objects.*;
import org.pmw.tinylog.Logger;

2
src/engine/devcmd/cmds/ApplyBonusCmd.java

@ -9,10 +9,10 @@ @@ -9,10 +9,10 @@
package engine.devcmd.cmds;
import engine.Enum.PowerActionType;
import engine.devcmd.AbstractDevCmd;
import engine.gameManager.ChatManager;
import engine.gameManager.PowersManager;
import engine.mbEnums.PowerActionType;
import engine.objects.AbstractGameObject;
import engine.objects.PlayerCharacter;
import engine.powers.ActionsBase;

127
src/engine/devcmd/cmds/AuditFailedItemsCmd.java

@ -1,127 +0,0 @@ @@ -1,127 +0,0 @@
// • ▌ ▄ ·. ▄▄▄· ▄▄ • ▪ ▄▄· ▄▄▄▄· ▄▄▄· ▐▄▄▄ ▄▄▄ .
// ·██ ▐███▪▐█ ▀█ ▐█ ▀ ▪██ ▐█ ▌▪▐█ ▀█▪▐█ ▀█ •█▌ ▐█▐▌·
// ▐█ ▌▐▌▐█·▄█▀▀█ ▄█ ▀█▄▐█·██ ▄▄▐█▀▀█▄▄█▀▀█ ▐█▐ ▐▌▐▀▀▀
// ██ ██▌▐█▌▐█ ▪▐▌▐█▄▪▐█▐█▌▐███▌██▄▪▐█▐█ ▪▐▌██▐ █▌▐█▄▄▌
// ▀▀ █▪▀▀▀ ▀ ▀ ·▀▀▀▀ ▀▀▀·▀▀▀ ·▀▀▀▀ ▀ ▀ ▀▀ █▪ ▀▀▀
// Magicbane Emulator Project © 2013 - 2022
// www.magicbane.com
package engine.devcmd.cmds;
import engine.Enum.ModType;
import engine.devcmd.AbstractDevCmd;
import engine.gameManager.PowersManager;
import engine.net.ItemProductionManager;
import engine.objects.*;
import engine.powers.effectmodifiers.AbstractEffectModifier;
import engine.powers.poweractions.AbstractPowerAction;
import org.pmw.tinylog.Logger;
public class AuditFailedItemsCmd extends AbstractDevCmd {
public AuditFailedItemsCmd() {
super("faileditems");
}
@Override
protected void _doCmd(PlayerCharacter pcSender, String[] words,
AbstractGameObject target) {
if (ItemProductionManager.FailedItems.isEmpty())
return;
Logger.info("Auditing Item production Failed Items");
String newLine = "\r\n";
String auditFailedItem = "Failed Item Name | Prefix | Suffix | NPC | Contract | Player | ";
for (ProducedItem failedItem : ItemProductionManager.FailedItems) {
String npcName = "";
String playerName = "";
String contractName = "";
String prefix = "";
String suffix = "";
String itemName = "";
NPC npc = NPC.getFromCache(failedItem.getNpcUID());
if (npc == null) {
npcName = "null";
contractName = "null";
} else {
npcName = npc.getName();
if (npc.getContract() != null)
contractName = npc.getContract().getName();
}
PlayerCharacter roller = PlayerCharacter.getFromCache(failedItem.getPlayerID());
if (roller == null)
playerName = "null";
else
playerName = roller.getName();
ItemBase ib = ItemBase.getItemBase(failedItem.getItemBaseID());
if (ib != null) {
itemName = ib.getName();
}
if (failedItem.isRandom() == false) {
if (failedItem.getPrefix().isEmpty() == false) {
AbstractPowerAction pa = PowersManager.getPowerActionByIDString(failedItem.getPrefix());
if (pa != null) {
for (AbstractEffectModifier aem : pa.getEffectsBase().getModifiers()) {
if (aem.modType.equals(ModType.ItemName)) {
prefix = aem.getString1();
break;
}
}
}
}
if (failedItem.getSuffix().isEmpty() == false) {
AbstractPowerAction pa = PowersManager.getPowerActionByIDString(failedItem.getSuffix());
if (pa != null) {
for (AbstractEffectModifier aem : pa.getEffectsBase().getModifiers()) {
if (aem.modType.equals(ModType.ItemName)) {
suffix = aem.getString1();
break;
}
}
}
}
} else {
prefix = "random";
}
auditFailedItem += newLine;
auditFailedItem += itemName + " | " + prefix + " | " + suffix + " | " + failedItem.getNpcUID() + ":" + npcName + " | " + contractName + " | " + failedItem.getPlayerID() + ":" + playerName;
}
Logger.info(auditFailedItem);
ItemProductionManager.FailedItems.clear();
}
@Override
protected String _getUsageString() {
return "' /bounds'";
}
@Override
protected String _getHelpString() {
return "Audits all the mobs in a zone.";
}
}

70
src/engine/devcmd/cmds/AuditHeightMapCmd.java

@ -1,70 +0,0 @@ @@ -1,70 +0,0 @@
// • ▌ ▄ ·. ▄▄▄· ▄▄ • ▪ ▄▄· ▄▄▄▄· ▄▄▄· ▐▄▄▄ ▄▄▄ .
// ·██ ▐███▪▐█ ▀█ ▐█ ▀ ▪██ ▐█ ▌▪▐█ ▀█▪▐█ ▀█ •█▌ ▐█▐▌·
// ▐█ ▌▐▌▐█·▄█▀▀█ ▄█ ▀█▄▐█·██ ▄▄▐█▀▀█▄▄█▀▀█ ▐█▐ ▐▌▐▀▀▀
// ██ ██▌▐█▌▐█ ▪▐▌▐█▄▪▐█▐█▌▐███▌██▄▪▐█▐█ ▪▐▌██▐ █▌▐█▄▄▌
// ▀▀ █▪▀▀▀ ▀ ▀ ·▀▀▀▀ ▀▀▀·▀▀▀ ·▀▀▀▀ ▀ ▀ ▀▀ █▪ ▀▀▀
// Magicbane Emulator Project © 2013 - 2022
// www.magicbane.com
package engine.devcmd.cmds;
import engine.InterestManagement.HeightMap;
import engine.devcmd.AbstractDevCmd;
import engine.gameManager.ZoneManager;
import engine.math.Vector2f;
import engine.math.Vector3fImmutable;
import engine.objects.AbstractGameObject;
import engine.objects.PlayerCharacter;
import engine.objects.Zone;
public class AuditHeightMapCmd extends AbstractDevCmd {
public AuditHeightMapCmd() {
super("auditheightmap");
}
@Override
protected void _doCmd(PlayerCharacter pcSender, String[] words,
AbstractGameObject target) {
int count = Integer.parseInt(words[0]);
long start = System.currentTimeMillis();
for (int i = 0; i < count; i++) {
Zone currentZone = ZoneManager.findSmallestZone(pcSender.getLoc());
Vector3fImmutable currentLoc = Vector3fImmutable.getRandomPointInCircle(currentZone.getLoc(), currentZone.getBounds().getHalfExtents().x < currentZone.getBounds().getHalfExtents().y ? currentZone.getBounds().getHalfExtents().x : currentZone.getBounds().getHalfExtents().y);
Vector2f zoneLoc = ZoneManager.worldToZoneSpace(currentLoc, currentZone);
if (currentZone != null && currentZone.getHeightMap() != null) {
float altitude = currentZone.getHeightMap().getInterpolatedTerrainHeight(zoneLoc);
float outsetAltitude = HeightMap.getOutsetHeight(altitude, currentZone, pcSender.getLoc());
}
}
long end = System.currentTimeMillis();
long delta = end - start;
this.throwbackInfo(pcSender, "Audit Heightmap took " + delta + " ms to run " + count + " times!");
}
@Override
protected String _getUsageString() {
return "' /auditmobs [zone.UUID]'";
}
@Override
protected String _getHelpString() {
return "Audits all the mobs in a zone.";
}
}

105
src/engine/devcmd/cmds/AuditMobsCmd.java

@ -1,105 +0,0 @@ @@ -1,105 +0,0 @@
// • ▌ ▄ ·. ▄▄▄· ▄▄ • ▪ ▄▄· ▄▄▄▄· ▄▄▄· ▐▄▄▄ ▄▄▄ .
// ·██ ▐███▪▐█ ▀█ ▐█ ▀ ▪██ ▐█ ▌▪▐█ ▀█▪▐█ ▀█ •█▌ ▐█▐▌·
// ▐█ ▌▐▌▐█·▄█▀▀█ ▄█ ▀█▄▐█·██ ▄▄▐█▀▀█▄▄█▀▀█ ▐█▐ ▐▌▐▀▀▀
// ██ ██▌▐█▌▐█ ▪▐▌▐█▄▪▐█▐█▌▐███▌██▄▪▐█▐█ ▪▐▌██▐ █▌▐█▄▄▌
// ▀▀ █▪▀▀▀ ▀ ▀ ·▀▀▀▀ ▀▀▀·▀▀▀ ·▀▀▀▀ ▀ ▀ ▀▀ █▪ ▀▀▀
// Magicbane Emulator Project © 2013 - 2022
// www.magicbane.com
package engine.devcmd.cmds;
import engine.devcmd.AbstractDevCmd;
import engine.gameManager.ZoneManager;
import engine.objects.AbstractGameObject;
import engine.objects.PlayerCharacter;
import engine.objects.Zone;
public class AuditMobsCmd extends AbstractDevCmd {
public AuditMobsCmd() {
super("auditmobs");
}
@Override
protected void _doCmd(PlayerCharacter pcSender, String[] words,
AbstractGameObject target) {
if (pcSender == null)
return;
//get Zone to check mobs against
Zone zone;
if (words.length == 2) {
if (words[0].equals("all")) {
int plusplus = 0;
int count = Integer.parseInt(words[1]);
for (Zone zoneMicro : ZoneManager.getAllZones()) {
int size = zoneMicro.zoneMobSet.size();
if (size >= count) {
plusplus++;
throwbackInfo(pcSender, zoneMicro.getName() + " at location " + zoneMicro.getLoc().toString() + " has " + size + " mobs. ");
System.out.println(zoneMicro.getName() + " at location " + zoneMicro.getLoc().toString() + " has " + size + " mobs. ");
}
}
throwbackInfo(pcSender, " there are " + plusplus + " zones with at least " + count + " mobs in each.");
}
return;
}
if (words.length > 1) {
this.sendUsage(pcSender);
return;
} else if (words.length == 1) {
int uuid;
try {
uuid = Integer.parseInt(words[0]);
zone = ZoneManager.getZoneByUUID(uuid);
} catch (NumberFormatException e) {
zone = ZoneManager.findSmallestZone(pcSender.getLoc());
}
} else
zone = ZoneManager.findSmallestZone(pcSender.getLoc());
if (zone == null) {
throwbackError(pcSender, "Unable to find the zone");
return;
}
//get list of mobs for zone
if (zone.zoneMobSet.isEmpty()) {
throwbackError(pcSender, "No mobs found for this zone.");
return;
}
// ConcurrentHashMap<Integer, Mob> spawnMap = Mob.getSpawnMap();
//ConcurrentHashMap<Mob, Long> respawnMap = Mob.getRespawnMap();
// ConcurrentHashMap<Mob, Long> despawnMap = Mob.getDespawnMap();
throwbackInfo(pcSender, zone.getName() + ", numMobs: " + zone.zoneMobSet.size());
throwbackInfo(pcSender, "UUID, dbID, inRespawnMap, isAlive, activeAI, Loc");
//mob not found in spawn map, check respawn
boolean inRespawn = false;
}
@Override
protected String _getUsageString() {
return "' /auditmobs [zone.UUID]'";
}
@Override
protected String _getHelpString() {
return "Audits all the mobs in a zone.";
}
}

2
src/engine/devcmd/cmds/BoundsCmd.java

@ -9,8 +9,8 @@ @@ -9,8 +9,8 @@
package engine.devcmd.cmds;
import engine.Enum.GameObjectType;
import engine.devcmd.AbstractDevCmd;
import engine.mbEnums.GameObjectType;
import engine.objects.AbstractGameObject;
import engine.objects.Building;
import engine.objects.PlayerCharacter;

114
src/engine/devcmd/cmds/ChangeNameCmd.java

@ -1,114 +0,0 @@ @@ -1,114 +0,0 @@
// • ▌ ▄ ·. ▄▄▄· ▄▄ • ▪ ▄▄· ▄▄▄▄· ▄▄▄· ▐▄▄▄ ▄▄▄ .
// ·██ ▐███▪▐█ ▀█ ▐█ ▀ ▪██ ▐█ ▌▪▐█ ▀█▪▐█ ▀█ •█▌ ▐█▐▌·
// ▐█ ▌▐▌▐█·▄█▀▀█ ▄█ ▀█▄▐█·██ ▄▄▐█▀▀█▄▄█▀▀█ ▐█▐ ▐▌▐▀▀▀
// ██ ██▌▐█▌▐█ ▪▐▌▐█▄▪▐█▐█▌▐███▌██▄▪▐█▐█ ▪▐▌██▐ █▌▐█▄▄▌
// ▀▀ █▪▀▀▀ ▀ ▀ ·▀▀▀▀ ▀▀▀·▀▀▀ ·▀▀▀▀ ▀ ▀ ▀▀ █▪ ▀▀▀
// Magicbane Emulator Project © 2013 - 2022
// www.magicbane.com
package engine.devcmd.cmds;
import engine.devcmd.AbstractDevCmd;
import engine.gameManager.DbManager;
import engine.gameManager.SessionManager;
import engine.math.Vector3fImmutable;
import engine.objects.AbstractGameObject;
import engine.objects.PlayerCharacter;
import engine.util.MiscUtils;
public class ChangeNameCmd extends AbstractDevCmd {
public ChangeNameCmd() {
super("changename");
}
@Override
protected void _doCmd(PlayerCharacter pc, String[] words,
AbstractGameObject target) {
Vector3fImmutable loc = null;
// Arg Count Check
if (words.length < 2) {
this.sendUsage(pc);
return;
}
String oldFirst = words[0];
String newFirst = words[1];
String newLast = "";
if (words.length > 2) {
newLast = words[2];
for (int i = 3; i < words.length; i++)
newLast += ' ' + words[i];
}
//verify new name length
if (newFirst.length() < 3) {
this.throwbackError(pc, "Error: First name is incorrect length. Must be between 3 and 15 characters");
return;
}
//verify old name length
if (newLast.length() > 50) {
this.throwbackError(pc, "Error: Last name is incorrect length. Must be no more than 50 characters");
return;
}
// Check if firstname is valid
if (MiscUtils.checkIfFirstNameInvalid(newFirst)) {
this.throwbackError(pc, "Error: First name is not allowed");
return;
}
//get the world ID we're modifying for
//test if first name is unique, unless new and old first name are equal.
if (!(oldFirst.equals(newFirst))) {
if (!DbManager.PlayerCharacterQueries.IS_CHARACTER_NAME_UNIQUE(newFirst)) {
this.throwbackError(pc, "Error: First name is not unique.");
return;
}
}
//tests passed, update name in database
if (!DbManager.PlayerCharacterQueries.UPDATE_NAME(oldFirst, newFirst, newLast)) {
this.throwbackError(pc, "Error: Database failed to update the name.");
return;
}
//Finally update player ingame
PlayerCharacter pcTar = null;
try {
pcTar = SessionManager
.getPlayerCharacterByLowerCaseName(words[0]);
pcTar.setFirstName(newFirst);
pcTar.setLastName(newLast);
this.setTarget(pcTar); //for logging
//specify if last name is ascii characters only
String lastAscii = newLast.replaceAll("[^\\p{ASCII}]", "");
pcTar.setAsciiLastName(lastAscii.equals(newLast));
} catch (Exception e) {
this.throwbackError(pc, "Database was updated but ingame character failed to update.");
return;
}
String out = oldFirst + " was changed to " + newFirst + (newLast.isEmpty() ? "." : (' ' + newLast + '.'));
this.throwbackInfo(pc, out);
}
@Override
protected String _getHelpString() {
return "Changes the name of a player";
}
@Override
protected String _getUsageString() {
return "'./changename oldFirstName newFirstName newLastName'";
}
}

56
src/engine/devcmd/cmds/CombatMessageCmd.java

@ -1,56 +0,0 @@ @@ -1,56 +0,0 @@
// • ▌ ▄ ·. ▄▄▄· ▄▄ • ▪ ▄▄· ▄▄▄▄· ▄▄▄· ▐▄▄▄ ▄▄▄ .
// ·██ ▐███▪▐█ ▀█ ▐█ ▀ ▪██ ▐█ ▌▪▐█ ▀█▪▐█ ▀█ •█▌ ▐█▐▌·
// ▐█ ▌▐▌▐█·▄█▀▀█ ▄█ ▀█▄▐█·██ ▄▄▐█▀▀█▄▄█▀▀█ ▐█▐ ▐▌▐▀▀▀
// ██ ██▌▐█▌▐█ ▪▐▌▐█▄▪▐█▐█▌▐███▌██▄▪▐█▐█ ▪▐▌██▐ █▌▐█▄▄▌
// ▀▀ █▪▀▀▀ ▀ ▀ ·▀▀▀▀ ▀▀▀·▀▀▀ ·▀▀▀▀ ▀ ▀ ▀▀ █▪ ▀▀▀
// Magicbane Emulator Project © 2013 - 2022
// www.magicbane.com
package engine.devcmd.cmds;
import engine.devcmd.AbstractDevCmd;
import engine.net.client.msg.TargetedActionMsg;
import engine.objects.AbstractGameObject;
import engine.objects.PlayerCharacter;
/**
* @author Eighty
*/
public class CombatMessageCmd extends AbstractDevCmd {
public CombatMessageCmd() {
super("cm");
}
@Override
protected void _doCmd(PlayerCharacter pcSender, String[] args,
AbstractGameObject target) {
if (pcSender == null)
return;
if (args.length != 1) {
this.sendUsage(pcSender);
return;
}
int num = 0;
try {
num = Integer.parseInt(args[0]);
} catch (NumberFormatException e) {
throwbackError(pcSender, "Supplied message number " + args[0] + " failed to parse to an Integer");
return;
}
TargetedActionMsg.un2cnt = num;
throwbackInfo(pcSender, "CombatMessage set to " + num);
}
@Override
protected String _getUsageString() {
return "' /cm [cmNumber]'";
}
@Override
protected String _getHelpString() {
return "Sets the combat message to the supplied integer value";
}
}

50
src/engine/devcmd/cmds/CreateItemCmd.java

@ -10,10 +10,14 @@ @@ -10,10 +10,14 @@
package engine.devcmd.cmds;
import engine.devcmd.AbstractDevCmd;
import engine.gameManager.ChatManager;
import engine.gameManager.DbManager;
import engine.mbEnums;
import engine.objects.AbstractGameObject;
import engine.objects.ItemBase;
import engine.objects.ItemFactory;
import engine.objects.Item;
import engine.objects.ItemTemplate;
import engine.objects.PlayerCharacter;
import org.pmw.tinylog.Logger;
/**
* @author Eighty
@ -25,30 +29,46 @@ public class CreateItemCmd extends AbstractDevCmd { @@ -25,30 +29,46 @@ public class CreateItemCmd extends AbstractDevCmd {
}
@Override
protected void _doCmd(PlayerCharacter pc, String[] words,
protected void _doCmd(PlayerCharacter playerCharacter, String[] words,
AbstractGameObject target) {
if (words.length < 2) {
this.sendUsage(pc);
this.sendUsage(playerCharacter);
return;
}
int id;
id = ItemBase.getIDByName(words[0]);
if (id == 0)
id = Integer.parseInt(words[0]);
if (id == 7) {
this.throwbackInfo(pc, "use /addgold to add gold.....");
int templateID = Integer.parseInt(words[0]);
ItemTemplate template = ItemTemplate.templates.get(templateID);
if (template == null) {
ChatManager.chatSystemInfo(playerCharacter, "No such template found.");
return;
}
int size = 1;
if (words.length < 3) {
if (words.length == 2)
size = Integer.parseInt(words[1]);
}
ItemFactory.fillInventory(pc, id, size);
for (int i = 0; i < size; i++) {
if (!playerCharacter.charItemManager.hasRoomInventory(template.item_wt)) {
ChatManager.chatSystemInfo(playerCharacter, "You are encumbered!.");
break;
}
Item item = new Item(templateID);
item.ownerID = playerCharacter.getObjectUUID();
item.ownerType = mbEnums.OwnerType.PlayerCharacter;
item.containerType = mbEnums.ItemContainerType.INVENTORY;
try {
item = DbManager.ItemQueries.PERSIST(item);
playerCharacter.charItemManager.addItemToInventory(item);
} catch (Exception e) {
Logger.error(e);
}
}
playerCharacter.charItemManager.updateInventory();
}
@Override
@ -58,7 +78,7 @@ public class CreateItemCmd extends AbstractDevCmd { @@ -58,7 +78,7 @@ public class CreateItemCmd extends AbstractDevCmd {
@Override
protected String _getUsageString() {
return "' /createitem <ItembaseID> <quantity>'";
return "' /createitem <templateID> <quantity>'";
}
}

122
src/engine/devcmd/cmds/DebugCmd.java

@ -1,122 +0,0 @@ @@ -1,122 +0,0 @@
// • ▌ ▄ ·. ▄▄▄· ▄▄ • ▪ ▄▄· ▄▄▄▄· ▄▄▄· ▐▄▄▄ ▄▄▄ .
// ·██ ▐███▪▐█ ▀█ ▐█ ▀ ▪██ ▐█ ▌▪▐█ ▀█▪▐█ ▀█ •█▌ ▐█▐▌·
// ▐█ ▌▐▌▐█·▄█▀▀█ ▄█ ▀█▄▐█·██ ▄▄▐█▀▀█▄▄█▀▀█ ▐█▐ ▐▌▐▀▀▀
// ██ ██▌▐█▌▐█ ▪▐▌▐█▄▪▐█▐█▌▐███▌██▄▪▐█▐█ ▪▐▌██▐ █▌▐█▄▄▌
// ▀▀ █▪▀▀▀ ▀ ▀ ·▀▀▀▀ ▀▀▀·▀▀▀ ·▀▀▀▀ ▀ ▀ ▀▀ █▪ ▀▀▀
// Magicbane Emulator Project © 2013 - 2022
// www.magicbane.com
package engine.devcmd.cmds;
import engine.devcmd.AbstractDevCmd;
import engine.jobs.DebugTimerJob;
import engine.objects.AbstractGameObject;
import engine.objects.PlayerCharacter;
public class DebugCmd extends AbstractDevCmd {
public DebugCmd() {
super("debug");
// super("debug", MBServerStatics.ACCESS_GROUP_ALL_TEAM, 0, false, false);
}
private static void toggleDebugTimer(PlayerCharacter pc, String name, int num, int duration, boolean toggle) {
if (toggle) {
DebugTimerJob dtj = new DebugTimerJob(pc, name, num, duration);
pc.renewTimer(name, dtj, duration);
} else
pc.cancelTimer(name);
}
@Override
protected void _doCmd(PlayerCharacter pc, String[] words,
AbstractGameObject target) {
if (words.length < 2) {
this.sendUsage(pc);
return;
}
if (pc == null)
return;
//pc.setDebug must use bit sizes: 1, 2, 4, 8, 16, 32
String command = words[0].toLowerCase();
boolean toggle = (words[1].toLowerCase().equals("on")) ? true : false;
switch (command) {
case "magictrek":
pc.RUN_MAGICTREK = toggle;
break;
case "combat":
pc.setDebug(64, toggle);
break;
case "health":
toggleDebugTimer(pc, "Debug_Health", 1, 1000, toggle);
break;
case "mana":
toggleDebugTimer(pc, "Debug_Mana", 2, 1000, toggle);
break;
case "stamina":
toggleDebugTimer(pc, "Debug_Stamina", 3, 500, toggle);
break;
case "spells":
pc.setDebug(16, toggle);
break;
case "damageabsorber":
pc.setDebug(2, toggle);
break;
case "recast":
case "recycle":
pc.setDebug(4, toggle);
break;
case "seeinvis":
pc.setDebug(8, toggle);
break;
case "movement":
pc.setDebug(1, toggle);
break;
case "noaggro":
pc.setDebug(32, toggle);
break;
// case "loot":
// MBServerStatics.debugLoot = toggle;
// break;
default:
String output = "Debug for " + command + " not found.";
throwbackError(pc, output);
return;
}
setTarget(pc); //for logging
String output = "Debug for " + command + " turned " + ((toggle) ? "on." : "off.");
throwbackInfo(pc, output);
}
@Override
protected String _getHelpString() {
return "Runs debug commands";
}
@Override
protected String _getUsageString() {
return "'./Debug command on/off'";
}
}

66
src/engine/devcmd/cmds/DespawnCmd.java

@ -1,66 +0,0 @@ @@ -1,66 +0,0 @@
// • ▌ ▄ ·. ▄▄▄· ▄▄ • ▪ ▄▄· ▄▄▄▄· ▄▄▄· ▐▄▄▄ ▄▄▄ .
// ·██ ▐███▪▐█ ▀█ ▐█ ▀ ▪██ ▐█ ▌▪▐█ ▀█▪▐█ ▀█ •█▌ ▐█▐▌·
// ▐█ ▌▐▌▐█·▄█▀▀█ ▄█ ▀█▄▐█·██ ▄▄▐█▀▀█▄▄█▀▀█ ▐█▐ ▐▌▐▀▀▀
// ██ ██▌▐█▌▐█ ▪▐▌▐█▄▪▐█▐█▌▐███▌██▄▪▐█▐█ ▪▐▌██▐ █▌▐█▄▄▌
// ▀▀ █▪▀▀▀ ▀ ▀ ·▀▀▀▀ ▀▀▀·▀▀▀ ·▀▀▀▀ ▀ ▀ ▀▀ █▪ ▀▀▀
// Magicbane Emulator Project © 2013 - 2022
// www.magicbane.com
package engine.devcmd.cmds;
import engine.Enum.GameObjectType;
import engine.devcmd.AbstractDevCmd;
import engine.objects.AbstractGameObject;
import engine.objects.Mob;
import engine.objects.PlayerCharacter;
public class DespawnCmd extends AbstractDevCmd {
public DespawnCmd() {
super("debugmob");
}
@Override
protected void _doCmd(PlayerCharacter pc, String[] words,
AbstractGameObject target) {
if (pc == null) {
return;
}
Mob mob = null;
if (target != null && target.getObjectType().equals(GameObjectType.Mob))
mob = (Mob) target;
if (mob == null)
mob = Mob.getFromCache(Integer.parseInt(words[1]));
if (mob == null)
return;
if (words[0].equalsIgnoreCase("respawn")) {
mob.respawn();
this.throwbackInfo(pc, "Mob with ID " + mob.getObjectUUID() + " Respawned");
} else if (words[0].equalsIgnoreCase("despawn")) {
mob.despawn();
this.throwbackInfo(pc, "Mob with ID " + mob.getObjectUUID() + " Despawned");
}
}
@Override
protected String _getHelpString() {
return "Gets distance from a target.";
}
@Override
protected String _getUsageString() {
return "' /distance'";
}
}

65
src/engine/devcmd/cmds/DistanceCmd.java

@ -1,65 +0,0 @@ @@ -1,65 +0,0 @@
// • ▌ ▄ ·. ▄▄▄· ▄▄ • ▪ ▄▄· ▄▄▄▄· ▄▄▄· ▐▄▄▄ ▄▄▄ .
// ·██ ▐███▪▐█ ▀█ ▐█ ▀ ▪██ ▐█ ▌▪▐█ ▀█▪▐█ ▀█ •█▌ ▐█▐▌·
// ▐█ ▌▐▌▐█·▄█▀▀█ ▄█ ▀█▄▐█·██ ▄▄▐█▀▀█▄▄█▀▀█ ▐█▐ ▐▌▐▀▀▀
// ██ ██▌▐█▌▐█ ▪▐▌▐█▄▪▐█▐█▌▐███▌██▄▪▐█▐█ ▪▐▌██▐ █▌▐█▄▄▌
// ▀▀ █▪▀▀▀ ▀ ▀ ·▀▀▀▀ ▀▀▀·▀▀▀ ·▀▀▀▀ ▀ ▀ ▀▀ █▪ ▀▀▀
// Magicbane Emulator Project © 2013 - 2022
// www.magicbane.com
package engine.devcmd.cmds;
import engine.devcmd.AbstractDevCmd;
import engine.math.Vector3fImmutable;
import engine.objects.AbstractGameObject;
import engine.objects.AbstractWorldObject;
import engine.objects.PlayerCharacter;
public class DistanceCmd extends AbstractDevCmd {
public DistanceCmd() {
super("distance");
}
@Override
protected void _doCmd(PlayerCharacter pc, String[] words,
AbstractGameObject target) {
// Arg Count Check
if (words.length != 1) {
this.sendUsage(pc);
return;
}
if (pc == null) {
return;
}
if (target == null || !(target instanceof AbstractWorldObject)) {
throwbackError(pc, "No target found.");
return;
}
AbstractWorldObject awoTarget = (AbstractWorldObject) target;
Vector3fImmutable pcLoc = pc.getLoc();
Vector3fImmutable tarLoc = awoTarget.getLoc();
String out = "Distance: " + pcLoc.distance(tarLoc) +
"\r\nYour Loc: " + pcLoc.x + 'x' + pcLoc.y + 'x' + pcLoc.z +
"\r\nTarget Loc: " + tarLoc.x + 'x' + tarLoc.y + 'x' + tarLoc.z;
throwbackInfo(pc, out);
}
@Override
protected String _getHelpString() {
return "Gets distance from a target.";
}
@Override
protected String _getUsageString() {
return "' /distance'";
}
}

61
src/engine/devcmd/cmds/EffectCmd.java

@ -1,61 +0,0 @@ @@ -1,61 +0,0 @@
// • ▌ ▄ ·. ▄▄▄· ▄▄ • ▪ ▄▄· ▄▄▄▄· ▄▄▄· ▐▄▄▄ ▄▄▄ .
// ·██ ▐███▪▐█ ▀█ ▐█ ▀ ▪██ ▐█ ▌▪▐█ ▀█▪▐█ ▀█ •█▌ ▐█▐▌·
// ▐█ ▌▐▌▐█·▄█▀▀█ ▄█ ▀█▄▐█·██ ▄▄▐█▀▀█▄▄█▀▀█ ▐█▐ ▐▌▐▀▀▀
// ██ ██▌▐█▌▐█ ▪▐▌▐█▄▪▐█▐█▌▐███▌██▄▪▐█▐█ ▪▐▌██▐ █▌▐█▄▄▌
// ▀▀ █▪▀▀▀ ▀ ▀ ·▀▀▀▀ ▀▀▀·▀▀▀ ·▀▀▀▀ ▀ ▀ ▀▀ █▪ ▀▀▀
// Magicbane Emulator Project © 2013 - 2022
// www.magicbane.com
package engine.devcmd.cmds;
import engine.devcmd.AbstractDevCmd;
import engine.gameManager.ChatManager;
import engine.gameManager.PowersManager;
import engine.objects.AbstractGameObject;
import engine.objects.PlayerCharacter;
import engine.powers.EffectsBase;
/**
* @author Eighty
*/
public class EffectCmd extends AbstractDevCmd {
public EffectCmd() {
super("effect");
}
@Override
protected void _doCmd(PlayerCharacter pcSender, String[] args,
AbstractGameObject target) {
int ID = 0;
int token = 0;
if (args.length != 2) {
this.sendUsage(pcSender);
return;
}
ID = Integer.parseInt(args[0]);
token = Integer.parseInt(args[1]);
EffectsBase eb = PowersManager.setEffectToken(ID, token);
if (eb == null) {
throwbackError(pcSender, "Unable to find EffectsBase " + ID
+ " to modify.");
return;
}
ChatManager.chatSayInfo(pcSender,
"EffectsBase with ID " + ID + " changed token to " + token);
}
@Override
protected String _getUsageString() {
return "' /effect EffectsBaseID Token'";
}
@Override
protected String _getHelpString() {
return "Temporarily places the effect token with the corresponding EffectsBase on the server";
}
}

87
src/engine/devcmd/cmds/EnchantCmd.java

@ -1,87 +0,0 @@ @@ -1,87 +0,0 @@
// • ▌ ▄ ·. ▄▄▄· ▄▄ • ▪ ▄▄· ▄▄▄▄· ▄▄▄· ▐▄▄▄ ▄▄▄ .
// ·██ ▐███▪▐█ ▀█ ▐█ ▀ ▪██ ▐█ ▌▪▐█ ▀█▪▐█ ▀█ •█▌ ▐█▐▌·
// ▐█ ▌▐▌▐█·▄█▀▀█ ▄█ ▀█▄▐█·██ ▄▄▐█▀▀█▄▄█▀▀█ ▐█▐ ▐▌▐▀▀▀
// ██ ██▌▐█▌▐█ ▪▐▌▐█▄▪▐█▐█▌▐███▌██▄▪▐█▐█ ▪▐▌██▐ █▌▐█▄▄▌
// ▀▀ █▪▀▀▀ ▀ ▀ ·▀▀▀▀ ▀▀▀·▀▀▀ ·▀▀▀▀ ▀ ▀ ▀▀ █▪ ▀▀▀
// Magicbane Emulator Project © 2013 - 2022
// www.magicbane.com
package engine.devcmd.cmds;
import engine.devcmd.AbstractDevCmd;
import engine.objects.*;
public class EnchantCmd extends AbstractDevCmd {
public EnchantCmd() {
super("enchant");
}
@Override
protected void _doCmd(PlayerCharacter pc, String[] words,
AbstractGameObject target) {
int rank = 0;
if (words.length < 1) {
this.sendUsage(pc);
return;
}
try {
rank = Integer.parseInt(words[0]);
} catch (Exception e) {
}
Item item;
if (target == null || target instanceof Item)
item = (Item) target;
else {
throwbackError(pc, "Must have an item targeted");
return;
}
CharacterItemManager cim = pc.getCharItemManager();
if (cim == null) {
throwbackError(pc, "Unable to find the character item manager for player " + pc.getFirstName() + '.');
return;
}
if (words[0].equals("clear")) {
item.clearEnchantments();
cim.updateInventory();
this.setResult(String.valueOf(item.getObjectUUID()));
} else {
int cnt = words.length;
for (int i = 1; i < cnt; i++) {
String enchant = words[i];
boolean valid = true;
for (Effect eff : item.getEffects().values()) {
if (eff.getEffectsBase().getIDString().equals(enchant)) {
throwbackError(pc, "This item already has that enchantment");
return;
}
}
if (valid) {
item.addPermanentEnchantmentForDev(enchant, rank);
this.setResult(String.valueOf(item.getObjectUUID()));
} else
throwbackError(pc, "Invalid Enchantment. Enchantment must consist of SUF-001 to SUF-328 or PRE-001 to PRE-334. Sent " + enchant + '.');
}
cim.updateInventory();
}
}
@Override
protected String _getHelpString() {
return "Enchants an item with a prefix and suffix";
}
@Override
protected String _getUsageString() {
return "' /enchant clear/Enchant1 Enchant2 Enchant3 ...'";
}
}

84
src/engine/devcmd/cmds/GateInfoCmd.java

@ -1,84 +0,0 @@ @@ -1,84 +0,0 @@
package engine.devcmd.cmds;
import engine.Enum.BuildingGroup;
import engine.Enum.GameObjectType;
import engine.devcmd.AbstractDevCmd;
import engine.math.Vector3fImmutable;
import engine.objects.*;
public class GateInfoCmd extends AbstractDevCmd {
public GateInfoCmd() {
super("gateinfo");
}
// AbstractDevCmd Overridden methods
@Override
protected void _doCmd(PlayerCharacter player, String[] args,
AbstractGameObject target) {
Building targetBuilding;
String outString;
Runegate runeGate;
Blueprint blueprint;
String newline = "\r\n ";
targetBuilding = (Building) target;
if (targetBuilding.getObjectType() != GameObjectType.Building) {
throwbackInfo(player, "GateInfo: target must be a Building");
throwbackInfo(player, "Found" + targetBuilding.getObjectType().toString());
return;
}
blueprint = Blueprint._meshLookup.get(targetBuilding.getMeshUUID());
if (blueprint == null ||
(blueprint.getBuildingGroup() != BuildingGroup.RUNEGATE)) {
throwbackInfo(player, "showgate: target must be a Runegate");
return;
}
runeGate = Runegate._runegates.get(targetBuilding.getObjectUUID());
outString = "RungateType: " + runeGate.gateBuilding.getName();
outString += newline;
outString += "Portal State:";
outString += newline;
for (Portal portal : runeGate.getPortals()) {
outString += "Portal: " + portal.portalType.name();
outString += " Active: " + portal.isActive();
outString += " Dest: " + portal.targetGate.getName();
outString += newline;
outString += " Origin: " + portal.getPortalLocation().x + 'x';
outString += " " + portal.getPortalLocation().y + 'y';
outString += newline;
Vector3fImmutable offset = portal.getPortalLocation().subtract(targetBuilding.getLoc());
outString += " Offset: " + offset.x + "x " + offset.z + 'y';
outString += newline;
outString += newline;
}
outString += newline;
throwbackInfo(player, outString);
}
@Override
protected String _getHelpString() {
return "Displays a runegate's gate status";
}
@Override
protected String _getUsageString() {
return "/gateinfo <target runegate> \n";
}
}

217
src/engine/devcmd/cmds/GetHeightCmd.java

@ -9,11 +9,10 @@ @@ -9,11 +9,10 @@
package engine.devcmd.cmds;
import engine.InterestManagement.HeightMap;
import engine.InterestManagement.Terrain;
import engine.devcmd.AbstractDevCmd;
import engine.gameManager.ZoneManager;
import engine.math.Vector2f;
import engine.math.Vector3fImmutable;
import engine.objects.AbstractGameObject;
import engine.objects.PlayerCharacter;
import engine.objects.Zone;
@ -22,205 +21,79 @@ public class GetHeightCmd extends AbstractDevCmd { @@ -22,205 +21,79 @@ public class GetHeightCmd extends AbstractDevCmd {
public GetHeightCmd() {
super("getHeight");
this.addCmdString("height");
}
@Override
protected void _doCmd(PlayerCharacter pc, String[] words,
protected void _doCmd(PlayerCharacter playerCharacter, String[] words,
AbstractGameObject target) {
boolean end = true;
Zone currentZone;
Zone parentZone;
Zone heightmapZone;
float height = HeightMap.getWorldHeight(pc);
currentZone = ZoneManager.findSmallestZone(playerCharacter.getLoc());
heightmapZone = Terrain.getNextZoneWithTerrain(currentZone);
parentZone = Terrain.getNextZoneWithTerrain(currentZone.parent);
this.throwbackInfo(pc, "Altitude : " + height);
Vector2f childZoneLoc = ZoneManager.worldToTerrainSpace(playerCharacter.getLoc(), heightmapZone);
Vector2f childZoneOffset = ZoneManager.worldToZoneOffset(playerCharacter.getLoc(), heightmapZone);
Vector2f normalizedOffset = new Vector2f(Math.abs(childZoneOffset.x) / heightmapZone.template.major_radius,
Math.abs(childZoneOffset.y) / heightmapZone.template.minor_radius);
Vector2f parentZoneLoc = ZoneManager.worldToTerrainSpace(playerCharacter.getLoc(), parentZone);
this.throwbackInfo(pc, "Character Height: " + pc.getCharacterHeight());
this.throwbackInfo(pc, "Character Height to start swimming: " + pc.centerHeight);
float childHeight = heightmapZone.terrain.getInterpolatedTerrainHeight(childZoneLoc);
childHeight = childHeight + heightmapZone.global_height;
Zone zone = ZoneManager.findSmallestZone(pc.getLoc());
this.throwbackInfo(pc, "Water Level : " + zone.getSeaLevel());
this.throwbackInfo(pc, "Character Water Level Above : " + (pc.getCharacterHeight() + height - zone.getSeaLevel()));
float parentHeight = parentZone.terrain.getInterpolatedTerrainHeight(parentZoneLoc);
parentHeight += parentZone.global_height;
if (end)
return;
float blendedHeight = Terrain.getWorldHeight(currentZone, playerCharacter.getLoc());
Vector2f gridSquare;
Vector2f gridOffset;
Vector2f parentGrid;
Vector2f parentLoc = new Vector2f(-1, -1);
Vector2f terrainCell = heightmapZone.terrain.getTerrainCell(childZoneLoc);
Vector2f cell_offset = new Vector2f(terrainCell.x % 1, terrainCell.y % 1);
Zone currentZone = ZoneManager.findSmallestZone(pc.getLoc());
terrainCell.x = (float) Math.floor(terrainCell.x);
terrainCell.y = (float) Math.floor(terrainCell.y);
if (currentZone == null)
return;
Zone parentZone = currentZone.getParent();
short top_left_pixel = heightmapZone.terrain.terrain_pixel_data[(int) terrainCell.x][(int) terrainCell.y];
short top_right_pixel = heightmapZone.terrain.terrain_pixel_data[(int) terrainCell.x + 1][(int) terrainCell.y];
short bottom_left_pixel = heightmapZone.terrain.terrain_pixel_data[(int) terrainCell.x][(int) terrainCell.y + 1];
short bottom_right_pixel = heightmapZone.terrain.terrain_pixel_data[(int) terrainCell.x + 1][(int) terrainCell.y + 1];
HeightMap heightMap = currentZone.getHeightMap();
this.throwbackInfo(playerCharacter, "Current Zone : " + currentZone.zoneName);
this.throwbackInfo(playerCharacter, "Heightmap Zone : " + heightmapZone.zoneName);
this.throwbackInfo(playerCharacter, "Parent Zone: " + parentZone.zoneName);
this.throwbackInfo(playerCharacter, "Player loc: " + "[" + playerCharacter.loc.x + "]" + "[" + playerCharacter.loc.y + "]" + "[" + playerCharacter.loc.z + "]");
//find the next parents heightmap if the currentzone heightmap is null.
while (heightMap == null) {
this.throwbackInfo(playerCharacter, "Terrain Cell : " + "[" + terrainCell.x + "]" + "[" + terrainCell.y + "]");
this.throwbackInfo(playerCharacter, "Cell Offset : " + "[" + cell_offset.x + "]" + "[" + cell_offset.y + "]");
this.throwbackInfo(playerCharacter, "Pixels : " + "[" + top_left_pixel + "]" + "[" + top_right_pixel + "]");
this.throwbackInfo(playerCharacter, "Pixels : " + "[" + bottom_left_pixel + "]" + "[" + bottom_right_pixel + "]");
if (currentZone == ZoneManager.getSeaFloor()) {
this.throwbackInfo(pc, "Could not find a heightmap to get height.");
break;
}
this.throwbackInfo(playerCharacter, "Child Zone Offset: " + "[" + childZoneOffset.x + "]" + "[" + childZoneOffset.y + "]");
this.throwbackInfo(playerCharacter, "Normalized offset: " + "[" + normalizedOffset.x + "]" + "[" + normalizedOffset.y + "]");
this.throwbackInfo(playerCharacter, "template blend Values: (max/min): " + heightmapZone.template.max_blend + " /" + heightmapZone.template.min_blend);
this.throwbackInfo(playerCharacter, "terrain values (max/min): " + heightmapZone.terrain.blend_values.x + " /" + heightmapZone.terrain.blend_values.y);
this.throwbackInfo(playerCharacter, "Blend coefficient: " + heightmapZone.terrain.getTerrainBlendCoefficient(childZoneOffset));
this.throwbackError(pc, "Heightmap does not exist for " + currentZone.getName());
this.throwbackInfo(pc, "Using parent zone instead: ");
currentZone = currentZone.getParent();
heightMap = currentZone.getHeightMap();
}
if ((heightMap == null) || (currentZone == ZoneManager.getSeaFloor())) {
this.throwbackInfo(pc, currentZone.getName() + " has no heightmap ");
this.throwbackInfo(pc, "Current altitude: " + currentZone.absY);
return;
}
Vector2f zoneLoc = ZoneManager.worldToZoneSpace(pc.getLoc(), currentZone);
Vector3fImmutable seaFloorLocalLoc = ZoneManager.worldToLocal(pc.getLoc(), ZoneManager.getSeaFloor());
this.throwbackInfo(pc, "SeaFloor Local : " + seaFloorLocalLoc.x + " , " + seaFloorLocalLoc.y);
this.throwbackInfo(pc, "Local Zone Location : " + zoneLoc.x + " , " + zoneLoc.y);
Vector3fImmutable localLocFromCenter = ZoneManager.worldToLocal(pc.getLoc(), currentZone);
Vector3fImmutable parentLocFromCenter = ZoneManager.worldToLocal(pc.getLoc(), currentZone.getParent());
this.throwbackInfo(pc, "Local Zone Location from center : " + localLocFromCenter);
this.throwbackInfo(pc, "parent Zone Location from center : " + parentLocFromCenter);
Vector2f parentZoneLoc = ZoneManager.worldToZoneSpace(pc.getLoc(), currentZone.getParent());
this.throwbackInfo(pc, "Parent Zone Location from Bottom Left : " + parentZoneLoc);
if ((parentZone != null) && (parentZone.getHeightMap() != null)) {
parentLoc = ZoneManager.worldToZoneSpace(pc.getLoc(), parentZone);
parentGrid = parentZone.getHeightMap().getGridSquare(parentLoc);
} else
parentGrid = new Vector2f(-1, -1);
gridSquare = heightMap.getGridSquare(zoneLoc);
gridOffset = HeightMap.getGridOffset(gridSquare);
float interaltitude = currentZone.getHeightMap().getInterpolatedTerrainHeight(zoneLoc);
this.throwbackInfo(pc, currentZone.getName());
this.throwbackInfo(pc, "Current Grid Square: " + gridSquare.x + " , " + gridSquare.y);
this.throwbackInfo(pc, "Grid Offset: " + gridOffset.x + " , " + gridOffset.y);
this.throwbackInfo(pc, "Parent Grid: " + parentGrid.x + " , " + parentGrid.y);
if (parentGrid.x != -1) {
float parentAltitude = parentZone.getHeightMap().getInterpolatedTerrainHeight(parentLoc);
this.throwbackInfo(pc, "Parent ALTITUDE: " + (parentAltitude));
this.throwbackInfo(pc, "Parent Interpolation: " + (parentAltitude + parentZone.getWorldAltitude()));
}
this.throwbackInfo(pc, "interpolated height: " + interaltitude);
this.throwbackInfo(pc, "interpolated height with World: " + (interaltitude + currentZone.getWorldAltitude()));
float realWorldAltitude = interaltitude + currentZone.getWorldAltitude();
//OUTSET
if (parentZone != null) {
float parentXRadius = currentZone.getBounds().getHalfExtents().x;
float parentZRadius = currentZone.getBounds().getHalfExtents().y;
float offsetX = Math.abs((localLocFromCenter.x / parentXRadius));
float offsetZ = Math.abs((localLocFromCenter.z / parentZRadius));
float bucketScaleX = 100 / parentXRadius;
float bucketScaleZ = 200 / parentZRadius;
float outsideGridSizeX = 1 - bucketScaleX; //32/256
float outsideGridSizeZ = 1 - bucketScaleZ;
float weight;
double scale;
if (offsetX > outsideGridSizeX && offsetX > offsetZ) {
weight = (offsetX - outsideGridSizeX) / bucketScaleX;
scale = Math.atan2((.5 - weight) * 3.1415927, 1);
float scaleChild = (float) ((scale + 1) * .5);
float scaleParent = 1 - scaleChild;
float parentAltitude = parentZone.getHeightMap().getInterpolatedTerrainHeight(parentLoc);
float parentCenterAltitude = parentZone.getHeightMap().getInterpolatedTerrainHeight(ZoneManager.worldToZoneSpace(currentZone.getLoc(), parentZone));
parentCenterAltitude += currentZone.getYCoord();
parentCenterAltitude += interaltitude;
float firstScale = parentAltitude * scaleParent;
float secondScale = parentCenterAltitude * scaleChild;
float outsetALt = firstScale + secondScale;
outsetALt += currentZone.getParent().getAbsY();
realWorldAltitude = outsetALt;
} else if (offsetZ > outsideGridSizeZ) {
weight = (offsetZ - outsideGridSizeZ) / bucketScaleZ;
scale = Math.atan2((.5 - weight) * 3.1415927, 1);
float scaleChild = (float) ((scale + 1) * .5);
float scaleParent = 1 - scaleChild;
float parentAltitude = parentZone.getHeightMap().getInterpolatedTerrainHeight(parentLoc);
float parentCenterAltitude = parentZone.getHeightMap().getInterpolatedTerrainHeight(ZoneManager.worldToZoneSpace(currentZone.getLoc(), parentZone));
parentCenterAltitude += currentZone.getYCoord();
parentCenterAltitude += interaltitude;
float firstScale = parentAltitude * scaleParent;
float secondScale = parentCenterAltitude * scaleChild;
float outsetALt = firstScale + secondScale;
outsetALt += currentZone.getParent().getAbsY();
realWorldAltitude = outsetALt;
}
}
float strMod = pc.statStrBase - 40;
strMod *= .00999999998f;
strMod += 1f;
float radius = 0;
switch (pc.getRaceID()) {
case 2017:
radius = 3.1415927f;
case 2000:
}
strMod *= 1.5707964f;
strMod += 3.1415927f;
strMod -= .5f;
realWorldAltitude += strMod;
this.throwbackInfo(pc, "interpolated height with World: " + realWorldAltitude);
this.throwbackInfo(playerCharacter, "------------");
this.throwbackInfo(playerCharacter, "Child Height at loc: " + Math.ceil(childHeight));
this.throwbackInfo(playerCharacter, "Parent Height at loc: " + Math.ceil(parentHeight));
this.throwbackInfo(playerCharacter, "Blended Height (Ceil): " + blendedHeight + " (" + Math.ceil(blendedHeight) + ")");
}
@Override
protected String _getHelpString() {
return "Temporarily Changes SubRace";
return "Queries heightmap engine";
}
@Override
protected String _getUsageString() {
return "' /subrace mobBaseID";
return "' /getheight";
}
}

58
src/engine/devcmd/cmds/GetMemoryCmd.java

@ -1,58 +0,0 @@ @@ -1,58 +0,0 @@
// • ▌ ▄ ·. ▄▄▄· ▄▄ • ▪ ▄▄· ▄▄▄▄· ▄▄▄· ▐▄▄▄ ▄▄▄ .
// ·██ ▐███▪▐█ ▀█ ▐█ ▀ ▪██ ▐█ ▌▪▐█ ▀█▪▐█ ▀█ •█▌ ▐█▐▌·
// ▐█ ▌▐▌▐█·▄█▀▀█ ▄█ ▀█▄▐█·██ ▄▄▐█▀▀█▄▄█▀▀█ ▐█▐ ▐▌▐▀▀▀
// ██ ██▌▐█▌▐█ ▪▐▌▐█▄▪▐█▐█▌▐███▌██▄▪▐█▐█ ▪▐▌██▐ █▌▐█▄▄▌
// ▀▀ █▪▀▀▀ ▀ ▀ ·▀▀▀▀ ▀▀▀·▀▀▀ ·▀▀▀▀ ▀ ▀ ▀▀ █▪ ▀▀▀
// Magicbane Emulator Project © 2013 - 2022
// www.magicbane.com
package engine.devcmd.cmds;
import engine.devcmd.AbstractDevCmd;
import engine.objects.AbstractGameObject;
import engine.objects.PlayerCharacter;
public class GetMemoryCmd extends AbstractDevCmd {
public GetMemoryCmd() {
super("getmemory");
}
public static String getMemoryOutput(long memory) {
String out = "";
if (memory > 1073741824)
return (memory / 1073741824) + "GB";
else if (memory > 1048576)
return (memory / 1048576) + "MB";
else if (memory > 1024)
return (memory / 1048576) + "KB";
else
return memory + "B";
}
@Override
protected void _doCmd(PlayerCharacter pcSender, String[] words,
AbstractGameObject target) {
if (pcSender == null)
return;
String hSize = getMemoryOutput(Runtime.getRuntime().totalMemory());
String mhSize = getMemoryOutput(Runtime.getRuntime().maxMemory());
String fhSize = getMemoryOutput(Runtime.getRuntime().freeMemory());
String out = "Heap Size: " + hSize + ", Max Heap Size: " + mhSize + ", Free Heap Size: " + fhSize;
throwbackInfo(pcSender, out);
}
@Override
protected String _getUsageString() {
return "' /getmemory'";
}
@Override
protected String _getHelpString() {
return "lists memory usage";
}
}

2
src/engine/devcmd/cmds/GetOffsetCmd.java

@ -48,7 +48,7 @@ public class GetOffsetCmd extends AbstractDevCmd { @@ -48,7 +48,7 @@ public class GetOffsetCmd extends AbstractDevCmd {
float difY = pcSender.getLoc().y - zone.absY;
float difZ = pcSender.getLoc().z - zone.absZ;
throwbackInfo(pcSender, zone.getName() + ": (x: " + difX + ", y: " + difY + ", z: " + difZ + ')');
throwbackInfo(pcSender, zone.zoneName + ": (x: " + difX + ", y: " + difY + ", z: " + difZ + ')');
}
@Override

4
src/engine/devcmd/cmds/GetVaultCmd.java

@ -12,7 +12,7 @@ package engine.devcmd.cmds; @@ -12,7 +12,7 @@ package engine.devcmd.cmds;
import engine.devcmd.AbstractDevCmd;
import engine.gameManager.SessionManager;
import engine.net.client.ClientConnection;
import engine.net.client.msg.VendorDialogMsg;
import engine.net.client.handlers.VendorDialogMsgHandler;
import engine.objects.AbstractGameObject;
import engine.objects.PlayerCharacter;
@ -32,7 +32,7 @@ public class GetVaultCmd extends AbstractDevCmd { @@ -32,7 +32,7 @@ public class GetVaultCmd extends AbstractDevCmd {
if (cc == null)
return;
VendorDialogMsg.getVault(pcSender, null, cc);
VendorDialogMsgHandler.getVault(pcSender, null, cc);
this.setTarget(pcSender); //for logging
}

67
src/engine/devcmd/cmds/GetZoneCmd.java

@ -1,67 +0,0 @@ @@ -1,67 +0,0 @@
// • ▌ ▄ ·. ▄▄▄· ▄▄ • ▪ ▄▄· ▄▄▄▄· ▄▄▄· ▐▄▄▄ ▄▄▄ .
// ·██ ▐███▪▐█ ▀█ ▐█ ▀ ▪██ ▐█ ▌▪▐█ ▀█▪▐█ ▀█ •█▌ ▐█▐▌·
// ▐█ ▌▐▌▐█·▄█▀▀█ ▄█ ▀█▄▐█·██ ▄▄▐█▀▀█▄▄█▀▀█ ▐█▐ ▐▌▐▀▀▀
// ██ ██▌▐█▌▐█ ▪▐▌▐█▄▪▐█▐█▌▐███▌██▄▪▐█▐█ ▪▐▌██▐ █▌▐█▄▄▌
// ▀▀ █▪▀▀▀ ▀ ▀ ·▀▀▀▀ ▀▀▀·▀▀▀ ·▀▀▀▀ ▀ ▀ ▀▀ █▪ ▀▀▀
// Magicbane Emulator Project © 2013 - 2022
// www.magicbane.com
package engine.devcmd.cmds;
import engine.devcmd.AbstractDevCmd;
import engine.gameManager.ZoneManager;
import engine.objects.AbstractGameObject;
import engine.objects.PlayerCharacter;
import engine.objects.Zone;
import java.util.ArrayList;
public class GetZoneCmd extends AbstractDevCmd {
public GetZoneCmd() {
super("getzone");
}
@Override
protected void _doCmd(PlayerCharacter pcSender, String[] words,
AbstractGameObject target) {
if (pcSender == null)
return;
if (words.length != 1) {
this.sendUsage(pcSender);
return;
}
ArrayList<Zone> allIn = new ArrayList<>();
switch (words[0].toLowerCase()) {
case "all":
throwbackInfo(pcSender, "All zones currently in");
allIn = ZoneManager.getAllZonesIn(pcSender.getLoc());
break;
case "smallest":
throwbackInfo(pcSender, "Smallest zone currently in");
Zone zone = ZoneManager.findSmallestZone(pcSender.getLoc());
allIn.add(zone);
break;
default:
this.sendUsage(pcSender);
return;
}
for (Zone zone : allIn)
throwbackInfo(pcSender, zone.getName() + "; UUID: " + zone.getObjectUUID() + ", loadNum: " + zone.getLoadNum());
}
@Override
protected String _getUsageString() {
return "' /getzone smallest/all'";
}
@Override
protected String _getHelpString() {
return "lists what zones a player is in";
}
}

107
src/engine/devcmd/cmds/GotoBoundsCmd.java

@ -1,107 +0,0 @@ @@ -1,107 +0,0 @@
// • ▌ ▄ ·. ▄▄▄· ▄▄ • ▪ ▄▄· ▄▄▄▄· ▄▄▄· ▐▄▄▄ ▄▄▄ .
// ·██ ▐███▪▐█ ▀█ ▐█ ▀ ▪██ ▐█ ▌▪▐█ ▀█▪▐█ ▀█ •█▌ ▐█▐▌·
// ▐█ ▌▐▌▐█·▄█▀▀█ ▄█ ▀█▄▐█·██ ▄▄▐█▀▀█▄▄█▀▀█ ▐█▐ ▐▌▐▀▀▀
// ██ ██▌▐█▌▐█ ▪▐▌▐█▄▪▐█▐█▌▐███▌██▄▪▐█▐█ ▪▐▌██▐ █▌▐█▄▄▌
// ▀▀ █▪▀▀▀ ▀ ▀ ·▀▀▀▀ ▀▀▀·▀▀▀ ·▀▀▀▀ ▀ ▀ ▀▀ █▪ ▀▀▀
// Magicbane Emulator Project © 2013 - 2022
// www.magicbane.com
package engine.devcmd.cmds;
import engine.Enum.GameObjectType;
import engine.devcmd.AbstractDevCmd;
import engine.math.Vector3fImmutable;
import engine.objects.AbstractGameObject;
import engine.objects.Building;
import engine.objects.PlayerCharacter;
public class GotoBoundsCmd extends AbstractDevCmd {
public GotoBoundsCmd() {
super("gotobounds");
}
@Override
protected void _doCmd(PlayerCharacter player, String[] words,
AbstractGameObject target) {
String corner = words[0];
Vector3fImmutable targetLoc = Vector3fImmutable.ZERO;
if (target == null || !target.getObjectType().equals(GameObjectType.Building)) {
this.throwbackError(player, "No Building Selected");
return;
}
Building building = (Building) target;
if (building.getBounds() == null) {
this.throwbackInfo(player, "No valid Bounds for building UUID " + building.getObjectUUID());
return;
}
float x = building.getBounds().getHalfExtents().x;
float z = building.getBounds().getHalfExtents().y;
if (building.getBlueprint() != null) {
x = building.getBlueprint().getExtents().x;
z = building.getBlueprint().getExtents().y;
}
float topLeftX = building.getLoc().x - x;
float topLeftY = building.getLoc().z - z;
float topRightX = building.getLoc().x + x;
float topRightY = building.getLoc().z - z;
float bottomLeftX = building.getLoc().x - x;
float bottomLeftY = building.getLoc().z + z;
float bottomRightX = building.getLoc().x + x;
float bottomRightY = building.getLoc().z + z;
switch (corner) {
case "topleft":
targetLoc = new Vector3fImmutable(topLeftX, 0, topLeftY);
break;
case "topright":
targetLoc = new Vector3fImmutable(topRightX, 0, topRightY);
break;
case "bottomleft":
targetLoc = new Vector3fImmutable(bottomLeftX, 0, bottomLeftY);
break;
case "bottomright":
targetLoc = new Vector3fImmutable(bottomRightX, 0, bottomRightY);
break;
default:
this.throwbackInfo(player, "wrong corner name. use topleft , topright , bottomleft , bottomright");
return;
}
targetLoc = Vector3fImmutable.transform(building.getLoc(), targetLoc, building.getBounds().getRotationDegrees());
// Teleport player
if (targetLoc == Vector3fImmutable.ZERO) {
this.throwbackError(player, "Failed to locate UUID");
return;
}
player.teleport(targetLoc);
}
@Override
protected String _getHelpString() {
return "Teleports player to a UUID";
}
@Override
protected String _getUsageString() {
return "' /gotoobj <UID>'";
}
}

8
src/engine/devcmd/cmds/GotoCmd.java

@ -9,11 +9,11 @@ @@ -9,11 +9,11 @@
package engine.devcmd.cmds;
import engine.Enum.GameObjectType;
import engine.devcmd.AbstractDevCmd;
import engine.gameManager.DbManager;
import engine.gameManager.SessionManager;
import engine.math.Vector3fImmutable;
import engine.mbEnums.GameObjectType;
import engine.objects.*;
import engine.server.MBServerStatics;
@ -81,7 +81,7 @@ public class GotoCmd extends AbstractDevCmd { @@ -81,7 +81,7 @@ public class GotoCmd extends AbstractDevCmd {
continue;
Zone zone = city.getParent();
if (zone != null) {
if (zone.isNPCCity() || zone.isPlayerCity())
if (zone.isNPCCity || zone.guild_zone)
loc = Vector3fImmutable.getRandomPointOnCircle(zone.getLoc(), MBServerStatics.TREE_TELEPORT_RADIUS);
else
loc = zone.getLoc();
@ -97,10 +97,10 @@ public class GotoCmd extends AbstractDevCmd { @@ -97,10 +97,10 @@ public class GotoCmd extends AbstractDevCmd {
Zone zone = (Zone) zoneAgo;
if (zone == null)
continue;
if (!zone.getName().equalsIgnoreCase(cityName))
if (!zone.zoneName.equalsIgnoreCase(cityName))
continue;
if (zone != null) {
if (zone.isNPCCity() || zone.isPlayerCity())
if (zone.isNPCCity || zone.guild_zone)
loc = Vector3fImmutable.getRandomPointOnCircle(zone.getLoc(), MBServerStatics.TREE_TELEPORT_RADIUS);
else
loc = zone.getLoc();

16
src/engine/devcmd/cmds/GotoObj.java

@ -9,10 +9,10 @@ @@ -9,10 +9,10 @@
package engine.devcmd.cmds;
import engine.Enum;
import engine.devcmd.AbstractDevCmd;
import engine.gameManager.DbManager;
import engine.math.Vector3fImmutable;
import engine.mbEnums;
import engine.objects.*;
public class GotoObj extends AbstractDevCmd {
@ -27,7 +27,7 @@ public class GotoObj extends AbstractDevCmd { @@ -27,7 +27,7 @@ public class GotoObj extends AbstractDevCmd {
int uuid;
Vector3fImmutable targetLoc = Vector3fImmutable.ZERO;
Enum.DbObjectType objectType;
mbEnums.DbObjectType objectType;
try {
uuid = Integer.parseInt(words[0]);
@ -41,37 +41,37 @@ public class GotoObj extends AbstractDevCmd { @@ -41,37 +41,37 @@ public class GotoObj extends AbstractDevCmd {
switch (objectType) {
case NPC:
NPC npc = (NPC) DbManager.getFromCache(Enum.GameObjectType.NPC, uuid);
NPC npc = (NPC) DbManager.getFromCache(mbEnums.GameObjectType.NPC, uuid);
if (npc != null)
targetLoc = npc.getLoc();
break;
case MOB:
Mob mob = (Mob) DbManager.getFromCache(Enum.GameObjectType.Mob, uuid);
Mob mob = (Mob) DbManager.getFromCache(mbEnums.GameObjectType.Mob, uuid);
if (mob != null)
targetLoc = mob.getLoc();
break;
case CHARACTER:
PlayerCharacter playerCharacter = (PlayerCharacter) DbManager.getFromCache(Enum.GameObjectType.PlayerCharacter, uuid);
PlayerCharacter playerCharacter = (PlayerCharacter) DbManager.getFromCache(mbEnums.GameObjectType.PlayerCharacter, uuid);
if (playerCharacter != null)
targetLoc = playerCharacter.getLoc();
break;
case BUILDING:
Building building = (Building) DbManager.getFromCache(Enum.GameObjectType.Building, uuid);
Building building = (Building) DbManager.getFromCache(mbEnums.GameObjectType.Building, uuid);
if (building != null)
targetLoc = building.getLoc();
break;
case ZONE:
Zone zone = (Zone) DbManager.getFromCache(Enum.GameObjectType.Zone, uuid);
Zone zone = (Zone) DbManager.getFromCache(mbEnums.GameObjectType.Zone, uuid);
if (zone != null)
targetLoc = zone.getLoc();
break;
case CITY:
City city = (City) DbManager.getFromCache(Enum.GameObjectType.City, uuid);
City city = (City) DbManager.getFromCache(mbEnums.GameObjectType.City, uuid);
if (city != null)
targetLoc = city.getLoc();

4
src/engine/devcmd/cmds/HotzoneCmd.java

@ -40,7 +40,7 @@ public class HotzoneCmd extends AbstractDevCmd { @@ -40,7 +40,7 @@ public class HotzoneCmd extends AbstractDevCmd {
String input = data.toString().trim();
if (input.length() == 0) {
outString = "Current hotZone: " + ZoneManager.hotZone.getName() + "\r\n";
outString = "Current hotZone: " + ZoneManager.hotZone.zoneName + "\r\n";
outString += "Available hotZones: " + ZoneManager.availableHotZones();
throwbackInfo(playerCharacter, outString);
return;
@ -48,7 +48,7 @@ public class HotzoneCmd extends AbstractDevCmd { @@ -48,7 +48,7 @@ public class HotzoneCmd extends AbstractDevCmd {
if (input.equalsIgnoreCase("random")) {
ZoneManager.generateAndSetRandomHotzone();
outString = "New hotZone: " + ZoneManager.hotZone.getName() + "\r\n";
outString = "New hotZone: " + ZoneManager.hotZone.zoneName + "\r\n";
outString += "Available hotZones: " + ZoneManager.availableHotZones();
throwbackInfo(playerCharacter, outString);
return;

52
src/engine/devcmd/cmds/InfoCmd.java

@ -9,14 +9,14 @@ @@ -9,14 +9,14 @@
package engine.devcmd.cmds;
import engine.Enum;
import engine.Enum.BuildingGroup;
import engine.Enum.GameObjectType;
import engine.Enum.TargetColor;
import engine.devcmd.AbstractDevCmd;
import engine.gameManager.BuildingManager;
import engine.gameManager.SessionManager;
import engine.math.Vector3fImmutable;
import engine.mbEnums;
import engine.mbEnums.BuildingGroup;
import engine.mbEnums.GameObjectType;
import engine.mbEnums.TargetColor;
import engine.objects.*;
import engine.util.StringUtils;
@ -253,9 +253,9 @@ public class InfoCmd extends AbstractDevCmd { @@ -253,9 +253,9 @@ public class InfoCmd extends AbstractDevCmd {
output += newline;
output += "InSession : " + SessionManager.getPlayerCharacterByID(target.getObjectUUID()) != null ? " true " : " false";
output += newline;
output += "RaceType: " + targetPC.getRace().getRaceType().name();
output += "RaceType: " + targetPC.race.getRaceType().name();
output += newline;
output += "Race: " + targetPC.getRace().getName();
output += "Race: " + targetPC.race.getName();
output += newline;
output += "Safe:" + targetPC.inSafeZone();
output += newline;
@ -278,7 +278,7 @@ public class InfoCmd extends AbstractDevCmd { @@ -278,7 +278,7 @@ public class InfoCmd extends AbstractDevCmd {
output += "Account ID: UNKNOWN";
output += newline;
output += "Inventory Weight:" + (targetPC.getCharItemManager().getInventoryWeight() + targetPC.getCharItemManager().getEquipWeight());
output += "Inventory Weight:" + (targetPC.charItemManager.getInventoryWeight() + targetPC.charItemManager.getEquipWeight());
output += newline;
output += "Max Inventory Weight:" + ((int) targetPC.statStrBase * 3);
output += newline;
@ -291,7 +291,7 @@ public class InfoCmd extends AbstractDevCmd { @@ -291,7 +291,7 @@ public class InfoCmd extends AbstractDevCmd {
output += "inFloor :" + targetPC.getInFloorID();
output += newline;
BaseClass baseClass = targetPC.getBaseClass();
BaseClass baseClass = targetPC.baseClass;
if (baseClass != null)
output += StringUtils.addWS("Class: " + baseClass.getName(), 20);
@ -369,7 +369,8 @@ public class InfoCmd extends AbstractDevCmd { @@ -369,7 +369,8 @@ public class InfoCmd extends AbstractDevCmd {
output += newline;
output += "InventorySet: " + targetNPC.getContract().inventorySet;
output += newline;
output += targetNPC.getContract().getAllowedBuildings().toString();
Contract contract1 = targetNPC.getContract();
output += contract1.allowedBuildings.toString();
output += newline;
output += "Extra Rune: " + targetNPC.getContract().getExtraRune();
@ -383,11 +384,12 @@ public class InfoCmd extends AbstractDevCmd { @@ -383,11 +384,12 @@ public class InfoCmd extends AbstractDevCmd {
output += newline;
if (mobBase != null) {
output += newline;
output += "Slottable: " + targetNPC.getContract().getAllowedBuildings().toString();
Contract contract = targetNPC.getContract();
output += "Slottable: " + contract.allowedBuildings.toString();
output += newline;
output += "EquipSet: " + targetNPC.getEquipmentSetID();
output += newline;
output += "Parent Zone LoadNum : " + targetNPC.getParentZone().getLoadNum();
output += "Parent Zone LoadNum : " + targetNPC.getParentZone().templateID;
}
@ -436,11 +438,13 @@ public class InfoCmd extends AbstractDevCmd { @@ -436,11 +438,13 @@ public class InfoCmd extends AbstractDevCmd {
if (targetMob.isPet()) {
output += "isPet: true";
output += newline;
if ((targetMob.agentType.equals(Enum.AIAgentType.PET)))
if ((targetMob.agentType.equals(mbEnums.AIAgentType.PET)))
output += "isSummonedPet: true";
else
output += "isSummonedPet: false";
PlayerCharacter owner = targetMob.getOwner();
PlayerCharacter owner = (PlayerCharacter) targetMob.guardCaptain;
if (owner != null)
output += " owner: " + owner.getObjectUUID();
output += newline;
@ -454,7 +458,7 @@ public class InfoCmd extends AbstractDevCmd { @@ -454,7 +458,7 @@ public class InfoCmd extends AbstractDevCmd {
output += newline;
}
if ((targetMob.agentType.equals(Enum.AIAgentType.MOBILE))) {
if ((targetMob.agentType.equals(mbEnums.AIAgentType.MOBILE))) {
output += "SpawnRadius: " + targetMob.getSpawnRadius();
output += newline;
output += "Spawn Timer: " + targetMob.getSpawnTimeAsString();
@ -471,7 +475,7 @@ public class InfoCmd extends AbstractDevCmd { @@ -471,7 +475,7 @@ public class InfoCmd extends AbstractDevCmd {
output += "EquipSet: " + targetMob.equipmentSetID;
output += newline;
try {
output += "Parent Zone LoadNum : " + targetMob.getParentZone().getLoadNum();
output += "Parent Zone LoadNum : " + targetMob.parentZone.templateID;
} catch (Exception ex) {
//who cares
}
@ -492,28 +496,28 @@ public class InfoCmd extends AbstractDevCmd { @@ -492,28 +496,28 @@ public class InfoCmd extends AbstractDevCmd {
output += newline;
output += "No building found." + newline;
}
int max = (int)(4.882 * targetMob.level + 121.0);
if(max > 321){
int max = (int) (4.882 * targetMob.level + 121.0);
if (max > 321) {
max = 321;
}
int min = (int)(4.469 * targetMob.level - 3.469);
int min = (int) (4.469 * targetMob.level - 3.469);
output += "Min Loot Roll = " + min;
output += "Max Loot Roll = " + max;
break;
case Item: //intentional passthrough
case MobLoot:
Item item = (Item) target;
ItemBase itemBase = item.getItemBase();
output += StringUtils.addWS("ItemBase: " + itemBase.getUUID(), 20);
output += "Weight: " + itemBase.getWeight();
ItemTemplate template = ItemTemplate.templates.get(item.templateID);
output += StringUtils.addWS("Template: " + template.template_id, 20);
output += "Weight: " + template.item_wt;
output += newline;
DecimalFormat df = new DecimalFormat("###,###,###,###,##0");
output += StringUtils.addWS("Qty: "
+ df.format(item.getNumOfItems()), 20);
output += "Charges: " + item.getChargesRemaining()
+ '/' + item.getChargesMax();
output += "Charges: " + (byte) item.chargesRemaining
+ '/' + item.template.item_initial_charges;
output += newline;
output += "Name: " + itemBase.getName();
output += "Name: " + template.item_base_name;
output += newline;
output += item.getContainerInfo();

212
src/engine/devcmd/cmds/MakeBaneCmd.java

@ -1,212 +0,0 @@ @@ -1,212 +0,0 @@
// • ▌ ▄ ·. ▄▄▄· ▄▄ • ▪ ▄▄· ▄▄▄▄· ▄▄▄· ▐▄▄▄ ▄▄▄ .
// ·██ ▐███▪▐█ ▀█ ▐█ ▀ ▪██ ▐█ ▌▪▐█ ▀█▪▐█ ▀█ •█▌ ▐█▐▌·
// ▐█ ▌▐▌▐█·▄█▀▀█ ▄█ ▀█▄▐█·██ ▄▄▐█▀▀█▄▄█▀▀█ ▐█▐ ▐▌▐▀▀▀
// ██ ██▌▐█▌▐█ ▪▐▌▐█▄▪▐█▐█▌▐███▌██▄▪▐█▐█ ▪▐▌██▐ █▌▐█▄▄▌
// ▀▀ █▪▀▀▀ ▀ ▀ ·▀▀▀▀ ▀▀▀·▀▀▀ ·▀▀▀▀ ▀ ▀ ▀▀ █▪ ▀▀▀
// Magicbane Emulator Project © 2013 - 2022
// www.magicbane.com
package engine.devcmd.cmds;
import engine.Enum.ProtectionState;
import engine.InterestManagement.WorldGrid;
import engine.devcmd.AbstractDevCmd;
import engine.gameManager.BuildingManager;
import engine.gameManager.ChatManager;
import engine.gameManager.DbManager;
import engine.gameManager.ZoneManager;
import engine.math.Vector3f;
import engine.math.Vector3fImmutable;
import engine.objects.*;
import org.pmw.tinylog.Logger;
/**
* @author Eighty
*/
public class MakeBaneCmd extends AbstractDevCmd {
public MakeBaneCmd() {
super("makebane");
}
@Override
protected void _doCmd(PlayerCharacter pc, String[] words,
AbstractGameObject target) {
if (words.length < 1 || words.length > 2) {
this.sendUsage(pc);
return;
}
int attackerID = 0;
int rank = 8;
if (words.length == 2) {
try {
attackerID = Integer.parseInt(words[0]);
rank = Integer.parseInt(words[1]);
} catch (NumberFormatException e) {
throwbackError(pc, "AttackerGuildID must be a number, " + words[0] + " is invalid");
return;
}
} else if (words.length == 1) {
if (target == null) {
throwbackError(pc, "No target specified");
return;
}
if (!(target instanceof PlayerCharacter)) {
throwbackError(pc, "Target is not a player");
return;
}
attackerID = target.getObjectUUID();
try {
rank = Integer.parseInt(words[0]);
} catch (NumberFormatException e) {
throwbackError(pc, "Rank must be specified, 1 through 8");
return;
}
}
if (rank < 1 || rank > 8) {
throwbackError(pc, "Rank must be 1 through 8");
return;
}
PlayerCharacter player = PlayerCharacter.getPlayerCharacter(attackerID);
if (player.getGuild().isEmptyGuild()) {
throwbackError(pc, "Errant's can not place banes");
return;
}
AbstractCharacter attackerAGL = Guild.GetGL(player.getGuild());
if (attackerAGL == null) {
throwbackError(pc, "No guild leader found for attacking guild.");
return;
}
if (!(attackerAGL instanceof PlayerCharacter)) {
throwbackError(pc, "Attacking guild leader is an NPC.");
return;
}
if (player.getGuild().isNPCGuild()) {
throwbackError(pc, "The guild used is an npc guild. They can not bane.");
return;
}
// if (player.getGuild().getOwnedCity() != null) {
// throwbackError(pc, "The attacking guild already has a city.");
// return;
// }
Zone zone = ZoneManager.findSmallestZone(pc.getLoc());
if (zone == null) {
throwbackError(pc, "Unable to find the zone you're in.");
return;
}
if (!zone.isPlayerCity()) {
throwbackError(pc, "This is not a player city.");
return;
}
City city = City.getCity(zone.getPlayerCityUUID());
if (city == null) {
throwbackError(pc, "Unable to find the city associated with this zone.");
return;
}
if (city.getTOL() == null) {
throwbackError(pc, "Unable to find the tree of life for this city.");
return;
}
if (city.getBane() != null) {
throwbackError(pc, "This city is already baned.");
return;
}
if (Bane.getBaneByAttackerGuild(player.getGuild()) != null) {
throwbackError(pc, "This guild is already baning someone.");
return;
}
Blueprint blueprint = Blueprint.getBlueprint(24300);
if (blueprint == null) {
throwbackError(pc, "Unable to find building set for banestone.");
return;
}
Vector3f rot = new Vector3f(0, 0, 0);
// *** Refactor : Overlap test goes here
//Let's drop a banestone!
Vector3fImmutable localLocation = ZoneManager.worldToLocal(pc.getLoc(), zone);
if (localLocation == null) {
ChatManager.chatSystemError(pc, "Failed to convert world location to zone location. Contact a CCR.");
Logger.info("Failed to Convert World coordinates to local zone coordinates");
return;
}
Building stone = DbManager.BuildingQueries.CREATE_BUILDING(
zone.getObjectUUID(), pc.getObjectUUID(), blueprint.getName(), blueprint.getBlueprintUUID(),
localLocation, 1.0f, blueprint.getMaxHealth(rank), ProtectionState.PROTECTED, 0, rank,
null, blueprint.getBlueprintUUID(), 1, 0.0f);
if (stone == null) {
ChatManager.chatSystemError(pc, "Failed to create banestone.");
return;
}
stone.addEffectBit((1 << 19));
stone.setRank((byte) rank);
stone.setMaxHitPoints(blueprint.getMaxHealth(stone.getRank()));
stone.setCurrentHitPoints(stone.getMaxHitPoints());
BuildingManager.setUpgradeDateTime(stone, null, 0);
//Make the bane
Bane bane = Bane.makeBane(player, city, stone);
if (bane == null) {
//delete bane stone, failed to make bane object
DbManager.BuildingQueries.DELETE_FROM_DATABASE(stone);
throwbackError(pc, "Failed to create bane.");
return;
}
WorldGrid.addObject(stone, pc);
//Add baned effect to TOL
city.getTOL().addEffectBit((1 << 16));
city.getTOL().updateEffects();
Vector3fImmutable movePlayerOutsideStone = player.getLoc();
movePlayerOutsideStone = movePlayerOutsideStone.setX(movePlayerOutsideStone.x + 10);
movePlayerOutsideStone = movePlayerOutsideStone.setZ(movePlayerOutsideStone.z + 10);
player.teleport(movePlayerOutsideStone);
throwbackInfo(pc, "The city has been succesfully baned.");
}
@Override
protected String _getHelpString() {
return "Creates an bane.";
}
@Override
protected String _getUsageString() {
return "'./makebane playerUUID baneRank'";
}
}

115
src/engine/devcmd/cmds/MakeItemCmd.java

@ -9,16 +9,13 @@ @@ -9,16 +9,13 @@
package engine.devcmd.cmds;
import engine.Enum.ItemContainerType;
import engine.Enum.ItemType;
import engine.Enum.OwnerType;
import engine.devcmd.AbstractDevCmd;
import engine.gameManager.DbManager;
import engine.mbEnums.ItemType;
import engine.mbEnums.OwnerType;
import engine.objects.*;
import engine.powers.EffectsBase;
import java.util.ArrayList;
/**
* @author Eighty
*/
@ -32,48 +29,6 @@ public class MakeItemCmd extends AbstractDevCmd { @@ -32,48 +29,6 @@ public class MakeItemCmd extends AbstractDevCmd {
protected void _doCmd(PlayerCharacter pc, String[] words,
AbstractGameObject target) {
if (words[0].equals("resources")) {
for (int ibID : Warehouse.getMaxResources().keySet()) {
if (ibID == 7)
continue;
ItemBase ib = ItemBase.getItemBase(ibID);
short weight = ib.getWeight();
if (!pc.getCharItemManager().hasRoomInventory(weight)) {
throwbackError(pc, "Not enough room in inventory for any more of this item");
pc.getCharItemManager().updateInventory();
return;
}
boolean worked = false;
Item item = new Item(ib, pc.getObjectUUID(),
OwnerType.PlayerCharacter, (byte) 0, (byte) 0, (short) ib.getDurability(), (short) ib.getDurability(),
true, false, ItemContainerType.INVENTORY, (byte) 0,
new ArrayList<>(), "");
item.setNumOfItems(Warehouse.getMaxResources().get(ibID));
try {
item = DbManager.ItemQueries.ADD_ITEM(item);
worked = true;
} catch (Exception e) {
throwbackError(pc, "DB error 1: Unable to create item. " + e.getMessage());
return;
}
if (item == null || !worked) {
throwbackError(pc, "DB error 2: Unable to create item.");
return;
}
//add item to inventory
pc.getCharItemManager().addItemToInventory(item);
}
return;
}
if (words.length < 3 || words.length > 5) {
this.sendUsage(pc);
return;
@ -103,16 +58,23 @@ public class MakeItemCmd extends AbstractDevCmd { @@ -103,16 +58,23 @@ public class MakeItemCmd extends AbstractDevCmd {
numItems = (numItems > 5000) ? 5000 : numItems;
}
int itembaseID;
int templateID;
ItemTemplate template;
try {
itembaseID = Integer.parseInt(words[0]);
} catch (NumberFormatException e) {
itembaseID = ItemBase.getIDByName(words[0].toLowerCase());
if (itembaseID == 0) {
templateID = Integer.parseInt(words[0]);
template = ItemTemplate.templates.get(words[0].toLowerCase());
if (template == null) {
throwbackError(pc, "Supplied type " + words[0]
+ " failed to parse to an Integer");
return;
}
if (template.item_type == ItemType.GOLD) {
this.throwbackInfo(pc, "use /addgold to add gold.");
return;
}
} catch (Exception e) {
throwbackError(pc,
"An unknown exception occurred when trying to use createitem command for type "
@ -120,10 +82,6 @@ public class MakeItemCmd extends AbstractDevCmd { @@ -120,10 +82,6 @@ public class MakeItemCmd extends AbstractDevCmd {
return; // NaN
}
if (itembaseID == 7) {
this.throwbackInfo(pc, "use /addgold to add gold.");
return;
}
String prefix = "";
String suffix = "";
@ -174,57 +132,54 @@ public class MakeItemCmd extends AbstractDevCmd { @@ -174,57 +132,54 @@ public class MakeItemCmd extends AbstractDevCmd {
return;
}
}
ItemBase ib = ItemBase.getItemBase(itembaseID);
if (ib == null) {
throwbackError(pc, "Unable to find itembase of ID " + itembaseID);
template = ItemTemplate.templates.get(templateID);
if (template == null) {
throwbackError(pc, "Unable to find template " + templateID);
return;
}
if ((numItems > 1)
&& (ib.getType().equals(ItemType.RESOURCE) == false)
&& (ib.getType().equals(ItemType.OFFERING)) == false)
&& (template.item_type.equals(ItemType.RESOURCE) == false)
&& (template.item_type.equals(ItemType.OFFERING)) == false)
numItems = 1;
CharacterItemManager cim = pc.getCharItemManager();
CharacterItemManager cim = pc.charItemManager;
if (cim == null) {
throwbackError(pc, "Unable to find the character item manager for player " + pc.getFirstName() + '.');
return;
}
byte charges = (byte) ib.getNumCharges();
short dur = (short) ib.getDurability();
String result = "";
for (int i = 0; i < quantity; i++) {
short weight = ib.getWeight();
int weight = template.item_wt;
if (!cim.hasRoomInventory(weight)) {
throwbackError(pc, "Not enough room in inventory for any more of this item. " + i + " produced.");
if (i > 0)
cim.updateInventory();
return;
}
boolean worked = false;
Item item = new Item(ib, pc.getObjectUUID(),
OwnerType.PlayerCharacter, charges, charges, dur, dur,
true, false, ItemContainerType.INVENTORY, (byte) 0,
new ArrayList<>(), "");
Item item = new Item(templateID);
item.ownerID = pc.getObjectUUID();
item.ownerType = OwnerType.PlayerCharacter;
if (numItems > 1)
item.setNumOfItems(numItems);
try {
item = DbManager.ItemQueries.ADD_ITEM(item);
worked = true;
item = DbManager.ItemQueries.PERSIST(item);
} catch (Exception e) {
throwbackError(pc, "DB error 1: Unable to create item. " + e.getMessage());
return;
}
if (item == null || !worked) {
throwbackError(pc, "DB error 2: Unable to create item.");
return;
}
//create prefix
if (!prefix.isEmpty())
item.addPermanentEnchantmentForDev(prefix, 0);
@ -243,12 +198,12 @@ public class MakeItemCmd extends AbstractDevCmd { @@ -243,12 +198,12 @@ public class MakeItemCmd extends AbstractDevCmd {
@Override
protected String _getHelpString() {
return "Creates an item of type 'itembaseID' with a prefix and suffix";
return "Creates an item of type templateID with a prefix and suffix";
}
@Override
protected String _getUsageString() {
return "'./makeitem itembaseID PrefixID SuffixID [quantity] [numResources]'";
return "'./makeitem templateID PrefixID SuffixID [quantity] [numResources]'";
}
}

8
src/engine/devcmd/cmds/PrintBankCmd.java

@ -47,13 +47,17 @@ public class PrintBankCmd extends AbstractDevCmd { @@ -47,13 +47,17 @@ public class PrintBankCmd extends AbstractDevCmd {
}
CharacterItemManager cim = ((AbstractCharacter) tar).getCharItemManager();
CharacterItemManager cim = ((AbstractCharacter) tar).charItemManager;
ArrayList<Item> list = cim.getBank();
throwbackInfo(pc, "Bank for " + type + ' ' + name + " (" + tar.getObjectUUID() + ')');
for (Item item : list) {
throwbackInfo(pc, " " + item.getItemBase().getName() + ", count: " + item.getNumOfItems());
ItemTemplate template = ItemTemplate.templates.get(item.templateID);
throwbackInfo(pc, " " + template.item_base_name + ", count: " + item.getNumOfItems());
}
Item gold = cim.getGoldBank();
if (gold != null)
throwbackInfo(pc, " Gold, count: " + gold.getNumOfItems());
else

5
src/engine/devcmd/cmds/PrintBonusesCmd.java

@ -9,9 +9,9 @@ @@ -9,9 +9,9 @@
package engine.devcmd.cmds;
import engine.Enum.GameObjectType;
import engine.devcmd.AbstractDevCmd;
import engine.gameManager.ChatManager;
import engine.mbEnums.GameObjectType;
import engine.objects.*;
import engine.powers.effectmodifiers.AbstractEffectModifier;
@ -33,7 +33,8 @@ public class PrintBonusesCmd extends AbstractDevCmd { @@ -33,7 +33,8 @@ public class PrintBonusesCmd extends AbstractDevCmd {
if (target instanceof Item) {
type = "Item";
tar = (Item) target;
name = ((Item) tar).getItemBase().getName();
ItemTemplate template = ItemTemplate.templates.get(((Item) tar).templateID);
name = template.item_base_name;
} else if (target instanceof AbstractCharacter) {
tar = (AbstractCharacter) target;
name = ((AbstractCharacter) tar).getFirstName();

35
src/engine/devcmd/cmds/DecachePlayerCmd.java → src/engine/devcmd/cmds/PrintEffectsCmd.java

@ -9,46 +9,49 @@ @@ -9,46 +9,49 @@
package engine.devcmd.cmds;
import engine.Enum;
import engine.devcmd.AbstractDevCmd;
import engine.gameManager.DbManager;
import engine.objects.AbstractCharacter;
import engine.objects.AbstractGameObject;
import engine.objects.PlayerCharacter;
/**
*
*/
public class DecachePlayerCmd extends AbstractDevCmd {
public DecachePlayerCmd() {
super("decacheplayer");
public class PrintEffectsCmd extends AbstractDevCmd {
public PrintEffectsCmd() {
super("printeffects");
// super("printstats", MBServerStatics.ACCESS_LEVEL_ADMIN);
}
@Override
protected void _doCmd(PlayerCharacter pc, String[] words,
AbstractGameObject target) {
if (words.length < 1) {
this.sendUsage(pc);
}
int objectUUID = Integer.parseInt(words[0]);
AbstractCharacter tar;
if (target != null && target instanceof AbstractCharacter) {
tar = (AbstractCharacter) target;
String newline = "\r\n ";
String output = "Effects For Character: " + tar.getName() + newline;
if (DbManager.inCache(Enum.GameObjectType.PlayerCharacter, objectUUID)) {
this.setTarget(PlayerCharacter.getFromCache(objectUUID)); //for logging
PlayerCharacter.getFromCache(objectUUID).removeFromCache();
} else {
this.sendHelp(pc);
for (String effect : tar.effects.keySet()) {
output += effect + newline;
}
throwbackInfo(pc, output);
}
}
@Override
protected String _getHelpString() {
return "No player found. Please make sure the table ID is correct.";
return "Returns the player's current stats";
}
@Override
protected String _getUsageString() {
return "' /decacheplayer <UUID>'";
return "' /printstats'";
}
}

24
src/engine/devcmd/cmds/PrintEquipCmd.java

@ -9,8 +9,9 @@ @@ -9,8 +9,9 @@
package engine.devcmd.cmds;
import engine.Enum.GameObjectType;
import engine.devcmd.AbstractDevCmd;
import engine.mbEnums;
import engine.mbEnums.GameObjectType;
import engine.objects.*;
import java.util.concurrent.ConcurrentHashMap;
@ -63,9 +64,9 @@ public class PrintEquipCmd extends AbstractDevCmd { @@ -63,9 +64,9 @@ public class PrintEquipCmd extends AbstractDevCmd {
if (tar.getObjectType() == GameObjectType.Mob) {
Mob tarMob = (Mob) tar;
throwbackInfo(pc, "Equip for " + type + ' ' + name + " (" + tar.getObjectUUID() + ')');
for (int slot : tarMob.getEquip().keySet()) {
MobEquipment equip = tarMob.getEquip().get(slot);
throwbackInfo(pc, equip.getItemBase().getUUID() + " : " + equip.getItemBase().getName() + ", slot: " + slot);
for (mbEnums.EquipSlotType slot : tarMob.charItemManager.equipped.keySet()) {
Item equip = tarMob.charItemManager.equipped.get(slot);
throwbackInfo(pc, equip.templateID + " : " + equip.template.item_base_name + ", slot: " + slot);
}
return;
}
@ -73,19 +74,20 @@ public class PrintEquipCmd extends AbstractDevCmd { @@ -73,19 +74,20 @@ public class PrintEquipCmd extends AbstractDevCmd {
if (tar.getObjectType() == GameObjectType.NPC) {
NPC tarMob = (NPC) tar;
throwbackInfo(pc, "Equip for " + type + ' ' + name + " (" + tar.getObjectUUID() + ')');
for (int slot : tarMob.getEquip().keySet()) {
MobEquipment equip = tarMob.getEquip().get(slot);
throwbackInfo(pc, equip.getItemBase().getUUID() + " : " + equip.getItemBase().getName() + ", slot: " + slot);
for (mbEnums.EquipSlotType slot : tarMob.charItemManager.equipped.keySet()) {
Item equip = tarMob.charItemManager.equipped.get(slot);
throwbackInfo(pc, equip.templateID + " : " + equip.template.item_base_name + ", slot: " + slot);
}
return;
}
CharacterItemManager cim = ((AbstractCharacter) tar).getCharItemManager();
ConcurrentHashMap<Integer, Item> list = cim.getEquipped();
CharacterItemManager cim = ((AbstractCharacter) tar).charItemManager;
ConcurrentHashMap<mbEnums.EquipSlotType, Item> list = cim.getEquipped();
throwbackInfo(pc, "Equip for " + type + ' ' + name + " (" + tar.getObjectUUID() + ')');
for (Integer slot : list.keySet()) {
for (mbEnums.EquipSlotType slot : list.keySet()) {
Item item = list.get(slot);
throwbackInfo(pc, " " + item.getItemBase().getName() + ", slot: " + slot);
throwbackInfo(pc, " " + item.template.item_base_name + ", slot: " + slot);
}
}

16
src/engine/devcmd/cmds/PrintInventoryCmd.java

@ -9,8 +9,8 @@ @@ -9,8 +9,8 @@
package engine.devcmd.cmds;
import engine.Enum.ItemType;
import engine.devcmd.AbstractDevCmd;
import engine.mbEnums.ItemType;
import engine.objects.*;
import java.text.DecimalFormat;
@ -60,7 +60,7 @@ public class PrintInventoryCmd extends AbstractDevCmd { @@ -60,7 +60,7 @@ public class PrintInventoryCmd extends AbstractDevCmd {
}
}
CharacterItemManager cim = tar.getCharItemManager();
CharacterItemManager cim = tar.charItemManager;
inventory = cim.getInventory(); //this list can contain gold when tar is a PC that is dead
gold = cim.getGoldInventory();
throwbackInfo(pc, " Weight : " + (cim.getInventoryWeight() + cim.getEquipWeight()));
@ -75,14 +75,18 @@ public class PrintInventoryCmd extends AbstractDevCmd { @@ -75,14 +75,18 @@ public class PrintInventoryCmd extends AbstractDevCmd {
int goldCount = 0;
for (Item item : inventory) {
if (item.getItemBase().getType().equals(ItemType.GOLD) == false) {
ItemTemplate template = ItemTemplate.templates.get(item.templateID);
if (item.template.item_type.equals(ItemType.GOLD) == false) {
String chargeInfo = "";
byte chargeMax = item.getChargesMax();
int chargeMax = template.item_initial_charges;
if (chargeMax > 0) {
byte charges = item.getChargesRemaining();
int charges = item.chargesRemaining;
chargeInfo = " charges: " + charges + '/' + chargeMax;
}
throwbackInfo(pc, " " + item.getItemBase().getName() + ", count: " + item.getNumOfItems() + chargeInfo);
throwbackInfo(pc, " " + template.item_base_name + ", count: " + item.getNumOfItems() + chargeInfo);
} else
goldCount += item.getNumOfItems();
}

45
src/engine/devcmd/cmds/DebugMeleeSyncCmd.java → src/engine/devcmd/cmds/PrintRunesCmd.java

@ -10,48 +10,49 @@ @@ -10,48 +10,49 @@
package engine.devcmd.cmds;
import engine.devcmd.AbstractDevCmd;
import engine.gameManager.ChatManager;
import engine.objects.AbstractCharacter;
import engine.objects.AbstractGameObject;
import engine.objects.CharacterRune;
import engine.objects.PlayerCharacter;
public class DebugMeleeSyncCmd extends AbstractDevCmd {
/**
*
*/
public DebugMeleeSyncCmd() {
super("debugmeleesync");
public class PrintRunesCmd extends AbstractDevCmd {
public PrintRunesCmd() {
super("printrunes");
// super("printstats", MBServerStatics.ACCESS_LEVEL_ADMIN);
}
@Override
protected void _doCmd(PlayerCharacter pc, String[] words,
AbstractGameObject target) {
// Arg Count Check
if (words.length != 1) {
this.sendUsage(pc);
return;
}
String s = words[0].toLowerCase();
AbstractCharacter tar;
if (target != null && target instanceof AbstractCharacter) {
tar = (AbstractCharacter) target;
if (s.equals("on")) {
pc.setDebug(64, true);
ChatManager.chatSayInfo(pc, "Melee Sync Debug ON");
} else if (s.equals("off")) {
pc.setDebug(64, false);
ChatManager.chatSayInfo(pc, "Melee Sync Debug OFF");
} else {
this.sendUsage(pc);
String newline = "\r\n ";
String output = "Applied Runes For Character: " + ((AbstractCharacter) target).getName() + newline;
for (CharacterRune rune : ((AbstractCharacter) target).runes) {
output += rune.getRuneBaseID() + " " + rune.getRuneBase().getName() + newline;
}
throwbackInfo(pc, output);
}
}
@Override
protected String _getHelpString() {
return "Turns on/off melee sync debugging.";
return "Returns the player's current stats";
}
@Override
protected String _getUsageString() {
return "'./debugmeleesync on|off'";
return "' /printstats'";
}
}

2
src/engine/devcmd/cmds/PrintSkillsCmd.java

@ -9,8 +9,8 @@ @@ -9,8 +9,8 @@
package engine.devcmd.cmds;
import engine.Enum.GameObjectType;
import engine.devcmd.AbstractDevCmd;
import engine.mbEnums.GameObjectType;
import engine.objects.*;
import java.util.concurrent.ConcurrentHashMap;

50
src/engine/devcmd/cmds/PrintStatsCmd.java

@ -10,10 +10,10 @@ @@ -10,10 +10,10 @@
package engine.devcmd.cmds;
import engine.devcmd.AbstractDevCmd;
import engine.gameManager.ItemManager;
import engine.mbEnums;
import engine.objects.*;
import java.util.HashMap;
/**
*
*/
@ -22,17 +22,6 @@ public class PrintStatsCmd extends AbstractDevCmd { @@ -22,17 +22,6 @@ public class PrintStatsCmd extends AbstractDevCmd {
public PrintStatsCmd() {
super("printstats");
// super("printstats", MBServerStatics.ACCESS_LEVEL_ADMIN);
}
public static ItemBase getWeaponBase(int slot, HashMap<Integer, MobEquipment> equip) {
if (equip.containsKey(slot)) {
MobEquipment item = equip.get(slot);
if (item != null && item.getItemBase() != null) {
return item.getItemBase();
}
}
return null;
}
@Override
@ -76,11 +65,12 @@ public class PrintStatsCmd extends AbstractDevCmd { @@ -76,11 +65,12 @@ public class PrintStatsCmd extends AbstractDevCmd {
}
public void printStatsMob(PlayerCharacter pc, Mob tar) {
MobBase mb = tar.getMobBase();
if (mb == null)
return;
String newline = "\r\n ";
String out = "Server stats for Mob " + mb.getFirstName() + newline;
out += "Stats Base (Modified)" + newline;
@ -96,23 +86,21 @@ public class PrintStatsCmd extends AbstractDevCmd { @@ -96,23 +86,21 @@ public class PrintStatsCmd extends AbstractDevCmd {
out += "Defense: " + tar.getDefenseRating() + newline;
//get weapons
HashMap<Integer, MobEquipment> equip = tar.getEquip();
ItemBase main = null;
if (equip != null)
main = getWeaponBase(1, equip);
ItemBase off = null;
if (equip != null)
getWeaponBase(2, equip);
if (main == null && off == null) {
out += "Main Hand: atr: " + tar.getAtrHandOne() + ", damage: " + tar.getMinDamageHandOne() + " to " + tar.getMaxDamageHandOne() + ", speed: " + tar.getSpeedHandOne() + ", range: 6" + newline;
} else {
if (main != null)
out += "Main Hand: atr: " + tar.getAtrHandOne() + ", damage: " + tar.getMinDamageHandOne() + " to " + tar.getMaxDamageHandOne() + ", speed: " + tar.getSpeedHandOne() + ", range: " + main.getRange() + newline;
if (off != null)
out += "Main Hand: atr: " + tar.getAtrHandTwo() + ", damage: " + tar.getMinDamageHandTwo() + " to " + tar.getMaxDamageHandTwo() + ", speed: " + tar.getSpeedHandTwo() + ", range: " + off.getRange() + newline;
}
if (tar.charItemManager.equipped.isEmpty() == false)
if (tar.charItemManager.equipped.get(mbEnums.EquipSlotType.LHELD) != null && !ItemManager.isShield(tar.charItemManager.equipped.get(mbEnums.EquipSlotType.LHELD))) {
//off hand weapon
out += "Attack Rating: " + tar.atrHandTwo + newline;
out += "Damage: " + tar.minDamageHandTwo + " - " + tar.maxDamageHandTwo + newline;
out += "Range: " + tar.rangeHandTwo + newline;
out += "Attack Speed: " + tar.speedHandTwo + newline;
} else {
out += "Attack Rating: " + tar.atrHandOne + newline;
out += "Damage: " + tar.minDamageHandOne + " - " + tar.maxDamageHandOne + newline;
out += "Range: " + tar.rangeHandOne + newline;
out += "Attack Speed: " + tar.speedHandOne + newline;
}
out += "isAlive: " + tar.isAlive() + ", Combat: " + tar.isCombat() + newline;
throwbackInfo(pc, out);

5
src/engine/devcmd/cmds/PrintVaultCmd.java

@ -46,11 +46,12 @@ public class PrintVaultCmd extends AbstractDevCmd { @@ -46,11 +46,12 @@ public class PrintVaultCmd extends AbstractDevCmd {
}
CharacterItemManager cim = ((AbstractCharacter) tar).getCharItemManager();
CharacterItemManager cim = ((AbstractCharacter) tar).charItemManager;
ArrayList<Item> list = cim.getVault();
throwbackInfo(pc, "Vault for " + type + ' ' + name + " (" + tar.getObjectUUID() + ')');
for (Item item : list) {
throwbackInfo(pc, " " + item.getItemBase().getName() + ", count: " + item.getNumOfItems());
ItemTemplate template = ItemTemplate.templates.get(item.templateID);
throwbackInfo(pc, " " + template.item_base_name + ", count: " + item.getNumOfItems());
}
Item gold = cim.getGoldVault();
if (gold != null)

45
src/engine/devcmd/cmds/PurgeObjectsCmd.java

@ -1,14 +1,14 @@ @@ -1,14 +1,14 @@
package engine.devcmd.cmds;
import engine.Enum;
import engine.Enum.BuildingGroup;
import engine.Enum.GameObjectType;
import engine.InterestManagement.WorldGrid;
import engine.devcmd.AbstractDevCmd;
import engine.gameManager.BuildingManager;
import engine.gameManager.DbManager;
import engine.gameManager.ZoneManager;
import engine.math.Vector3fImmutable;
import engine.mbEnums;
import engine.mbEnums.BuildingGroup;
import engine.mbEnums.GameObjectType;
import engine.objects.*;
import engine.server.MBServerStatics;
import org.pmw.tinylog.Logger;
@ -42,7 +42,7 @@ public class PurgeObjectsCmd extends AbstractDevCmd { @@ -42,7 +42,7 @@ public class PurgeObjectsCmd extends AbstractDevCmd {
private static void PurgeWalls(Zone zone, PlayerCharacter pc) {
if (!zone.isPlayerCity())
if (!zone.guild_zone)
return;
for (Building building : zone.zoneBuildingSet) {
@ -59,24 +59,29 @@ public class PurgeObjectsCmd extends AbstractDevCmd { @@ -59,24 +59,29 @@ public class PurgeObjectsCmd extends AbstractDevCmd {
if (npc != null) {
for (Mob mob : npc.getSiegeMinionMap().keySet()) {
for (Integer minionUUID : npc.minions) {
Mob mob = Mob.getMob(minionUUID);
WorldGrid.RemoveWorldObject(mob);
WorldGrid.removeObject(mob, pc);
//Mob.getRespawnMap().remove(mob);
if (mob.getParentZone() != null)
if (mob.getParentZone() != null) {
mob.getParentZone().zoneMobSet.remove(mob);
}
}
DbManager.NPCQueries.DELETE_NPC(npc);
DbManager.removeFromCache(GameObjectType.NPC,
npc.getObjectUUID());
WorldGrid.RemoveWorldObject(npc);
} else if (mobA != null) {
for (Mob mob : mobA.getSiegeMinionMap().keySet()) {
for (Integer minionUUID : mobA.minions) {
Mob mob = Mob.getMob(minionUUID);
WorldGrid.RemoveWorldObject(mob);
WorldGrid.removeObject(mob, pc);
//Mob.getRespawnMap().remove(mob);
if (mob.getParentZone() != null)
if (mob.getParentZone() != null) {
mob.getParentZone().zoneMobSet.remove(mob);
}
}
DbManager.MobQueries.DELETE_MOB(mobA);
DbManager.removeFromCache(GameObjectType.Mob,
@ -151,27 +156,31 @@ public class PurgeObjectsCmd extends AbstractDevCmd { @@ -151,27 +156,31 @@ public class PurgeObjectsCmd extends AbstractDevCmd {
if (npc != null) {
for (Mob mob : npc.getSiegeMinionMap().keySet()) {
for (Integer minionUUID : npc.minions) {
Mob mob = Mob.getMob(minionUUID);
WorldGrid.RemoveWorldObject(mob);
WorldGrid.removeObject(mob, pc);
//Mob.getRespawnMap().remove(mob);
if (mob.getParentZone() != null)
if (mob.getParentZone() != null) {
mob.getParentZone().zoneMobSet.remove(mob);
}
}
DbManager.NPCQueries.DELETE_NPC(npc);
DbManager.removeFromCache(Enum.GameObjectType.NPC,
DbManager.removeFromCache(mbEnums.GameObjectType.NPC,
npc.getObjectUUID());
WorldGrid.RemoveWorldObject(npc);
} else if (mobA != null) {
for (Mob mob : mobA.getSiegeMinionMap().keySet()) {
for (Integer minionUUID : mobA.minions) {
Mob mob = Mob.getMob(minionUUID);
WorldGrid.RemoveWorldObject(mob);
WorldGrid.removeObject(mob, pc);
//Mob.getRespawnMap().remove(mob);
if (mob.getParentZone() != null)
if (mob.getParentZone() != null) {
mob.getParentZone().zoneMobSet.remove(mob);
}
}
DbManager.MobQueries.DELETE_MOB(mobA);
DbManager.removeFromCache(Enum.GameObjectType.Mob,
DbManager.removeFromCache(mbEnums.GameObjectType.Mob,
mobA.getObjectUUID());
WorldGrid.RemoveWorldObject(mobA);
}

6
src/engine/devcmd/cmds/RealmInfoCmd.java

@ -60,12 +60,12 @@ public class RealmInfoCmd extends AbstractDevCmd { @@ -60,12 +60,12 @@ public class RealmInfoCmd extends AbstractDevCmd {
outString += ")";
outString += newline;
outString += " Zone: " + serverZone.getName();
outString += " Zone: " + serverZone.zoneName;
outString += newline;
if (serverZone.getParent() != null)
outString += " Parent: " + serverZone.getParent().getName();
if (serverZone.parent != null)
outString += " Parent: " + serverZone.parent.zoneName;
else
outString += "Parent: NONE";

52
src/engine/devcmd/cmds/RegionCmd.java

@ -10,10 +10,8 @@ @@ -10,10 +10,8 @@
package engine.devcmd.cmds;
import engine.devcmd.AbstractDevCmd;
import engine.objects.AbstractGameObject;
import engine.objects.PlayerCharacter;
import java.lang.reflect.Field;
import engine.gameManager.BuildingManager;
import engine.objects.*;
public class RegionCmd extends AbstractDevCmd {
@ -25,42 +23,28 @@ public class RegionCmd extends AbstractDevCmd { @@ -25,42 +23,28 @@ public class RegionCmd extends AbstractDevCmd {
protected void _doCmd(PlayerCharacter pc, String[] words,
AbstractGameObject target) {
String newline = "\r\n ";
String output;
output = "Target Region Information:" + newline;
if (pc.region == null) {
Building building = BuildingManager.getBuildingAtLocation(((AbstractCharacter) target).loc);
if (building == null) {
this.throwbackInfo(pc, "No Building At This Location.");
}
Regions region = ((AbstractCharacter) target).region;
if (region == null) {
this.throwbackInfo(pc, "No Region Found.");
return;
}
String newLine = System.getProperty("line.separator");
String result = "";
result += (pc.region.getClass().getSimpleName());
result += (" {");
result += (newLine);
Field[] fields = pc.region.getClass().getDeclaredFields();
//print field names paired with their values
for (Field field : fields) {
field.setAccessible(true);
result += (" ");
try {
if (field.getName().contains("Furniture"))
continue;
result += (field.getName());
result += (": ");
//requires access to private field:
result += (field.get(pc.region).toString());
} catch (IllegalAccessException ex) {
System.out.println(ex);
}
result.trim();
result += (newLine);
if (region != null) {
output += "Player Info: " + ((AbstractCharacter) target).getName() + newline;
output += "Region Building: " + building.getName() + newline;
output += "Region Height: " + region.lerpY((AbstractCharacter) target) + newline;
output += "is Stairs: " + region.isStairs() + newline;
output += "is Outside: " + region.isOutside();
this.throwbackInfo(pc, output);
}
result += ("}");
this.throwbackInfo(pc, result.toString());
}

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save