Compare commits

..
Author SHA1 Message Date
Preston 962bebab6c Adjusted the distance check for players in player's path, effectively making the collision area of players larger. This can be changed in Bounds PlayerCollisionPoint method by increasing or decreasing the minDistance var. 2024-09-24 21:36:12 -05:00
Preston a67fee76c3 Redone player collision by removing all refrences and usage of Bounds in PlayerCharacter.java. Added a new method PlayerCollisionPoint in Bounds.java mirroring PlayerBuildingCollisionPoint for other players instead of buildings. Added a new check in movement mirrioring the check for buildings but for players to ensure that PlayerCollisionPoint is called in each movement. 2024-09-23 23:43:48 -05:00
Preston Driver d22ff916bf Merge branch 'playercollision-1' of http://repo.magicbane.com/Preston/prestonbane into playercollision-1 2024-09-20 12:39:25 -05:00
Preston Driver 2d1da7679e Added functionality to handlePlayerCollision method in PlayerCharacter.java to actively prevent players from standing in each other. 2024-09-20 12:38:37 -05:00
Preston Driver 549a381174 Updated .gitignore. 2024-09-18 22:55:36 -05:00
Preston Driver 43563aeb14 Updated dependencies since it appears that old build failed to. 2024-09-18 22:50:18 -05:00
Preston Driver 7a4c2fe72a Attempt to push to docker container. 2024-09-17 20:52:47 -05:00
Preston Driver 24cc6af147 Added player collision with other players in PlayerCharacter class. 2024-09-16 23:06:07 -05:00
MagicBot 3649c629b7 Revert "DamageType defined as in JSON"
This reverts commit 1c31070fc8.
2024-04-01 12:04:12 -04:00
MagicBot 1c31070fc8 DamageType defined as in JSON 2024-04-01 12:01:59 -04:00
MagicBot bff41967db Revert "Out of combat mode when patrolling."
This reverts commit d3692d0fb7.
2023-09-08 13:07:15 -04:00
MagicBot d3692d0fb7 Out of combat mode when patrolling. 2023-09-08 13:04:29 -04:00
FatBoy 074a799d01 added health recovery to mobs 2023-08-22 20:58:52 -05:00
FatBoy 36ffd08a72 guard minions logic work 2023-08-22 20:52:45 -05:00
FatBoy 58f828b3cd items removed properly from inventory, NPCs nop longer stock base items 2023-08-22 20:52:26 -05:00
FatBoy e5fba340fb guard minion AI restored to follow captain attack commands 2023-08-21 20:24:49 -05:00
FatBoy ea2241732a fixed bug where pet persisted through dismissal 2023-08-21 20:02:26 -05:00
FatBoy 2b83db7bba moved initial loadInventory call to runAfterLoad 2023-08-21 19:48:44 -05:00
FatBoy f636f4d2ec optimized equipment dropping system 2023-08-21 19:36:46 -05:00
FatBoy 8fb6c43c66 alternative loot drop limitation 2023-08-21 19:21:50 -05:00
MagicBot e331f7e2ff Unused methods removed. 2023-08-21 14:26:50 -04:00
MagicBot b8217a8858 Remove unused variable from signature. 2023-08-21 14:11:22 -04:00
MagicBot 50f81396c7 Cleanup of PERSIST db call. 2023-08-21 14:01:28 -04:00
MagicBot 0bca57686d New npc creation work. 2023-08-21 14:00:00 -04:00
MagicBot df6b9e48d3 New npc creation work. 2023-08-21 13:47:47 -04:00
MagicBot 291cb97a22 New npc creation work. 2023-08-21 13:34:42 -04:00
MagicBot 740e75f8e4 New less ungodly NPC constructor. 2023-08-21 13:26:13 -04:00
MagicBot b7bbf8d369 Interest manager updates when moving 64 units. 2023-08-21 05:02:49 -04:00
MagicBot abf450d6ea Use character load range for dirty flag. 2023-08-21 04:52:02 -04:00
MagicBot 9072fc2788 Lock for dirtyload integration. 2023-08-21 04:40:11 -04:00
MagicBot 14968dbb3b Unused variables removed. 2023-08-21 04:21:28 -04:00
MagicBot c79d9ae891 Unused lastXYZ timers set but never used. 2023-08-21 04:19:20 -04:00
MagicBot dbca131a0f Set dirty out to load range. 2023-08-20 20:38:44 -04:00
MagicBot 621d78172d Threadsafe is needed for the flag. 2023-08-20 20:37:24 -04:00
MagicBot 50e962b77e dirtyFlag integration. 2023-08-20 20:14:28 -04:00
MagicBot 07aeb6e58d dirtyFlag integration. 2023-08-20 20:02:16 -04:00
MagicBot f6e2c6c618 dirtyFlag integration. 2023-08-20 19:35:18 -04:00
MagicBot 44b5b98597 dirtyFlag integration. 2023-08-20 19:20:22 -04:00
MagicBot ca21c3d266 dirtyFlag integration. 2023-08-20 19:07:26 -04:00
MagicBot c1f613a1a5 Flag set to true when created. 2023-08-20 18:57:22 -04:00
MagicBot 6923251a88 dirtyflag chosen as solution. 2023-08-20 18:56:09 -04:00
MagicBot 8222cb8530 Remove distance early exit. 2023-08-20 18:29:44 -04:00
MagicBot 0eae76180b Update state of npc. 2023-08-20 17:23:50 -04:00
MagicBot f0cfb69752 Update state of npc. 2023-08-20 17:16:18 -04:00
MagicBot 2e7d2b5bcf Update state of npc. 2023-08-20 17:12:20 -04:00
MagicBot 09b346dcb2 Update state of npc. 2023-08-20 17:01:58 -04:00
MagicBot 46d07b386b Update state of npc. 2023-08-20 16:55:15 -04:00
MagicBot b21e9dc59e Moving items out of constructor. 2023-08-20 16:38:10 -04:00
MagicBot 2c9fc405e9 More unused junk removed. 2023-08-20 16:28:21 -04:00
MagicBot a0a3d34578 Unused lock removed. 2023-08-20 16:25:44 -04:00
MagicBot 8ba4ed20c8 loc set to bindloc after npc returned. 2023-08-20 16:18:51 -04:00
MagicBot 5e474851a8 bugfix: Setting loc before loc is defined in abstract constructor. 2023-08-20 16:00:08 -04:00
MagicBot c69e68cb27 Npc name override moved to runafterload. 2023-08-20 15:37:11 -04:00
MagicBot 2d0116a9d9 inLined single line methods for code clarity. 2023-08-20 15:26:24 -04:00
MagicBot bed99dce62 aiAgentType enumeration defined. 2023-08-20 15:10:31 -04:00
MagicBot e4283c2444 Unused orphan npc collection removed. 2023-08-20 14:40:12 -04:00
MagicBot 407f5d1f71 Init code for instance variables moved to runafterload. 2023-08-19 16:33:17 -04:00
MagicBot 86e4ee4aa9 Debugging. 2023-08-19 16:18:49 -04:00
MagicBot 0d7e69f772 Early exit for npc guild owners. 2023-08-19 16:07:11 -04:00
MagicBot 4d0980d13e Early exit for npc guild owners. 2023-08-19 16:04:46 -04:00
MagicBot 9239bc1400 bug fix in old constructor 2023-08-19 15:58:25 -04:00
MagicBot f1958453c1 bug fix in old constructor 2023-08-19 15:49:00 -04:00
MagicBot 9adb03a845 Code moved to runafterload. 2023-08-19 15:30:35 -04:00
MagicBot 4d48712470 Method to centralize slotting of abschar. 2023-08-19 15:22:43 -04:00
FatBoy f1d31948e8 0 skill weapons don't roll anymore 2023-08-19 11:39:01 -05:00
MagicBot c79b304eeb Revert debug temporal change to minion spawn. 2023-08-19 11:53:38 -04:00
MagicBot c1a14a22e8 bugfix: wrong type comparison. 2023-08-18 13:08:05 -04:00
MagicBot 2f6e334eea Last debug cycle in testing. 2023-08-18 13:01:58 -04:00
MagicBot 105d8135f7 Tweak to siege minion slot assignments. 2023-08-18 12:32:31 -04:00
MagicBot d7c3f2a6ce Newbie Island excluded from server drop rates. Newbie tables having a baseline roll of 44. 2023-08-18 12:00:28 -04:00
MagicBot 68f2bcef0e Siege Minion pawn time reset to nominal 15m. Soft code? 2023-08-18 11:52:31 -04:00
MagicBot 3883963225 Unused and duplicate variable removed. 2023-08-18 11:33:27 -04:00
MagicBot b3bed58a4b Tweak to minion slot calculus. 2023-08-18 11:06:48 -04:00
MagicBot c4cc6bb92d Rotation conforms with bootstrap version. 2023-08-18 10:58:06 -04:00
MagicBot 62a6cd4430 Siege mob slot position properly rotated. 2023-08-18 10:52:36 -04:00
MagicBot 3e7b4cf30c Siege mob slot position properly rotated. 2023-08-18 10:43:59 -04:00
MagicBot bf24573e88 Codepath conforms to bootstrap copy of the 5 copies. 2023-08-18 10:31:13 -04:00
MagicBot 0d72798680 Spawn temporal adjustment for debugging siege mobs. 2023-08-18 10:23:30 -04:00
MagicBot 04fd91ff7d Bugfix: suffix was set as prefix. 2023-08-17 17:53:31 -04:00
MagicBot 0acd8cd939 Initialize variable before building string. 2023-08-16 15:31:17 -04:00
MagicBot 03f17adecf Update to string deserialization. 2023-08-16 15:24:30 -04:00
MagicBot 5ccf833981 Casting cleanup in constructor signature. 2023-08-16 15:04:52 -04:00
MagicBot 5084b3e453 Petitions limited to 255 characters. 2023-08-16 14:41:45 -04:00
MagicBot c95e6a2ac0 We don't serialize PETITION_NEW to the client. 2023-08-16 14:32:24 -04:00
MagicBot d3ffe9140a Unused method removed. 2023-08-16 11:42:49 -04:00
MagicBot 13fb532902 Bugfix for vendor window with no items. 2023-08-16 11:16:24 -04:00
MagicBot 7a5dde7100 Modified GenTable.rollTable() interface to support drop rates natively. 2023-08-16 08:29:29 -04:00
MagicBot e3f468681a Cleaner rank filter on display 2023-08-15 15:25:50 -04:00
MagicBot 27defa21c2 Should not be filtering items in production. 2023-08-15 15:17:12 -04:00
MagicBot f4e9896dbc Unused variable removal. 2023-08-15 09:14:19 -04:00
MagicBot b8a5521430 No need to box this int. 2023-08-15 09:09:59 -04:00
MagicBot ca39ebb9d4 More class cleanup. 2023-08-15 09:07:55 -04:00
MagicBot 010988d0c1 Class cleanup resulting in far smaller message. 2023-08-15 09:06:36 -04:00
MagicBot e09a6ccd88 File reformat. 2023-08-15 08:52:49 -04:00
MagicBot c913618dc3 Method made static and moved to manager. 2023-08-15 08:50:02 -04:00
MagicBot 6d3050f08a Add constants for message action type. 2023-08-14 16:11:26 -04:00
MagicBot b53c1b20d9 Add constants for message action type. 2023-08-14 16:09:06 -04:00
MagicBot f67444a9ea Cancel petition support 2023-08-14 15:56:47 -04:00
MagicBot 36be6f3620 Merge remote-tracking branch 'origin/master' into feature-petition 2023-08-14 15:43:11 -04:00
MagicBot cf78e6c2a4 Petition window work. 2023-08-14 15:42:05 -04:00
MagicBot bcf789030e Bounce back message 2023-08-14 14:42:32 -04:00
MagicBot 1eaec16ca3 Class cleanup. 2023-08-14 14:34:26 -04:00
MagicBot 6e3dd55804 Class cleanup. 2023-08-14 14:33:19 -04:00
MagicBot 41297e5a21 Sql column name update. 2023-08-14 14:08:39 -04:00
MagicBot cb215b536c Sql column name update. 2023-08-14 14:00:09 -04:00
MagicBot d82c157ae4 Petition db update including table creation. 2023-08-14 13:55:26 -04:00
MagicBot 602fc77ff9 Petition db update including table creation. 2023-08-14 13:53:37 -04:00
MagicBot de71e250e8 Petition db update including table creation. 2023-08-14 13:48:33 -04:00
MagicBot cacceba502 Petition db update including table creation. 2023-08-14 13:46:11 -04:00
MagicBot 054f9ea08a Petition db update including table creation. 2023-08-14 13:43:52 -04:00
MagicBot 7aa63a65b6 Petition db update including table creation. 2023-08-14 13:40:27 -04:00
MagicBot 82ad774093 Bugfix in sql statement. 2023-08-14 12:56:23 -04:00
MagicBot 4342fe9819 Enum defined and database work started. 2023-08-14 12:50:50 -04:00
MagicBot 68feae4111 Enum defined and database work started. 2023-08-14 12:49:10 -04:00
MagicBot 231d8810c8 Enum defined and database work started. 2023-08-14 12:48:05 -04:00
FatBoy e2add187fd database petition logging system 2023-08-13 18:06:45 -05:00
FatBoy fd9fe8967c investigate serialization of petition message 2023-08-13 16:01:20 -05:00
FatBoy cbba05687d add handler ot petition super 2023-08-13 15:45:11 -05:00
FatBoy 480e0c69da remove case for petition form message pump 2023-08-13 15:35:47 -05:00
FatBoy 490a1bd8e5 structure for petition received handler 2023-08-13 13:45:07 -05:00
MagicBot 1ecf1d4bc2 Merge remote-tracking branch 'origin/feature-branch-branch' into bugfix-marksmanship 2023-08-13 10:34:02 -04:00
MagicBot d21921cb6d Typo in command string. 2023-08-13 09:44:28 -04:00
MagicBot 04534e2ca6 Current repo branch reported during bootstrap. 2023-08-13 09:43:06 -04:00
MagicBot 4cd180141c Read current repo branch using MB Devops script. 2023-08-13 09:39:16 -04:00
MagicBot 895b87ae05 Class cleanup. Formatting, squiggles and unused code/variables. 2023-08-13 08:16:02 -04:00
MagicBot 1c9b7594d3 Class cleanup. Formatting, squiggles and unused code/variables. 2023-08-13 08:13:27 -04:00
FatBoy 58fe2d93b7 weapon range bonus works again 2023-08-12 19:58:27 -05:00
FatBoy a278f8bc79 range bonus confined to 1 spot 2023-08-12 19:41:44 -05:00
FatBoy 8c287154c8 players to use marksmanship again 2023-08-12 19:07:50 -05:00
MagicBot 962ad4277a Unnecessary cast removed. 2023-08-12 07:46:24 -04:00
MagicBot a7495bf942 Bugfix: R8 slot locations. 2023-08-12 06:16:12 -04:00
MagicBot 1ee80f9697 Bugfix in console port output. 2023-08-11 09:44:16 -04:00
MagicBot 9f541813ef Merge remote-tracking branch 'origin/master' into bugfix-gold-healing 2023-08-11 08:27:19 -04:00
MagicBot 9a12c9b044 Bugfix in character deletion. 2023-08-11 08:20:01 -04:00
MagicBot 049562af5c Typo in help string fixed. 2023-08-11 07:47:23 -04:00
FatBoy 89681cbe3e non-active mines can be fixed by gold 2023-08-10 19:43:37 -05:00
MagicBot bafb48fe14 Merge remote-tracking branch 'origin/feature-gambler' into bugfix-mob-casting 2023-08-09 18:31:51 -04:00
MagicBot 015e6301fb ErrorPopup for fate peddler encumbrance. 2023-08-09 17:58:11 -04:00
MagicBot 1efb9daff8 ErrorPopup for fate peddler encumbrance. 2023-08-09 17:52:39 -04:00
FatBoy 8747890e5e fate peddler work 2023-08-09 15:50:56 -05:00
MagicBot 41c56c150a Version update to 1.5.1 2023-08-09 16:03:53 -04:00
FatBoy 7c931e87a4 fate peddler work 2023-08-09 14:53:05 -05:00
FatBoy 39e0059f28 Merge remote-tracking branch 'origin/bugfix-mob-casting' into feature-gambler 2023-08-09 14:48:48 -05:00
FatBoy 1b77eeabc0 fate peddler work 2023-08-09 14:48:22 -05:00
MagicBot 7ce664458f Server requires a min of 15 database connections to boot. 2023-08-09 08:57:50 -04:00
MagicBot db2e9a282a Only one piece of equip drops at a time. 2023-08-09 08:17:53 -04:00
MagicBot 32b5dd3f66 Bugfix: suffix overwrites prefix. 2023-08-09 07:39:10 -04:00
FatBoy d53bf0f66e fate peddler work 2023-08-08 20:37:31 -05:00
FatBoy 04fcdd2545 disable anniversary gift 2023-08-08 19:43:51 -05:00
FatBoy 5702810108 fate peddler work 2023-08-08 19:37:42 -05:00
FatBoy 47eb4cd536 fate peddler conversion of LootManager methods 2023-08-08 19:32:39 -05:00
FatBoy 626c17f100 Merge branch 'bugfix-mob-casting' into feature-fatePeddler 2023-08-08 19:25:50 -05:00
MagicBot 64ca876920 CanAggro check added to guard logic. 2023-08-08 19:08:51 -04:00
MagicBot b96b222327 Booty moved to LootManager 2023-08-08 18:30:21 -04:00
MagicBot d04ee197d9 Schema change to reflect new package. 2023-08-08 18:25:40 -04:00
FatBoy 9805ee8044 Random to utilize max + 1 2023-08-08 15:43:24 -05:00
FatBoy 0e78902ff6 ranged mobs attack at range again 2023-08-08 14:22:49 -05:00
FatBoy 923447e983 infinite loop fix 2023-08-08 13:36:46 -05:00
FatBoy e88e8b56c6 mobs only toggle combat mode when changing combat target 2023-08-08 12:49:25 -05:00
FatBoy 6e255d9c75 guards hate value change target 2023-08-08 11:51:04 -05:00
FatBoy 59c976c073 guards use hate value 2023-08-08 11:45:42 -05:00
FatBoy 49c403bacc aiInfo display hate value 2023-08-08 11:43:27 -05:00
FatBoy f852037a61 guard minion aggro fixed 2023-08-08 11:30:19 -05:00
MagicBot 9f0fb26e1f Need to preserver order of hashmap insertion. 2023-08-08 12:24:27 -04:00
FatBoy 564968a1e3 scaling guard powers based on rank 2023-08-08 11:07:41 -05:00
FatBoy c8b91fc264 aggro raneg configurable 2023-08-08 10:56:33 -05:00
FatBoy ec43c54aff mob cast delay cached 2023-08-08 10:54:36 -05:00
MagicBot 2ce13ac463 typo in sql 2023-08-08 11:24:13 -04:00
MagicBot 1cc8d2919a DD is last element in contract power list. 2023-08-08 11:19:18 -04:00
MagicBot 35dc1239f8 Record sort ASC is required. 2023-08-08 11:12:32 -04:00
MagicBot 31122cf6d3 AIinfo updated with token list. 2023-08-08 11:01:05 -04:00
MagicBot 434078cebf Power loading work. 2023-08-08 10:44:26 -04:00
MagicBot 1fb2d8cadf Power loading work. 2023-08-08 10:39:19 -04:00
MagicBot fbf865e865 Methods moved to new dbPowersHandler. 2023-08-08 10:32:20 -04:00
MagicBot 0b1df09f3a Refactor of mob powers loading for efficiency. 2023-08-08 10:30:20 -04:00
MagicBot 2e6ebbb9c3 Refactor of mob powers loading for efficiency. 2023-08-08 10:29:01 -04:00
MagicBot 071eb26e48 Powers also loaded from contract. 2023-08-08 08:31:11 -04:00
MagicBot 2a75ab4581 Merge remote-tracking branch 'origin/post-loot-cleanup' into bugfix-mob-casting 2023-08-08 08:07:41 -04:00
FatBoy 6c255323fb vendors now require ranks to roll high tier items 2023-08-07 22:06:45 -05:00
MagicBot a392c5213c Method cleanup. 2023-08-07 15:52:50 -04:00
MagicBot e382ba2b9a Always at least one stat rolled. 2023-08-07 15:00:18 -04:00
MagicBot 557292a56d Removed unused code. 2023-08-07 14:31:33 -04:00
MagicBot 339b6c5025 Using LootManager for forge scaling. 2023-08-07 13:55:22 -04:00
MagicBot b05c4a91e5 Using LootManager for forge scaling. 2023-08-07 13:53:16 -04:00
MagicBot a5ab912ffa Method for adjusted table rolls based on mpc level. 2023-08-07 13:36:16 -04:00
MagicBot b84be6eea8 Last vestiges of old loot system removed. 2023-08-07 12:12:52 -04:00
MagicBot 71875059b6 Update table names for new convention. 2023-08-07 10:52:37 -04:00
MagicBot 6e814c1dcd Refactor to install new loot tables. 2023-08-07 10:17:50 -04:00
MagicBot 985b327b69 Refactor to install new loot tables. 2023-08-07 10:16:30 -04:00
MagicBot 8a5924eeee rollTable() method added to loot classes. 2023-08-07 09:42:40 -04:00
MagicBot 2e59f7f01c Garbage Peddler method removed. 2023-08-07 09:03:38 -04:00
MagicBot f7fd544a00 _modtypeTables populated at startup. 2023-08-07 08:58:44 -04:00
MagicBot 8c4d9b66ef _modTables populated at startup. 2023-08-07 08:49:43 -04:00
MagicBot 32d71df837 _itemTables populated at startup. 2023-08-07 08:39:08 -04:00
MagicBot efe7784a3f _itemTableEntry created.
Class init cleaned up.
2023-08-07 08:22:37 -04:00
FatBoy a5af696806 guard powers 2023-08-06 19:44:20 -05:00
FatBoy 23783ec7cd spacing cleanup 2023-08-06 17:54:01 -05:00
FatBoy 0d2ea32dbd guards nuke more than they debuff 2023-08-06 17:42:24 -05:00
FatBoy 915f93dc2d safe guards dont aggro pets 2023-08-06 17:11:22 -05:00
MagicBot 8f71c8af01 _genTables populated. 2023-08-06 18:09:34 -04:00
MagicBot 6acc422345 _genTables populated. 2023-08-06 18:08:31 -04:00
FatBoy dde98c7c58 guard casting work 2023-08-06 17:07:25 -05:00
MagicBot dd756d4c00 _genTables populated. 2023-08-06 18:00:45 -04:00
MagicBot 0013020bfa New consolidated loot db handler.
Booty loading moved into new handler.
2023-08-06 17:47:49 -04:00
MagicBot 14e7b0395c New _genTables collection defined. 2023-08-06 17:44:30 -04:00
MagicBot f8b09b5f33 Class moved to loot package. 2023-08-06 14:04:06 -04:00
MagicBot a3a2b01ec4 Method moved to manager class. 2023-08-06 08:36:16 -04:00
MagicBot f0503aa63b Junk code removal. 2023-08-06 08:17:15 -04:00
MagicBot ff7e1ae8c1 Junk code removal. 2023-08-06 07:59:27 -04:00
MagicBot e424441380 Booty loot table is a gentable entry. 2023-08-06 07:53:33 -04:00
MagicBot 67bcb9aeea Refactor lootTable/itemtable for client alignment. 2023-08-06 07:21:49 -04:00
FatBoy 345a866f50 mele guards dont cast 2023-08-06 00:07:01 -05:00
FatBoy 5d1ccc437c mele guards dont cast 2023-08-06 00:04:42 -05:00
FatBoy d221daa864 guard power work 2023-08-05 23:38:24 -05:00
FatBoy a79562de01 random extra spell cooldown to stagger 2023-08-05 23:23:27 -05:00
FatBoy c4af45b9e5 guard casting system 2023-08-05 23:10:06 -05:00
FatBoy 2aabafdab8 fixed mob cast effect 2023-08-05 22:54:41 -05:00
FatBoy 2b4b79e339 updated naming convention of variables to conform to client data 2023-08-05 22:38:33 -05:00
MagicBot 0337ac7758 Gold drop rate display fix. 2023-08-05 20:11:07 -04:00
MagicBot e1f96a009b Display effective drop rate. 2023-08-05 19:46:29 -04:00
MagicBot 81fe6c4e2a Removed integer input. 2023-08-05 19:42:26 -04:00
MagicBot cc9b5a93ee Header added to new files. 2023-08-05 19:28:53 -04:00
MagicBot 51dfc3a56b Hotzone affects base rate. 2023-08-05 19:23:58 -04:00
MagicBot 98b9567302 Hotzone table only ran once. 2023-08-05 18:49:48 -04:00
MagicBot 820eeaee72 Bootysim displays chance. 2023-08-05 18:42:43 -04:00
MagicBot 258bda22da Bootysim displays chance. 2023-08-05 18:39:17 -04:00
MagicBot 15a167905c Config drop rates modify chance. 2023-08-05 17:46:34 -04:00
MagicBot a2c6b919d4 Table refactor to conform with sb. 2023-08-05 10:48:21 -04:00
MagicBot 42069fe170 Table refactor to conform with sb. 2023-08-05 10:38:21 -04:00
MagicBot a7abe6c4c5 Table refactor to conform with sb. 2023-08-05 10:28:32 -04:00
MagicBot 0568dc0771 Table refactor to conform with sb. 2023-08-05 10:17:37 -04:00
MagicBot 1c5d1cef70 Table refactor to conform with sb. 2023-08-05 10:11:31 -04:00
MagicBot 5970d6d716 Cleanup of random usage. 2023-08-05 09:39:16 -04:00
MagicBot 0d9ab6c6fd Testing pure unmodified booty entries. 2023-08-05 08:47:48 -04:00
FatBoy 516fa59068 NPCs will now buy items based on how much durability is on the item 2023-08-04 20:03:31 -05:00
FatBoy 64aef11c56 mob equipment takes damage upon death 2023-08-04 19:47:21 -05:00
FatBoy 17f099386a enchanted and non enchanted items show up correctly as "unidentified" 2023-08-04 19:27:49 -05:00
FatBoy 91842add6d item identification defaults work 2023-08-04 19:14:40 -05:00
FatBoy 4a0a00ed95 removed custom "chance" for prefix and suffix 2023-08-04 19:06:48 -05:00
MagicBot 068d9cd719 Signature update in loot generation. 2023-08-04 14:01:12 -04:00
MagicBot ae8eef640b Formatting cleanup. 2023-08-04 13:25:13 -04:00
MagicBot 8fad2780c1 multiplier not used for item drops. 2023-08-04 13:16:44 -04:00
MagicBot 8b1fb98b09 Drop rate not used for equipment drops. 2023-08-04 13:09:09 -04:00
MagicBot 2cbb112f09 Drop rate not used for equipment drops. 2023-08-04 13:04:57 -04:00
MagicBot c5c323a316 Rework of drop rate usage. 2023-08-04 12:23:55 -04:00
MagicBot 7ac78df913 Rework of drop rate usage. 2023-08-04 12:21:22 -04:00
MagicBot 5e01fe97ac Removed pre-Booty roll from Loot Drops.
Renamed methods for clarity.
2023-08-04 10:14:45 -04:00
MagicBot bf29e5868e Merge branch 'feature-hotzone-rolls' of http://repo.magicbane.com/MagicBane/Server into feature-hotzone-rolls
 Conflicts:
	src/engine/gameManager/LootManager.java
2023-08-04 10:11:19 -04:00
MagicBot 31e32cfcf4 Removed initial bootySet roll. 2023-08-04 10:10:19 -04:00
FatBoy ef7d75ba9b min roll increased to 70 2023-08-03 21:07:07 -05:00
FatBoy c514cad1d9 no enchant item identification 2023-08-03 20:44:25 -05:00
FatBoy f79ac6f836 revert min roll change 2023-08-03 20:29:13 -05:00
FatBoy b9f939c8b2 identify loot without prefix or suffix 2023-08-03 20:26:44 -05:00
FatBoy 060e9f330c fix for base value check 2023-08-03 20:06:47 -05:00
FatBoy d903bc767c fix wrong display for hotzone lot table in simulatebooty 2023-08-03 19:59:20 -05:00
FatBoy 42967693d0 autoID if value = baseValue 2023-08-03 19:56:32 -05:00
FatBoy 92cb741822 equipment drops added to simulate booty command 2023-08-03 19:34:42 -05:00
FatBoy 32653216e9 added hotzone tables to simulate booty command 2023-08-03 19:27:48 -05:00
FatBoy 9a03dc36c6 add goldTally to simulateBooty command 2023-08-03 19:24:35 -05:00
FatBoy 0e35eea036 hotzone slightly increase mob min roll 2023-08-03 19:21:35 -05:00
FatBoy a09ce6b4fc cleanup and lots of null checks 2023-08-03 19:18:05 -05:00
MagicBot 765b837df0 Unused methods deleted. 2023-08-03 15:20:31 -04:00
MagicBot fda3386e7b Multiple inner classes extracted from LootManager. 2023-08-03 09:43:30 -04:00
MagicBot 0bb756521b Update console Lootmanager bootstrap message. 2023-08-03 09:09:23 -04:00
MagicBot 95a9e45391 Caching of drop rates within LootManager 2023-08-03 09:04:20 -04:00
MagicBot 4e01c8e794 Moved manager class to manager package 2023-08-03 08:27:08 -04:00
MagicBot 1df78ec1fc Merge remote-tracking branch 'origin/master' into feature-hotzone-rolls 2023-08-03 08:23:24 -04:00
FatBoy 7cdcc3d23d cleanup 2023-08-02 20:09:17 -05:00
FatBoy 66b047d091 cleanup 2023-08-02 20:09:07 -05:00
FatBoy 75f54ae562 normal loot and hotzone loot test 2023-08-02 20:06:46 -05:00
FatBoy 500763fd11 cleanup 2023-08-02 20:01:46 -05:00
FatBoy ae8ead825d error catch for prefix and suffix generation 2023-08-02 19:57:32 -05:00
FatBoy 86e8fe19d4 removed unused method parameter 2023-08-02 19:49:34 -05:00
FatBoy a9af791d02 removed unused import 2023-08-02 19:48:50 -05:00
FatBoy 5ad9112448 incoroporate gold rate, method cleanup 2023-08-02 19:45:18 -05:00
MagicBot 090d3b4372 New config entry added for server gold rates. 2023-08-02 17:44:22 -04:00
MagicBot c3bcdd544e Class formatting cleanup. 2023-08-02 09:12:13 -04:00
MagicBot dea9d93e5b Class formatting cleanup. 2023-08-02 09:10:51 -04:00
MagicBot a299493bd7 Cleanup of file project headers. 2023-08-02 08:18:50 -04:00
MagicBot 350a1208f5 Try-catch surrounding respawn code. 2023-08-02 08:07:41 -04:00
FatBoy b8cb90cdd0 mob pulse delay added to mobAI 2023-08-01 21:26:14 -05:00
FatBoy b47848d63d mob drop combat targets no longer in game 2023-08-01 20:32:02 -05:00
FatBoy 140a9bd084 mob AI new thread 2023-08-01 20:13:23 -05:00
FatBoy 5e0b4ad763 respawn while loop addition 2023-08-01 19:50:52 -05:00
FatBoy 370efe1092 forget about that 2023-08-01 19:27:46 -05:00
FatBoy 50cd9b32db rename comment in WorldServer for mob respawn thread 2023-08-01 19:21:11 -05:00
FatBoy 7f1e537975 mob respawning handled in its own thread 2023-08-01 19:19:39 -05:00
FatBoy cdd074c0ae respawn que null check 2023-08-01 18:56:56 -05:00
FatBoy bab033be2d mobAI error tracing 2023-08-01 18:52:44 -05:00
FatBoy 1b6dcd4da0 AuditAI command implemented and functions 2023-08-01 17:53:45 -05:00
FatBoy 7cc5e0cf5c timestamp to console after each completed iteration of MobileFSMManager 2023-08-01 17:22:34 -05:00
FatBoy 685dd948e2 asset placement validation to use city location not players location 2023-07-31 21:55:20 -05:00
FatBoy 93359ae147 hotzone roll tweaks 2023-07-31 21:28:41 -05:00
FatBoy 48817d7ecb hotzone roll tweaks 2023-07-31 20:42:56 -05:00
FatBoy 38339eae3f hotzone roll tweaks 2023-07-31 19:20:41 -05:00
MagicBot 140ec1b08d Hotfix: Removing extra glass roll. 2023-07-31 14:00:37 -04:00
MagicBot be7156e6f6 Merge remote-tracking branch 'origin/bugfix-ITEM-chance' 2023-07-31 05:14:37 -04:00
FatBoy be84b85b69 fixed insane glass drops 2023-07-30 19:52:11 -05:00
MagicBot 0a36d2786c Merge remote-tracking branch 'origin/bugfix-ITEM-chance' 2023-07-30 17:06:21 -04:00
FatBoy e0f62c0a9b ITEM loot uses chance to drop 2023-07-30 16:05:21 -05:00
FatBoy f5375bca26 ITEM loot uses chance to drop 2023-07-30 15:57:01 -05:00
MagicBot f03d6da6b2 Merge remote-tracking branch 'origin/cleanup-loot-rewrite' 2023-07-30 15:16:48 -04:00
FatBoy 46bb1cd8e8 tweak roll ranges, fix r8 loot bug 2023-07-30 14:05:28 -05:00
FatBoy c104d9fa00 r8 loot roll work 2023-07-30 13:55:08 -05:00
FatBoy 23af1d252e cleanup loot manager 2023-07-30 11:43:26 -05:00
FatBoy 1e5752736a mine towers can be gold repaired when mine not active 2023-07-29 21:37:36 -05:00
FatBoy 707fc9f756 fixed mob loot crash 2023-07-29 20:57:24 -05:00
FatBoy 4932ee36ea catch code for loot crash 2023-07-29 19:04:59 -05:00
FatBoy 99fc4b8671 fixed HZ loot issue 2023-07-27 23:39:14 -05:00
FatBoy e9913a66a7 fixed mob AI crash 2023-07-27 23:17:41 -05:00
FatBoy 57a38303f8 null pointer evasion 2023-07-27 23:10:00 -05:00
FatBoy b28d31ec44 respawn que work 2023-07-27 22:10:47 -05:00
FatBoy 6e1ed24b30 respawnQues operate per zone 2023-07-27 21:22:20 -05:00
FatBoy adb3436bd7 mobs handle players leaving agroMap 2023-07-27 21:18:52 -05:00
FatBoy c0bac56761 corpse loading early exit changed to despawned instead of alive 2023-07-27 20:39:47 -05:00
FatBoy ff281cc20b respawnQue and corpse loading 2023-07-27 20:32:09 -05:00
FatBoy 6a4ae0af31 created respawnQue for mobs 2023-07-27 20:03:14 -05:00
FatBoy 4ccfd0adce baked in stats items no longer show up as "unidentified" 2023-07-27 19:54:47 -05:00
FatBoy 6d4566b94a mob loot rolling finalized 2023-07-27 19:40:42 -05:00
FatBoy 1fa5019ddb regression formula for min mob loot roll 2023-07-27 19:06:31 -05:00
FatBoy a5fe5ece50 mobs use both enemy and notEnemy lists to determine proper agro 2023-07-25 21:51:30 -05:00
FatBoy 62cc334c66 guards no longer attack guards 2023-07-25 21:42:50 -05:00
FatBoy a9fb7969c7 Merge branch 'bugfix-roll-ranges' into merge-mob-fixes 2023-07-25 21:40:30 -05:00
FatBoy 9f90159ca2 audit respawn timers 2023-07-25 21:35:09 -05:00
FatBoy 055b3d3d66 update location 2023-07-25 21:27:54 -05:00
FatBoy 6761ec7361 remove movement sync 2023-07-25 21:19:17 -05:00
FatBoy 763971acc6 regression calculator usage 2023-07-25 21:07:40 -05:00
FatBoy 74d92aa671 mob max roll audit 2023-07-25 20:59:23 -05:00
MagicBot 43090a9bd1 Support for the widest array of network configurations. Auto-configure as best we can. 2023-07-23 12:58:40 -04:00
MagicBot e57ce5b36e Parmn one not set twice. 2023-07-23 11:34:30 -04:00
MagicBot 6eecf28a64 Logging configured map path. 2023-07-23 08:22:17 -04:00
MagicBot c9f1fcbf51 File structure update. 2023-07-23 08:19:15 -04:00
MagicBot 303ccd05b5 File structure update. 2023-07-23 08:16:36 -04:00
MagicBot d9d905e34a File structure update. 2023-07-23 08:15:39 -04:00
MagicBot 9f906128c4 File structure update. 2023-07-23 08:02:46 -04:00
FatBoy fca9b7dccb cleanup and finalize 2023-07-22 18:58:55 -05:00
FatBoy 48bcf1bd1f removed distance check preventing pets from attacking 2023-07-22 18:47:29 -05:00
FatBoy 3f274b1bf8 region support for teleporting 2023-07-22 13:24:58 -05:00
FatBoy 8a8bf8d2f9 region support for teleporting 2023-07-22 12:44:59 -05:00
MagicBot 53bae6e34f Merge remote-tracking branch 'origin/bugfix-stuck-location' 2023-07-22 13:26:11 -04:00
MagicBot 7f5d5dbad2 Footprint adjusted to match mesh. 2023-07-22 13:07:04 -04:00
MagicBot c06bc97640 Only rotate once 2023-07-22 11:04:32 -04:00
MagicBot 5899bb535b Stuck location rotated properly. 2023-07-22 11:02:03 -04:00
MagicBot bf1271c840 Slot not rotated twice. 2023-07-22 10:44:36 -04:00
MagicBot 8b2a07e860 Unused method removed. 2023-07-22 10:40:54 -04:00
FatBoy 7e25875fa2 mobs respawn, mob location sync, mobs attack 2023-07-22 08:26:55 -05:00
FatBoy a34386ae51 mob resync position on death and while moving 2023-07-21 20:01:39 -05:00
MagicBot 413e782af1 NPC slotting now conforms with bootstrap. 2023-07-21 13:15:24 -04:00
MagicBot ccc9908e1e NPC/Mob slotting work. 2023-07-21 13:08:42 -04:00
MagicBot 90c324b363 NPC/Mob slotting work. 2023-07-21 12:50:52 -04:00
MagicBot 1260d7cfa3 Errant import removed. 2023-07-21 12:00:06 -04:00
MagicBot e15075f57f Merge remote-tracking branch 'origin/debug-pet-stats' 2023-07-20 17:04:26 -04:00
FatBoy 2cf02ba102 fix NPC loading issue 2023-07-19 19:45:13 -05:00
FatBoy 25c02c9960 fix NPC loading issue 2023-07-19 19:43:28 -05:00
FatBoy 7f2c6a24b6 fix NPC loading issue 2023-07-19 19:42:02 -05:00
FatBoy e2272f49d4 fix NPC loading issue 2023-07-19 19:03:06 -05:00
FatBoy aa0067c117 fix for mob sync and ghost mobs 2023-07-19 18:27:10 -05:00
FatBoy 07c64f9b46 hotfix mob roll finalized 2023-07-19 18:05:20 -05:00
FatBoy 4adf0a89fb hotfix mob roll chance 2023-07-19 17:50:03 -05:00
FatBoy 4bd158cc78 hotfix mob roll chance 2023-07-19 17:18:46 -05:00
FatBoy 39ceef99ea hotfix mob roll chance 2023-07-19 17:17:40 -05:00
MagicBot 69d8424cb6 Improved error reporting 2023-07-19 15:43:58 -04:00
FatBoy 3869b3b218 old code cleanup 2023-07-18 20:17:05 -05:00
FatBoy 4fd9a358a6 pets will stop chasing mobs that are no longer a threat to player 2023-07-18 20:09:37 -05:00
FatBoy c9995f3d62 pets defend owner when "assist" toggled 2023-07-18 20:01:58 -05:00
FatBoy 1c7c0ee13e mobs aggro to pets 2023-07-18 19:51:00 -05:00
FatBoy bd48198a51 pets stats calculate properly & pet buffs no longer nerf pet 2023-07-18 19:29:12 -05:00
MagicBot 170312fef8 Placement check set to 876 to accommodate larger zone sizes. 2023-07-18 16:09:41 -04:00
FatBoy 60f02ae34e mob roll tables update 2023-07-17 22:27:55 -05:00
FatBoy 72a0fc458e mob roll tables update 2023-07-17 22:25:54 -05:00
MagicBot 727ccf3b12 ZoneSet DevCmd created. 2023-07-17 04:22:56 -04:00
MagicBot 0cde9de388 Testing Zone set. 2023-07-17 04:06:06 -04:00
MagicBot ea0370ac51 Merge remote-tracking branch 'origin/master' into bugfix-loot-rolls 2023-07-16 14:44:17 -04:00
FatBoy 45fa191ef6 prefix and suffix chances added to mobloot 2023-07-16 11:35:54 -05:00
FatBoy 68e87dabbc prefixes drop on mobloot 2023-07-16 09:53:18 -05:00
FatBoy 428ded8728 roll ranges fixed to allow all items to drop naturally 2023-07-16 09:04:21 -05:00
MagicBot c04a342890 Update to sql for better default mysql.cnf compatibility. 2023-07-16 07:52:10 -04:00
FatBoy c72cda1b73 pets attack buildings 2023-07-15 22:34:09 -05:00
FatBoy 9db568206d pet stats added again 2023-07-15 21:57:27 -05:00
FatBoy 9ea02c888f pet troubles resolved 2023-07-15 18:38:46 -05:00
FatBoy 8720f8f335 loot roll formula adjusted 2023-07-15 17:00:58 -05:00
FatBoy 06c4b7ca3c ghost mob fix 2023-07-15 15:48:11 -05:00
FatBoy 8c1b237720 dead pets removed form seafloor zonemobset 2023-07-15 15:39:57 -05:00
FatBoy 7dc6fece7d work on pet AI 2023-07-15 15:27:22 -05:00
FatBoy e0929a4cbd pets added to seafloor mob set 2023-07-15 14:20:50 -05:00
FatBoy 18bcd79733 pets now spawn at owners location 2023-07-15 14:08:44 -05:00
FatBoy 525facf7b5 remote commit 2023-07-15 13:27:35 -05:00
FatBoy 38317a4ee5 cast chance and cooldown modification for mobs 2023-07-15 08:35:00 -05:00
FatBoy eb9a214ba3 cast chance and cooldown modification for mobs 2023-07-15 08:33:57 -05:00
MagicBot f9870d45fc Merge remote-tracking branch 'origin/magicbot-reg-update' into magicbox1.5
# Conflicts:
#	src/engine/ai/MobileFSM.java
#	src/engine/ai/MobileFSMManager.java
#	src/engine/devcmd/cmds/SetAICmd.java
#	src/engine/gameManager/DevCmdManager.java
2023-07-15 09:27:57 -04:00
MagicBot 9bbdef224d Project cleanup pre merge. 2023-07-15 09:23:48 -04:00
MagicBot 134b651df8 Version requirement updated. 2023-07-15 09:18:51 -04:00
MagicBot 0a15e3e75b Removed leftover discriminator. 2023-07-15 09:12:33 -04:00
FatBoy 9a68509847 Merge branch 'magicbox1.5' of http://repo.magicbane.com/MagicBane/Server into magicbox1.5 2023-07-15 07:59:29 -05:00
FatBoy 9f162e9ed0 last minute cleanup, added cast chance to mobs 2023-07-15 07:59:07 -05:00
MagicBot 003916d393 Parm required when registering. 2023-07-14 14:41:12 -04:00
MagicBot 46d50d315a Unused methods removed. 2023-07-02 07:46:45 -04:00
MagicBot f73aed9d48 Merge remote-tracking branch 'origin/magicbox1.5' into configupdate2 2023-07-01 13:05:23 -04:00
FatBoy 761adca2ef guards no longer recall when player aggro map is empty 2023-06-30 21:02:51 -05:00
FatBoy b32705ce56 mob casting will now check for and properly check against hit roll requirements 2023-06-30 20:33:41 -05:00
MagicBot 4dc40f4df4 Back to offset until city cleanup. 2023-06-27 18:21:26 -04:00
MagicBot 4b49777eb2 Simplify logic. 2023-06-27 18:01:59 -04:00
MagicBot cb25333dc3 SDR binds at banestone 2023-06-27 17:35:33 -04:00
MagicBot 34e4aa1963 SDR binds at banestone 2023-06-27 17:34:25 -04:00
MagicBot 7810ea6baf SDR binds at banestone 2023-06-27 17:30:13 -04:00
MagicBot 89399e9f93 bugfix: case issue 2023-06-27 16:55:09 -04:00
MagicBot d08316d6f3 Ruins or SDR driven by config. 2023-06-27 16:50:38 -04:00
MagicBot b383aab556 Ruins or SDR driven by config. 2023-06-27 16:45:47 -04:00
MagicBot 9cd3cdf3a3 Mob AI uses two config entries. 2023-06-27 16:19:15 -04:00
MagicBot 7f05cc87c4 Mob AI and SDR/Ruins added to config. 2023-06-27 16:13:25 -04:00
MagicBot 92004bf43e Mob AI and SDR/Ruins added to config. 2023-06-27 16:09:55 -04:00
FatBoy ef0e277f46 refactored AI variables from MBServerStatics 2023-06-26 20:21:10 -05:00
MagicBot 2ffd2e37e6 Class cleanup and reformat. 2023-06-26 19:19:59 -04:00
MagicBot 7d1d1e19d2 Logging of invalid contracts 2023-06-26 18:45:40 -04:00
MagicBot bea82d80f2 Logging of invalid contracts 2023-06-26 18:35:51 -04:00
FatBoy cb344d57b2 guard dogs have 0 minions 2023-06-25 21:44:47 -05:00
FatBoy 99a4d87982 guard dogs 2023-06-25 21:34:23 -05:00
FatBoy 1b94f3f71d guard dogs 2023-06-25 21:32:36 -05:00
FatBoy b2ce937b3f guard minion spawn work 2023-06-25 20:23:47 -05:00
FatBoy 5653776cb2 guard minions despawn at creation 2023-06-25 20:18:02 -05:00
FatBoy 413df09ddf removed error code in FSM manager 2023-06-25 19:51:52 -05:00
FatBoy fc3ca3b814 null target check for mobs 2023-06-25 19:44:27 -05:00
FatBoy 7b43440fae mobs start the game at their first patrol point index 2023-06-25 19:32:49 -05:00
FatBoy 01b8b67ffd mobs respect invisibility again 2023-06-25 19:30:28 -05:00
MagicBot 8fbbde6d69 bugfix in world height calculation. 2023-06-25 20:25:23 -04:00
FatBoy da51be1bef Mob Casting bypasses mele range check 2023-06-25 13:36:24 -05:00
MagicBot 764beb33bd Dispatcher moved to early in bootstrap. 2023-06-07 15:31:07 -04:00
MagicBot f8c8d7244e Moved member to ConfigManager. 2023-06-07 14:53:15 -04:00
MagicBot b6ce3b7ee9 Already logged when connection manager is created. 2023-06-07 14:32:01 -04:00
MagicBot 48aef2ef01 Network autoconfig now uses eth0 or default outgoing ip route. 2023-06-07 14:11:54 -04:00
MagicBot 61e4a4aed4 Realmmap loaded from config to assist with custom maps. 2023-06-07 13:47:25 -04:00
MagicBot b9db6e8dc6 Members moved to WorldServer.
Root object no longer read from config.
2023-06-07 13:37:43 -04:00
FatBoy d695d3db26 epic mob damage calc fix and epic mob null reference fix 2023-05-28 16:07:18 -05:00
FatBoy ca11651be6 guards use proper aggro rules for added aggro check 2023-05-28 15:45:38 -05:00
FatBoy 2cfe527389 mob AI no longer checks for no online players 2023-05-28 14:12:31 -05:00
FatBoy f94e66bf74 mobs update location after moving to patrol point index 2023-05-28 14:05:58 -05:00
FatBoy ff3442d9ad aiinfo command null check 2023-05-28 14:02:05 -05:00
FatBoy 33c6f1c74d patrol point index 2023-05-28 13:48:15 -05:00
FatBoy da378bf490 patrol point index 2023-05-28 13:31:39 -05:00
FatBoy b3b7a78cec patrol point index 2023-05-28 13:28:22 -05:00
FatBoy 545163f60b traget name added to aiInfoCmd 2023-05-28 13:13:49 -05:00
FatBoy bfcdd3bf4b mobile default starting point 2023-05-28 12:56:47 -05:00
FatBoy 67808b69a6 check for dead target 2023-05-28 12:07:00 -05:00
FatBoy 59a4da0c3f randomized patrol delays 2023-05-28 11:34:54 -05:00
FatBoy fd9c5d06af randomized patrol delays 2023-05-28 11:30:46 -05:00
FatBoy 19beb3d5cb randomized patrol delays 2023-05-28 11:29:00 -05:00
FatBoy 863aa4c4a9 randomized patrol delays 2023-05-28 11:25:12 -05:00
FatBoy 90ae798bb8 no more skating rink 2023-05-28 11:19:32 -05:00
FatBoy c47d1b7823 aggro check for non agressive mobs 2023-05-28 11:03:29 -05:00
FatBoy 4e5c77ec47 hamlet guard aggro fix 2023-05-28 11:02:37 -05:00
FatBoy d673c329b6 hamlet guards + mobs aggro before going home 2023-05-28 10:55:11 -05:00
FatBoy 7dfd8148d5 use aggro range not mob range 2023-05-28 10:47:10 -05:00
FatBoy a2a70484ed cant check range of target if theres no target 2023-05-28 10:46:07 -05:00
FatBoy 36eef1942b mobs use half aggro range top chase targets past go home point 2023-05-28 10:43:05 -05:00
FatBoy b154f7ee7f mobs don't go home while in combat range 2023-05-28 10:21:56 -05:00
FatBoy ea919b4ecf mob aggro raneg when swapping hated target 2023-05-28 10:13:49 -05:00
FatBoy b42a378ca8 hate value reset when mob goes home 2023-05-28 10:11:20 -05:00
FatBoy 3b3e89c98f NPC owner null check 2023-05-28 09:25:15 -05:00
FatBoy 708d2e9fb3 building check fix 2023-05-28 09:19:10 -05:00
FatBoy bee3a9b376 Merge remote-tracking branch 'origin/magicbox1.5' into magicbox1.5
# Conflicts:
#	src/engine/ai/MobileFSM.java
2023-05-28 09:18:09 -05:00
MagicBot 566522befb Reformat and bonus code removal. 2023-05-28 08:12:34 -04:00
MagicBot a1f8fedefe Merge remote-tracking branch 'origin/magicbox1.5' into mob-AI-debug
# Conflicts:
#	src/engine/ai/MobileFSM.java
2023-05-28 07:42:10 -04:00
FatBoy 0de09ee9f5 trebs now show correct time remaining to spawn 2023-05-27 22:00:12 -05:00
FatBoy 0d2af7c011 treb fix 2023-05-27 20:54:16 -05:00
FatBoy 11e373db6f treb fix 2023-05-27 20:53:52 -05:00
FatBoy 2e219916a0 respawn work 2023-05-27 19:19:06 -05:00
FatBoy a07ee7903b respawn work 2023-05-27 19:11:17 -05:00
MagicBot abb2521f58 Bug class involving generated keys from statements. 2023-05-26 17:46:26 -04:00
MagicBot d0287ba94e Login should fail fast. 2023-05-25 14:55:49 -04:00
FatBoy 56d6efc4e4 mob chance to cast set at 50% 2023-05-24 20:27:58 -05:00
FatBoy b6c9eed229 power chance tuning 2023-05-24 20:08:53 -05:00
FatBoy eb9a1143e4 patrol delay fine tuning 2023-05-24 19:27:25 -05:00
FatBoy 3e659d981a Patrol wait determined by MBServerStatics.AI_PATROL_DIVISOR
mob cast chance now determined by MBStatics.AI_POWER_CHANCE

mob cast cooldown now determined by MBServerStatics.AI_POWER_DIVISOR

guards use normal mob damage calculations
2023-05-24 19:14:23 -05:00
FatBoy d999d60e9a Patrol wait determined by MBServerStatics.AI_PATROL_DIVISOR
mob cast chance now determined by MBStatics.AI_POWER_CHANCE

mob cast cooldown now determined by MBServerStatics.AI_POWER_DIVISOR
2023-05-24 19:05:35 -05:00
MagicBot cb0a89cb03 Fixed pool size auto-calculated. 2023-05-24 08:36:34 -04:00
MagicBot ee137c0146 Fixed pool size auto-calculated. 2023-05-24 08:34:37 -04:00
MagicBot 9edc32de13 Pool - 10 minute idle; 60 min lifetime. 2023-05-24 07:57:36 -04:00
MagicBot c46615f1d2 Logging info update on bootstrap. 2023-05-23 17:30:30 -04:00
MagicBot d7d22dbb11 Populate zone extents cache. 2023-05-23 17:15:07 -04:00
MagicBot bcc1ac115d bug class fixed involving rs usage 2023-05-23 14:29:08 -04:00
MagicBot adcf7ca927 Updated Hikari pool configuration. 2023-05-23 14:06:15 -04:00
MagicBot f78c18abec Updated Hikari pool configuration. 2023-05-23 13:51:10 -04:00
MagicBot 4f7bb6de0b Using server side statement cache (500). 2023-05-23 13:25:50 -04:00
MagicBot 45d26a82f2 bugfix: runafterload for instanced agos 2023-05-23 12:53:04 -04:00
MagicBot ad99415679 fix: bug class involving rs usage. 2023-05-23 12:24:11 -04:00
MagicBot 568b0291a2 Duplicate method removed. 2023-05-23 11:18:21 -04:00
MagicBot 89192c7ea0 Cleanup post db-refactor. 2023-05-23 11:07:20 -04:00
MagicBot 38ed65054e Cleanup post db-refactor. 2023-05-23 10:56:27 -04:00
MagicBot 391e2d2a17 Cleanup post db-refactor. 2023-05-23 10:50:00 -04:00
MagicBot c6b8d27d53 Refactor to remove abstraction. 2023-05-23 10:42:34 -04:00
MagicBot 3761384dfb Bugfix; method is on rs. 2023-05-23 10:32:07 -04:00
MagicBot 6dd7315786 Garbage cleanup in SetZone().
Package reformat.
2023-05-23 10:27:03 -04:00
MagicBot a2d62ec221 Unused method removed. 2023-05-23 10:08:07 -04:00
MagicBot 4d4d83d15a Unused method removed. 2023-05-23 10:07:39 -04:00
MagicBot 1e3aab1623 Query string updated. 2023-05-23 10:03:05 -04:00
MagicBot f7da137e0f Refactor to remove abstraction 2023-05-23 09:57:17 -04:00
MagicBot 3dd27976fe Refactor to remove abstraction 2023-05-23 09:39:27 -04:00
MagicBot a92ac8671b Refactor to remove abstraction 2023-05-23 09:26:11 -04:00
MagicBot 7c57dcc73d Update to bool return handling. 2023-05-23 09:17:06 -04:00
MagicBot 55756472c6 Bonus code removed. 2023-05-23 08:38:20 -04:00
MagicBot 98237cd53e Refactor to remove abstraction. 2023-05-23 08:33:14 -04:00
MagicBot e9cb8112de Refactor to remove abstraction. 2023-05-23 08:31:10 -04:00
MagicBot fce67a6bae Refactor to remove abstraction. 2023-05-23 08:22:46 -04:00
MagicBot 478e472dc4 Refactor to remove abstraction. 2023-05-23 08:20:20 -04:00
MagicBot 9bdbeeaf70 Refactor to remove abstraction. 2023-05-22 13:00:47 -04:00
MagicBot 3e604b53fa Refactor to remove abstraction. 2023-05-22 12:58:16 -04:00
MagicBot 4b0a3627d4 Refactor to remove abstraction. 2023-05-22 12:50:04 -04:00
MagicBot 3a95cc9b58 Refactor to remove abstraction. 2023-05-22 12:45:55 -04:00
MagicBot f6aa71e9fb Refactor to remove abstraction. 2023-05-22 12:42:34 -04:00
MagicBot d67026edba Refactor to remove abstraction. 2023-05-22 12:35:15 -04:00
MagicBot 75dfc638e1 Pool size auto-configure 2023-05-22 10:34:57 -04:00
MagicBot 07b337f3f1 Pool size fixed 2023-05-22 10:32:15 -04:00
MagicBot 271fc8a35f Pool size auto configured. 2023-05-22 10:21:55 -04:00
MagicBot c7bd2123e8 Pool size auto configured. 2023-05-22 10:11:46 -04:00
MagicBot 5721638cd6 Refactor to remove abstraction. 2023-05-22 09:42:30 -04:00
MagicBot 20bbf85082 Refactor to remove abstraction. 2023-05-22 09:34:59 -04:00
MagicBot 3a2f087381 Refactor to remove abstraction. 2023-05-22 08:54:59 -04:00
MagicBot b8c9d4faf2 Refactor to remove abstraction. 2023-05-22 08:41:25 -04:00
MagicBot 860f7b7b49 Refactor to remove abstraction. 2023-05-22 08:28:58 -04:00
MagicBot b7dd4a845a Refactor to remove abstraction. 2023-05-22 07:57:08 -04:00
MagicBot 1bf9fde684 Bonus code removed. 2023-05-22 07:44:34 -04:00
MagicBot 608a286428 Refactor to remove abstraction 2023-05-22 07:29:22 -04:00
MagicBot 4145124762 Refactor to remove abstraction 2023-05-22 07:18:26 -04:00
MagicBot 9f7da9a57a Refactor to remove abstraction 2023-05-22 06:46:30 -04:00
MagicBot 2cdb2fce42 Refactor to remove abstraction 2023-05-22 06:35:24 -04:00
MagicBot dc9a6fc825 Refactor to remove abstraction 2023-05-22 06:25:51 -04:00
MagicBot 6ae6c91a71 Refactor to remove abstraction 2023-05-22 06:17:40 -04:00
MagicBot ba76de7226 Refactor to remove abstraction 2023-05-22 06:15:19 -04:00
MagicBot 609ee4621e Refactor to remove abstraction 2023-05-22 05:58:30 -04:00
MagicBot 3c9b624ca0 Refactor to remove abstraction 2023-05-22 05:55:33 -04:00
MagicBot 135f66e46f Refactor to remove abstraction 2023-05-22 05:11:55 -04:00
MagicBot 1cd4617c69 Refactor to remove abstraction 2023-05-21 20:26:53 -04:00
MagicBot 8cb0e66bff Refactor to remove abstraction 2023-05-21 20:13:00 -04:00
MagicBot 6ce964ef18 Unnecessary cast 2023-05-21 17:53:21 -04:00
MagicBot db3f97eccf Refactor to remove abstraction. 2023-05-21 17:50:44 -04:00
MagicBot df1b0e3f0f Refactor to remove abstraction. 2023-05-21 17:34:31 -04:00
MagicBot 4749186d86 bugfix: missing break. 2023-05-21 17:29:45 -04:00
MagicBot 82d80ebc4d Refactor to remove abstraction 2023-05-21 17:27:45 -04:00
MagicBot ea5cbf3f0c Refactor to remove abstraction 2023-05-21 17:20:09 -04:00
MagicBot 4d08857de1 Refactor to remove abstraction 2023-05-21 17:00:17 -04:00
MagicBot e203945ea3 Static method moved to manager singleton. 2023-05-21 15:55:15 -04:00
MagicBot ca5cfed82f Refactor to remove abstraction. 2023-05-21 15:48:55 -04:00
MagicBot 0924fa2bdb Refactor to remove abstraction. 2023-05-21 15:28:50 -04:00
MagicBot f299fcaffc Refactor to remove abstraction. 2023-05-21 15:10:27 -04:00
MagicBot 6be3ca41f8 Refactor to remove abstraction. 2023-05-21 14:39:57 -04:00
MagicBot a70c981b47 Refactor to remove abstraction. 2023-05-21 08:57:53 -04:00
MagicBot ea2140559b Bonus Code removed. 2023-05-21 08:39:19 -04:00
MagicBot e4ef0021e8 Refactor to remove abstraction 2023-05-21 08:36:39 -04:00
MagicBot 7b9788bfa9 Refactor to remove abstraction 2023-05-21 08:16:27 -04:00
MagicBot daa5764bfb Refactor to remove abstraction 2023-05-20 21:18:32 -04:00
MagicBot 2e42cbed06 Refactor to remove abstraction 2023-05-20 20:40:52 -04:00
MagicBot 5b3dfbcc21 Refactor to remove abstraction 2023-05-20 19:58:47 -04:00
MagicBot 962649c0f2 Db methods moved to db system. 2023-05-20 19:34:02 -04:00
MagicBot a683eb6290 Refactored to remove abstraction. 2023-05-20 19:14:01 -04:00
MagicBot 4daee03f0d Refactored to remove abstraction. 2023-05-20 19:09:28 -04:00
MagicBot 7e511f590d Created getObjectsFromRs() 2023-05-20 19:02:56 -04:00
MagicBot bffe953c3f Refactor to remove abstraction. 2023-05-20 17:51:21 -04:00
MagicBot c86ad3f2f6 Begin refactor to remove abstraction. 2023-05-20 17:35:44 -04:00
MagicBot 563b54de14 Unused methods removed 2023-05-20 16:33:40 -04:00
MagicBot 82498e8e5a Threadlocal hikari connection defined. 2023-05-20 10:51:25 -04:00
MagicBot e7fa9cc494 Unused methods removed. 2023-05-20 10:43:54 -04:00
MagicBot c04bd92c23 Leak detection threshold set to 5s. 2023-05-20 10:30:34 -04:00
MagicBot 0a31043bc9 Method refactored to use try-with-resources 2023-05-20 10:21:07 -04:00
MagicBot 27ac58518c Method refactored to use try-with-resources 2023-05-20 10:01:40 -04:00
MagicBot 8bafb32e95 Method refactored to use try-with-resources 2023-05-20 10:00:38 -04:00
MagicBot 55d9a3516c Bonus code removed and replaced with a db call actually used. 2023-05-20 09:54:37 -04:00
MagicBot b4b7b08d47 Unused method removed. 2023-05-20 09:51:35 -04:00
MagicBot 553ac01e93 Using baseline for debugging. 2023-05-20 09:43:46 -04:00
MagicBot 0e4490576a Game uses hikaricp for all connection pooling. Connection count set dynamically. 2023-05-20 09:39:23 -04:00
MagicBot 3c5ffed352 Popstring to trywithresources 2023-05-19 07:57:20 -04:00
MagicBot 8b81743cb1 Merge remote-tracking branch 'origin/magicbox1.5' into trywithpass 2023-05-19 07:32:45 -04:00
FatBoy 9b5573c210 guards get Mob.guardedCity assigned to 2023-05-18 19:59:39 -05:00
FatBoy 932daa730a guards use highbred City._playerMemory.size() and Mob.playerAgroMap to go to sleep 2023-05-18 19:54:54 -05:00
FatBoy 0b029a5f79 Merge remote-tracking branch 'origin/mobile-usage-audit' into mobile-usage-audit 2023-05-18 19:49:09 -05:00
FatBoy ac42a9cd8f removed treb override in MobileFSM.DetermineAction 2023-05-18 19:48:37 -05:00
MagicBot 4e863811a1 Removed unused methods. 2023-05-18 08:19:59 -04:00
MagicBot 90fe93d3f0 Renamed for context. 2023-05-18 08:10:54 -04:00
MagicBot 4c4a909798 Error logging added. 2023-05-18 08:00:04 -04:00
MagicBot ba0a7d35cb Error logging added. 2023-05-18 07:54:04 -04:00
MagicBot 86539771e2 Unused method. 2023-05-17 16:38:08 -04:00
MagicBot 8a8136b8e8 Unused methods. 2023-05-17 15:18:47 -04:00
MagicBot 8916d9b4f0 Begin try-with-resources cleanup. 2023-05-17 15:11:26 -04:00
FatBoy 92015c1a13 guards no longer ignore early exit. FSM will not run if no players are online. mobs will use translocate instead of recall power. 2023-05-15 19:01:43 -05:00
MagicBot 80d45f364a Added pool size to hourly metrics. 2023-05-15 10:45:22 -04:00
MagicBot 3a59df6ac6 Update to console output. 2023-05-15 06:17:16 -04:00
MagicBot c3f059c7fc Update to console output. 2023-05-15 06:12:35 -04:00
MagicBot b3ba8f5c9f Try block no longer needed. 2023-05-15 06:08:16 -04:00
MagicBot cd9b8536cb Using color instead of int value. 2023-05-15 06:03:13 -04:00
MagicBot 3a2695703b Using color instead of int value. 2023-05-15 05:48:41 -04:00
MagicBot e4ddcdeeca Building offset added to loc. 2023-05-13 13:17:47 -04:00
MagicBot 69f3c9af71 Bonus code deleted from stuck job. 2023-05-13 13:08:36 -04:00
MagicBot 6a41c5391d Bonus code deleted from stuck job. 2023-05-13 12:59:05 -04:00
FatBoy d9c05fa622 magical rolling re-enabled 2023-05-12 21:14:41 -05:00
MagicBot ee1fc0d55c Bypass npc guild leaders in override.. 2023-05-12 08:27:00 -04:00
MagicBot 7f086fb850 Improved error logging. 2023-05-12 08:15:25 -04:00
MagicBot fafd77c661 Improved error logging. 2023-05-12 08:09:17 -04:00
MagicBot d99fc602d5 NPC table overrides for contracts. 2023-05-11 09:07:35 -04:00
FatBoy 99a82a6b84 enemy/notenemy aggro rules finalized 2023-05-10 18:33:03 -05:00
FatBoy 60c2405cad mobs now use enemy/notenemy for aggro rules 2023-05-09 21:11:51 -05:00
FatBoy 27a6a1f4d0 guards' sleeping pill wore off 2023-05-09 20:59:49 -05:00
FatBoy 584ad46b75 duplicate zoneMobSet additions fixed 2023-05-09 20:27:24 -05:00
FatBoy f99698feda duplicate zoneMobSet additions fixed 2023-05-09 19:57:34 -05:00
FatBoy b3c7db9214 Merge branch 'magicbox1.5' into feature-guard-patrol 2023-05-09 18:40:04 -05:00
MagicBot 7168813ba5 Tweak to set model logic. 2023-05-09 15:16:24 -04:00
MagicBot 8068082768 Naming logic changed to have a valid guild. 2023-05-08 09:29:11 -04:00
MagicBot 322b88a1f4 Naming logic changed to have a valid guild. 2023-05-08 09:20:56 -04:00
MagicBot f85fb8f224 bugfix in ./remove dev cmd. 2023-05-08 08:18:12 -04:00
FatBoy 76f3d2599b NPCs in buildings show correct spawn times and progress 2023-05-07 19:40:38 -05:00
FatBoy 92a0af8dbb guard minion spawn timer scaling off barracks rank 2023-05-07 17:14:47 -05:00
FatBoy fb2205d700 remove player formn cityoutlaws when they leave 2023-05-07 12:41:31 -05:00
FatBoy 526fe799f6 remove player formn cityoutlaws when they leave 2023-05-07 12:34:01 -05:00
FatBoy 0c9bb0d948 initialize cityOutlaws 2023-05-07 12:20:50 -05:00
FatBoy d6a35a577b mobs use hate value to hot swap targets 2023-05-07 12:15:38 -05:00
FatBoy 508fac6168 mobs use hate value to hot swap targets 2023-05-07 12:06:54 -05:00
FatBoy 7c47ef0550 mobs use hate value to hot swap targets 2023-05-07 12:06:03 -05:00
FatBoy e838bb641b mobs use hate value to hot swap targets 2023-05-07 11:53:00 -05:00
MagicBot e73f4cbe63 Placement bounds of 1.2% city zone size. 2023-05-07 10:55:27 -04:00
MagicBot ffafd44fa7 Siege bounds related bonus code removal. 2023-05-07 10:20:53 -04:00
FatBoy c54aa5f9fc guard aggro rules for hostiles 2023-05-07 08:35:11 -05:00
FatBoy b899708cd5 removed obvious bug in guards dropping aggro 2023-05-07 08:12:42 -05:00
FatBoy 14f98493c7 guard minions no longer respawn while captain is dead 2023-05-07 08:06:15 -05:00
FatBoy c7e470166d guard captain and wall archer spawn times hard set at 450 and 900 respectively 2023-05-07 08:02:52 -05:00
FatBoy db218139b3 scaling respawn timer for guard minions based on barracks rank 2023-05-07 07:58:52 -05:00
MagicBot b73eae787c Rotation portals 2023-05-07 08:13:41 -04:00
FatBoy df842a2209 Merge branch 'magicbox1.5' into feature-guard-patrol 2023-05-06 15:54:45 -05:00
FatBoy 64bde9c197 guard reverse KoS logic 2023-05-06 15:53:35 -05:00
FatBoy 6cf599f6bc guard reverse KoS logic 2023-05-06 14:52:10 -05:00
FatBoy d9adef611d mob movement logic update 2023-05-06 13:03:00 -05:00
FatBoy 9ffc09ac02 mob movement logic update 2023-05-06 12:14:28 -05:00
MagicBot a113295058 Player zone radius now reflects 24.3 at 875. 2023-05-05 08:51:49 -04:00
FatBoy 7e5cef2842 guard patrol point logic 2023-05-03 21:20:30 -05:00
FatBoy 969aeec1c7 guard patrol point logic 2023-05-03 21:19:49 -05:00
FatBoy e66b25f803 update isMoving for mobs still at their bind loc 2023-05-03 21:02:38 -05:00
FatBoy 7f9cc6e010 guard patrol work 2023-05-03 20:38:42 -05:00
FatBoy 964e7a4363 guards will now recall home if they leave city grid and have no players loaded 2023-05-03 19:50:52 -05:00
FatBoy aec0115d9b Added random city grid patrol point for guards with no barracks patrol points assigned 2023-05-03 19:43:58 -05:00
MagicBot 3191c20a8c Captain slot no longer overridden. 2023-05-03 18:31:20 -04:00
MagicBot 2a52f9adef slottest function expanded. 2023-05-03 18:20:47 -04:00
MagicBot c44cddfb92 slottest function expanded. 2023-05-03 18:12:19 -04:00
MagicBot 9649538a56 slottest function expanded. 2023-05-03 18:07:06 -04:00
MagicBot d5ca5993aa slottest function expanded. 2023-05-03 18:06:28 -04:00
MagicBot ce7b203b9c slottest function expanded. 2023-05-03 18:04:42 -04:00
MagicBot 294f8fe02b Override removed edge case handed in db. 2023-05-03 16:17:53 -04:00
MagicBot 21c6695a05 Arty captains hardcoded to slot 4. 2023-05-03 15:44:46 -04:00
MagicBot 6fb30928a1 Bugfix in slottest command. 2023-05-03 14:43:49 -04:00
MagicBot 033c008263 bugfix: bow restriction limited to attacker. 2023-05-03 14:25:30 -04:00
MagicBot 7dcefdf5d7 Contract moved to AbstractCharacter.
Arty tower restricted to a single tower captain.
2023-05-02 15:09:09 -04:00
MagicBot f526bda748 Slot one is reserved on arty towers. 2023-05-02 14:51:02 -04:00
MagicBot 7a3e3b394b Slot two is reserved on arty towers. 2023-05-02 14:44:22 -04:00
MagicBot e488627fcc Slot one is reserved on arty towers. 2023-05-02 14:29:58 -04:00
MagicBot 82aeba3a05 NPC rotations inherit building rotation. 2023-05-02 13:51:31 -04:00
MagicBot c56d5567f2 bugfix in quaternion math. 2023-05-02 13:21:40 -04:00
MagicBot 52160d48c4 Adding building rotation to mobile rotation. 2023-05-02 13:17:34 -04:00
MagicBot ce516f24c0 Contracted Mob/Npc rotation derived from slot position. 2023-05-02 13:08:02 -04:00
MagicBot a3c8241b8d Unused methods removed. 2023-05-02 12:40:51 -04:00
MagicBot 10a6eec3da more Bonus Code removal. 2023-05-02 12:26:34 -04:00
MagicBot 715abf1444 Building Location rotations are now a quaternion. 2023-05-02 09:10:41 -04:00
MagicBot e745c260f0 Positive rotation not negative. 2023-05-02 08:46:43 -04:00
MagicBot b7c2e09b81 Rotation slot location by building rotation. 2023-05-02 08:39:03 -04:00
MagicBot 48172fb220 Rotation slot location by building rotation. 2023-05-02 08:26:43 -04:00
MagicBot 0aabc9a923 Bonus code removal. 2023-05-02 08:13:45 -04:00
MagicBot 44b99a8781 It's w not y. 2023-05-01 15:58:04 -04:00
MagicBot 5d6e43313b slotnpc dev command now supports both mobs and npc's. 2023-05-01 15:23:42 -04:00
MagicBot c1c660fd53 Switching back to ASC for slot ordering. 2023-05-01 14:59:24 -04:00
MagicBot 1582d36222 Switching to desc for slot ordering. 2023-05-01 14:54:02 -04:00
MagicBot 11bcd26027 Loading pirate names before world objects 2023-05-01 14:43:06 -04:00
MagicBot b8eb198b09 Pirate name related code moved to NPCmanager. 2023-05-01 14:28:02 -04:00
MagicBot c0521ba2b7 null check for building owner. 2023-05-01 14:10:09 -04:00
MagicBot 59cd2b0dc1 Bonus code removal. 2023-05-01 13:55:06 -04:00
MagicBot 611e34add2 Merge remote-tracking branch 'origin/char-init-mobwork' into char-init-cleanup 2023-05-01 12:45:05 -04:00
MagicBot 16adeb88ca Merge remote-tracking branch 'origin/magicbox1.5' into char-init-cleanup 2023-05-01 12:43:28 -04:00
FatBoy 566bb8144a were guard contract ID in enum 2023-04-30 17:17:20 -05:00
FatBoy 0b932119b0 guard work 2023-04-30 16:54:39 -05:00
FatBoy 9fefebd4a3 wild mob naes and world NPC names corrected 2023-04-30 16:19:53 -05:00
FatBoy d4e7a6691c removed unused nameOverride variable 2023-04-30 16:12:00 -05:00
FatBoy ad4f9d3540 player placed NPCs now show correct names 2023-04-30 16:09:17 -05:00
FatBoy 6868c9de24 player placed mobiles now show correct names 2023-04-30 16:05:48 -05:00
FatBoy 56a6b9d204 guard minion logic work 2023-04-30 15:04:12 -05:00
FatBoy e52b8e894b guard minion logic work 2023-04-30 14:55:12 -05:00
FatBoy 0bc41323b1 guard minions added to captains parentZone.zoneMobSet 2023-04-30 13:47:15 -05:00
FatBoy 3a7ad74ab6 wall archers no longer spawn with level * 10 2023-04-30 13:35:25 -05:00
FatBoy 7ed0b8a052 wall archers given BehaviourType in initializeMob 2023-04-30 13:03:41 -05:00
FatBoy 718fe56cda drops no longer announce on mob death && config drop rate used for mob equipment drop chance 2023-04-30 12:27:02 -05:00
MagicBot eee949de93 Naming update. 2023-04-30 10:55:16 -04:00
MagicBot b5e2848091 Location serialization matches NPC 2023-04-30 10:20:21 -04:00
MagicBot 1ab8540f73 Location serialization matches NPC 2023-04-30 09:32:34 -04:00
MagicBot c029a881e9 Location serialization matches NPC 2023-04-30 09:23:56 -04:00
MagicBot 334a706af3 Update to info output. 2023-04-30 09:08:03 -04:00
MagicBot 1e208c0881 Update to info output. 2023-04-30 09:02:50 -04:00
MagicBot 61b87cbba7 Merge branch 'char-init-cleanup' of http://repo.magicbane.com/MagicBane/Server into char-init-cleanup 2023-04-30 08:52:39 -04:00
MagicBot d1d6972930 Debug code removed; issue resolved. 2023-04-30 08:51:35 -04:00
MagicBot 72e823744c Some meshes might not have slot locations. 2023-04-30 08:38:59 -04:00
MagicBot 4985005b3e Debug null value. 2023-04-30 08:37:08 -04:00
MagicBot ce8d5f0129 Debug null value. 2023-04-30 08:28:36 -04:00
MagicBot 9c83e6f9d9 Removed name override logic. 2023-04-30 08:18:38 -04:00
MagicBot 21241aa5df One serialization not 3. 2023-04-30 08:02:28 -04:00
MagicBot 54e4f08ea2 One serialization not 3. 2023-04-30 07:57:19 -04:00
MagicBot e18c046ee7 Parent zone required by db handler. 2023-04-30 07:41:11 -04:00
MagicBot 4365fafb77 Tweak to name derivation in constructor 2023-04-29 16:32:12 -04:00
MagicBot a3217f44be Code bloc moved out of constructor. 2023-04-29 16:24:19 -04:00
MagicBot da62046ce0 Unused parm in method interface removed. 2023-04-29 16:21:02 -04:00
MagicBot b9722ec292 more old hireling code removed. 2023-04-29 16:06:05 -04:00
MagicBot cfb4f38d15 Contact npcs/mobs have derived locations. 0x0 in cache data. 2023-04-29 16:02:22 -04:00
MagicBot 48d66a0d42 Integer division fix. Class cleanup. 2023-04-29 15:40:50 -04:00
MagicBot d454878245 BuildingModelBase no longer needed. 2023-04-29 15:15:23 -04:00
MagicBot cace195e18 Logic and comment cleanup. 2023-04-29 14:36:39 -04:00
MagicBot 129aff909c Update; mobile offsets within buildings. 2023-04-29 14:25:36 -04:00
MagicBot 6cfd078469 Removed old methods from codepath. 2023-04-29 14:00:24 -04:00
MagicBot 4acc4192af Initial work on Mobile init refactor. 2023-04-29 13:57:09 -04:00
MagicBot e554171e22 Duplicate region field removed and inlined. 2023-04-29 12:33:21 -04:00
MagicBot de38c8727a Debugging region 2023-04-29 12:14:35 -04:00
MagicBot 0a78958e44 Debugging region 2023-04-29 12:02:37 -04:00
MagicBot 353cd0ab23 Serialization revert. 2023-04-29 11:24:32 -04:00
MagicBot b73c8e9045 Floor and level no longer read from db. 2023-04-29 10:59:13 -04:00
MagicBot 5729492c6a NPC derives position from slot. 2023-04-29 10:30:53 -04:00
MagicBot 0c45e6d36f Serialization update. 2023-04-29 09:53:12 -04:00
MagicBot 677988ea44 Add new npc to world. 2023-04-29 09:35:00 -04:00
MagicBot c30ca2fb1f Comment cleanup. 2023-04-29 09:21:58 -04:00
MagicBot cd9d7f7652 Set bindloc to slot location. 2023-04-29 09:19:22 -04:00
MagicBot 84e24b4951 Set bindloc to slot location. 2023-04-29 09:17:14 -04:00
MagicBot ef367c2981 Array index not 1 2023-04-29 09:07:48 -04:00
MagicBot ec10ac7ba5 Region now set in initNpc 2023-04-29 08:59:29 -04:00
MagicBot 4bbe1db54a Bindloc for non slotted npcs. 2023-04-29 08:58:26 -04:00
MagicBot 3494ae1e6b Bindloc for non slooted npc's. 2023-04-29 08:55:12 -04:00
MagicBot 123f9eb588 SetParentZone removed from NPC. 2023-04-29 08:47:35 -04:00
MagicBot 40e4770425 inBuildingLoc removed. 2023-04-29 08:24:28 -04:00
MagicBot ed0f9daef3 Slotting helper methods added. 2023-04-29 08:17:05 -04:00
MagicBot beb9d5927e Iteration bugfix. 2023-04-29 08:10:59 -04:00
MagicBot 225e55d956 Slots will be derived not stored. 2023-04-29 08:08:45 -04:00
MagicBot 2114d9832f Redundant declaration and assignment. 2023-04-25 09:00:13 -04:00
MagicBot b6b1485841 Removed temp in-building loc due to null. 2023-04-24 17:35:56 -04:00
MagicBot c4f939278a Devcmd now displays inbuilding loc. 2023-04-24 17:29:48 -04:00
MagicBot 195a7e2cea Devcmd now displays inbuilding loc. 2023-04-24 17:28:21 -04:00
MagicBot dc868305f0 Using new db loader. 2023-04-24 17:14:37 -04:00
MagicBot c60a4d8d39 Bugfix for contract-less npc owners. 2023-04-24 17:08:03 -04:00
MagicBot de7e3ba73d Hashmap to add to was added. 2023-04-24 16:49:41 -04:00
MagicBot 4d76014633 Dev cmd to test new system. 2023-04-24 16:41:25 -04:00
MagicBot 320d95ae2f Default value for npc slot. 2023-04-24 16:26:30 -04:00
MagicBot 6d73e12c5c Slot added to stored procedures. 2023-04-24 16:23:13 -04:00
MagicBot 0513cc978e Helper method for slot lookup added. 2023-04-24 16:17:55 -04:00
MagicBot 7c079c3998 Begin refactor location collections. 2023-04-24 15:37:30 -04:00
MagicBot d729fbb287 Captain slot issue in db rectified. 2023-04-24 14:06:17 -04:00
MagicBot 14c98d9376 Blueprint support for OuterWallWithTower 2023-04-24 12:04:39 -04:00
MagicBot 888fa25e9a Blueprint support for OuterWallWithTower 2023-04-24 11:55:29 -04:00
MagicBot 5a0136cd3d Cleanup and bonus code removal. 2023-04-24 09:42:01 -04:00
MagicBot 3419c1ceea Refactored isWallArcher(). 2023-04-24 09:22:01 -04:00
MagicBot 4ae55b9bd8 Removed leftover junk from mobbase. 2023-04-24 03:38:04 -04:00
MagicBot 6b146bfdc4 Removed leftover junk from mobbase. 2023-04-24 03:26:35 -04:00
FatBoy 620fad57fe Mob equipment drops once more, including vorg with proper chance 2023-04-23 22:07:54 -05:00
FatBoy f24605735e renamed "run" in MobileFSM to "DetermineAction" 2023-04-23 20:41:43 -05:00
FatBoy 7e9e0d2c5b MobileFSM cleanup and bonus code removal 2023-04-23 20:38:28 -05:00
FatBoy 1487efc46b Mob.java cleanup 2023-04-23 20:19:17 -05:00
FatBoy 2df4f658c9 Mob.java cleanup 2023-04-23 20:16:30 -05:00
MagicBot 4462e34ca4 mobbase.fsm should never be blank. 2023-04-23 12:03:46 -04:00
MagicBot 4adfbc0723 Refactored to static methods. 2023-04-23 11:19:34 -04:00
MagicBot c0e92bddc2 Level override removed. 2023-04-23 10:40:19 -04:00
MagicBot 40b7546946 More useful error information. 2023-04-23 10:27:04 -04:00
MagicBot 59e3938a72 Removed unused method. 2023-04-23 10:01:18 -04:00
MagicBot 513c254479 Correction in column name. 2023-04-23 09:45:03 -04:00
MagicBot df7b23c0de Extra override removed from constructor. 2023-04-23 09:38:49 -04:00
MagicBot edd1c0e9a6 Name/level saved to disk when slotting mobiles. 2023-04-23 09:30:29 -04:00
MagicBot 0a783f7561 pirateName and Rank added to CreateMob interface. 2023-04-23 08:51:49 -04:00
MagicBot 235ea84dcd Value is not unknown from handler context. 2023-04-23 07:48:10 -04:00
FatBoy 3e005c3a51 NPC have names and contract names 2023-04-22 23:20:24 -05:00
FatBoy 88e09c479f wall archers no longer spawn minions 2023-04-22 23:12:45 -05:00
FatBoy 83eab27a90 proper NPC names in asset management window 2023-04-22 22:44:13 -05:00
FatBoy c02c5750c6 proper contract names in asset management window 2023-04-22 22:10:06 -05:00
FatBoy 09d7ff0740 make wall archers great again 2023-04-22 21:55:06 -05:00
FatBoy ed1a6192c7 enemy/notEnemy fix for mobs 2023-04-22 18:24:43 -05:00
FatBoy ae968211ab none to enum MonsterType 2023-04-22 18:13:29 -05:00
FatBoy a3170bfb4b test code for notEnemy 2023-04-22 18:08:40 -05:00
FatBoy 344c5900b8 added none check to enemy and notEnemy in mobbase 2023-04-22 17:52:55 -05:00
FatBoy 1d74643fe3 None added to enum MonsterType 2023-04-22 17:49:26 -05:00
FatBoy 38e5081b0e moved createSiegeMob and createGuardMob to the Mob class 2023-04-22 17:16:34 -05:00
MagicBot 8fa20c6f93 Cleanup in mob class. 2023-04-22 07:52:05 -04:00
FatBoy 45ab68caa4 trebuchets now have pet AI with canRoam disabled 2023-04-21 20:12:49 -05:00
FatBoy 3329d61636 fixed error in initialize mob 2023-04-21 18:23:52 -05:00
FatBoy 5299da784a mob respawn fix actual 2023-04-21 15:17:37 -05:00
FatBoy e5b7bd1fa6 mob respawn fix 2023-04-21 12:56:09 -05:00
FatBoy 881907c53a AggroWanderer and Wandered state updates 2023-04-21 10:47:49 -05:00
FatBoy 6a03b58aa6 pet AI logic 2023-04-21 10:44:19 -05:00
FatBoy e38be1e18f pet movement logic 2023-04-21 10:20:38 -05:00
FatBoy 1ff42b775c added hamlet guard logic 2023-04-21 10:02:09 -05:00
FatBoy cfe8d20d2b added barracks list to city object 2023-04-20 21:23:42 -05:00
FatBoy aa8f59f6f7 wall archer debugging 2023-04-19 19:05:24 -05:00
FatBoy f3b6f5595b logic for wall archers fix 2023-04-18 20:54:53 -05:00
FatBoy 0448448263 logic for wall archers 2023-04-18 20:52:33 -05:00
FatBoy 0914580bea Gave Wall Archers mob AI 2023-04-18 20:47:49 -05:00
FatBoy 914575a360 guard minion spawning work 2023-04-17 21:48:31 -05:00
FatBoy 259025d572 guard recall off city grid 2023-04-17 21:31:56 -05:00
FatBoy aa3c70ae31 guard minions AI 2023-04-17 20:51:34 -05:00
FatBoy 2f4b675a2c added mob fsm data to mob 2023-04-17 19:15:08 -05:00
MagicBot 662d1d2b85 Enum moved to Enum.
Updated logic in rs constructor to handle blanks properly.
2023-04-17 07:20:39 -04:00
FatBoy 6e92836deb GuardCaptain aggro rules 2023-04-16 21:48:21 -05:00
FatBoy b1bd09bfc4 GuardCaptain flag in run after load 2023-04-16 20:52:37 -05:00
FatBoy 7e08a3d8ab GuardCaptain flag when slotting in barracks 2023-04-16 20:44:28 -05:00
FatBoy cb5c2c668a load guard in barracks 2023-04-16 20:36:51 -05:00
FatBoy c93f932caa fixed spelling error in MObBehaviourType enum 2023-04-16 19:59:13 -05:00
FatBoy f855ec9a19 fsm lookup changes 2023-04-16 19:50:59 -05:00
FatBoy 6817c3dffe moved fsm lookup to runAfterLoad 2023-04-16 19:45:55 -05:00
FatBoy c17f745461 moved fsm lookup to runAfterLoad 2023-04-16 19:45:17 -05:00
FatBoy 664b5fea73 logger addition for mob 2023-04-16 19:40:33 -05:00
FatBoy 3c118ed88b unecessary try removal 2023-04-16 19:29:14 -05:00
FatBoy 1d965c0785 remove test code, added guard captain and minion behaviour flags 2023-04-16 19:27:18 -05:00
FatBoy 37ccfaa509 Merge remote-tracking branch 'origin/magicbox1.5' into new-mob-behaviour 2023-04-16 19:16:05 -05:00
FatBoy eb20d926e3 guard aggro logic 2023-04-16 18:58:55 -05:00
FatBoy 0ee7507467 new chase logic for mobs 2023-04-16 13:30:46 -05:00
FatBoy c1bba30dec cleanup old patrol code 2023-04-16 13:24:22 -05:00
FatBoy db0e9d1847 add random 10-15 delay between patrolling for mobs 2023-04-16 13:23:42 -05:00
FatBoy ef74d1ae8c init. patrol points list 2023-04-16 13:07:28 -05:00
FatBoy 0779fbab87 implement new patrol system 2023-04-16 13:03:42 -05:00
FatBoy 028135f859 new mob patrolling system 2023-04-16 12:48:23 -05:00
FatBoy cfa59d8012 pet AI implemented 2023-04-15 22:04:55 -05:00
FatBoy ca40d7a71d added ./aiinfo command for debugging new AI system 2023-04-15 20:53:47 -05:00
FatBoy ccd6032c15 added ./aiinfo command for debugging new AI system 2023-04-15 20:36:56 -05:00
FatBoy ecec3833c4 added ./aiinfo command for debugging new AI system 2023-04-15 20:31:13 -05:00
FatBoy 98eb557c58 added none to behaviour type for mobs and defuated RS constructor for mobs 2023-04-15 20:03:17 -05:00
FatBoy f75323e7e2 LootManager cleanup + say message for mobs calling for help 2023-04-15 12:21:31 -05:00
FatBoy c8c275bcd5 added equip dropping on mobs to LootManager 2023-04-15 11:52:19 -05:00
FatBoy ca9a72e338 cleaned up testing code 2023-04-14 20:53:21 -05:00
FatBoy aaff8e7d6b cleaned up some aggro rules 2023-04-14 20:50:47 -05:00
FatBoy f9205eb4e2 added default behaviourType to "Simple" for mobs. added respawn logic 2023-04-14 19:20:12 -05:00
MagicBot de3818aef6 Equip lookups now use bootymap 2023-04-14 18:19:43 -04:00
MagicBot 5d0166a29a EquipmentSets merged into bootySet system. 2023-04-14 16:46:10 -04:00
FatBoy 98f0928a4b replaced MobileFSM.STATE with MobileFSM.MobBehaviourTypes 2023-04-11 19:53:13 -05:00
MagicBot 23a07175e5 Single map color stored as hex string. 2023-04-10 13:27:27 -04:00
MagicBot beff5c3e06 Refactored aggro system to use Monstertype. 2023-04-09 18:16:36 -04:00
MagicBot 6b62c90bc8 NONE is not needed for a BitSet. 0 is just empty. 2023-04-09 14:06:57 -04:00
MagicBot ef6bb65e73 NONE is not needed for a BitSet. 0 is just empty. 2023-04-09 14:06:03 -04:00
MagicBot 6f82ee24d9 MonsterType fields added to ./info 2023-04-09 13:58:29 -04:00
MagicBot 97165bbdfe Aggro fields combined in RunAfterLoad 2023-04-09 13:55:46 -04:00
MagicBot 30175be56a MonsterTypes loaded into Mob. 2023-04-09 13:43:12 -04:00
MagicBot 4fe6040707 enemy/notEnemy bitvectors loaded into mobbase. 2023-04-09 13:31:42 -04:00
MagicBot aaa67ec635 new MonsterType bitvector added. 2023-04-09 13:20:03 -04:00
FatBoy 93f6d0be0b new loot system completed 2023-04-08 21:49:17 -05:00
FatBoy fe953aa8c4 simulatebooty command added data output 2023-04-08 18:05:46 -05:00
FatBoy 902376b517 simulatebooty command added data output 2023-04-08 17:54:53 -05:00
FatBoy e56c534d2b simulatebooty command added data output 2023-04-08 17:20:57 -05:00
FatBoy 74fe401ff1 revert simulatebooty command 2023-04-08 17:18:35 -05:00
FatBoy 862230008e revert simulatebooty command 2023-04-08 17:15:34 -05:00
FatBoy 93cd329f20 simulate booty command work 2023-04-08 15:33:51 -05:00
FatBoy c550360a43 simulate booty command work 2023-04-08 15:25:45 -05:00
FatBoy 2e3c9e703b added parameter to simulateBooty command to simulate mob or zone booty and added custom iteraion input 2023-04-08 14:53:56 -05:00
FatBoy dffc16f5ce mob roll range formula 2023-04-08 14:19:47 -05:00
MagicBot f47eb63057 Merge remote-tracking branch 'origin/magicbox1.5' into new-booty-system 2023-04-08 10:48:13 -04:00
MagicBot 9d6b3ab3ff Merge remote-tracking branch 'origin/bugfix-runesandbooties' into magicbox1.5 2023-04-08 06:26:39 -04:00
FatBoy b18994a7c0 simulate booty command work 2023-04-07 22:04:39 -05:00
FatBoy e483280a3c simulate booty command work 2023-04-07 21:41:03 -05:00
FatBoy 0bb3c84fed enable simulateBooty command 2023-04-07 19:50:49 -05:00
FatBoy 2eb9705c3a added simulatbooty command for debugging loot 2023-04-07 19:36:51 -05:00
FatBoy ec37e1f9f9 drop chance work 2023-04-07 18:43:45 -05:00
FatBoy b4002fa1a5 added resources to drop tables 2023-04-07 15:41:40 -05:00
FatBoy a7dccb6301 chase null pointer 2023-04-07 14:48:15 -05:00
FatBoy 2827db5db5 prefix/suffix usage for mob loot 2023-04-07 13:56:28 -05:00
FatBoy 460a2152c8 MobLoot usage 2023-04-07 13:38:09 -05:00
FatBoy 5edbc81934 MobLoot usage 2023-04-07 13:09:15 -05:00
FatBoy 335484944f variable naming convention 2023-04-07 12:22:33 -05:00
FatBoy 8b6bc38082 error tracking 2023-04-07 12:05:01 -05:00
FatBoy b51843942b error tracking 2023-04-07 11:36:52 -05:00
FatBoy a0310b6767 added case staement for "ITEM" 2023-04-07 11:32:53 -05:00
FatBoy 2b90679087 new booty system update 2023-04-07 11:22:14 -05:00
FatBoy d951eb4b38 cleanup 2023-04-06 21:06:23 -05:00
FatBoy 847c8bc08f loot system debugging 2023-04-06 20:35:03 -05:00
FatBoy 5efb5d0d4b remove old loot system 2023-04-06 20:28:47 -05:00
FatBoy 0d7620900b loot system implementation 2023-04-06 20:18:31 -05:00
FatBoy dfd0d7e668 new loot system 2023-04-06 20:10:42 -05:00
FatBoy 1be669aa66 Merge branch 'bugfix-runesandbooties' into new-booty-system
# Conflicts:
#	src/engine/objects/MobBase.java
2023-04-06 20:08:29 -05:00
FatBoy 95352e778d place holder 2023-04-06 20:07:24 -05:00
MagicBot 88bf38b858 Mobbase updated with new booty and fsm fields. 2023-04-06 20:58:13 -04:00
FatBoy 16fb40e104 Merge remote-tracking branch 'origin/magicbox1.5' into new-booty-system 2023-04-06 19:41:19 -05:00
MagicBot d0279599f6 BootySets expanded to handle rune booty. 2023-04-06 18:08:01 -04:00
FatBoy bfb6b0f5eb ./info now shows building information not just region 2023-04-06 09:44:34 -05:00
FatBoy 3f8d772f8f treb troubleshooting 2023-04-05 20:29:34 -05:00
FatBoy 07e993b0ba NPC and mob regions for real this time 2023-04-05 20:06:28 -05:00
FatBoy 1169f44041 NPC and mob regions 2023-04-05 20:04:04 -05:00
MagicBot 563fe8684a Workaround for mob region issue. 2023-04-05 20:20:23 -04:00
MagicBot a85391e5a4 Workaround for mob region issue. 2023-04-05 19:49:20 -04:00
MagicBot fc6f400e09 Corner trebs go into slot 1. 2023-04-05 18:32:03 -04:00
MagicBot 55fc6a68e1 Corner trebs go into slot 1. 2023-04-05 18:06:50 -04:00
MagicBot e1811c7bfc Corner trebs go into slot 1. 2023-04-05 17:41:11 -04:00
MagicBot bccbb1d8b7 Mobs are not hirelings but minions in this context. 2023-04-05 17:06:08 -04:00
MagicBot 2b214f8934 Bugfix in string output. 2023-04-04 18:14:54 -04:00
MagicBot 6a5f0596e0 Unused variable removed. 2023-04-04 18:11:07 -04:00
MagicBot 8f87bc5ca0 Bugfix in info dealing with mob flags on npcs. 2023-04-04 18:06:32 -04:00
MagicBot a0e63cde8f Bugfix in info dealing with mob flags on npcs. 2023-04-04 17:52:26 -04:00
MagicBot 94e3a594ec Mobbases can have empty mobflag values. 2023-04-04 17:38:52 -04:00
MagicBot bbf0709643 Mobbases can have empty mobflag values. 2023-04-04 17:30:56 -04:00
MagicBot 4492a93df4 Clarity in naming. 2023-04-04 16:26:47 -04:00
MagicBot 65e7566d0f More slotting work. 2023-04-04 15:36:56 -04:00
MagicBot 1c496b3c98 More slotting work. 2023-04-04 15:13:18 -04:00
MagicBot ee115a473d Exclude not include noId npc's. 2023-04-04 14:57:07 -04:00
MagicBot 5a4559d7b2 ContractID for captain is 850 not 650. 2023-04-04 14:47:23 -04:00
MagicBot 3b69c8c267 Tower captains don't use slot 1. 2023-04-04 14:41:01 -04:00
MagicBot 14c4443f20 loadID is needed; different mob. 2023-04-04 13:56:34 -04:00
MagicBot a01a342fd8 Affirmatively check hireling entry instead of relying upon loadID =0 which was a side effect. 2023-04-04 13:48:56 -04:00
MagicBot 1cb103c156 Slots are slots; blueprint logic not needed on back-end. 2023-04-04 11:08:07 -04:00
MagicBot 84bae3141c Slots are slots; blueprint logic not needed on back-end. 2023-04-04 10:48:17 -04:00
MagicBot 307f52866d Merge remote-tracking branch 'origin/bugfix-runesandbooties' into magicbox1.5 2023-04-04 10:33:18 -04:00
MagicBot 7ef338be1d Bugfix in slotting blueprint buildings 2023-04-04 10:31:59 -04:00
MagicBot 385b89e6ba Two layered continent support. 2023-04-03 15:56:36 -04:00
MagicBot 41a53d1205 Merge remote-tracking branch 'origin/bugfix-runesandbooties' into magicbox1.5 2023-04-03 12:30:49 -04:00
MagicBot a85bbde9d2 Mobbase runes no longer needed. 2023-04-03 06:27:29 -04:00
FatBoy 13d83c0003 NPC guards no longer attack players 2023-04-02 15:51:39 -05:00
MagicBot f21e51f74a Optimized imports (getting close to release) 2023-03-31 10:08:44 -04:00
MagicBot 045840ec54 Last vestige of FidalityID garbage and raw cache files removed. 2023-03-31 10:05:13 -04:00
MagicBot 4e1455be7f Hunt for more fidality insanity. 2023-03-31 10:01:59 -04:00
MagicBot 3881c2b1d0 Relevant methods made static and moved into NPCManager 2023-03-31 09:59:49 -04:00
MagicBot bbdbead1ff Fidaltiy garbage removed from NPC class. 2023-03-31 09:17:15 -04:00
MagicBot 24b6820a1b Fidaltiy garbage removed from NPC class. 2023-03-31 09:15:52 -04:00
MagicBot 2b307daeb2 MobileBooty system integrated. 2023-03-31 09:09:57 -04:00
MagicBot fb15ee912b Clarity fix in instance variable ordering. 2023-03-31 08:01:14 -04:00
MagicBot 3b7c516975 Merge remote-tracking branch 'origin/post-wipe-merge' into bugfix-runesandbooties 2023-03-30 20:56:42 -04:00
FatBoy 33603958b1 fixed hotzone drop tables never being used 2023-03-30 19:44:44 -05:00
MagicBot f669be18b3 Unused MobRaceType enum removed. 2023-03-30 11:51:59 -04:00
MagicBot dcae131b67 Removed Fidality garbage. Fixed mobs in buildings. 2023-03-30 11:07:57 -04:00
MagicBot f5d5dce791 Revert "Fidality borking mobs in buildings unborked."
This reverts commit 2befa063ef.
2023-03-30 10:34:15 -04:00
MagicBot 5a0910eb5c Revert "Fidelity > Fidality"
This reverts commit f4da8544d3.
2023-03-30 10:32:08 -04:00
MagicBot 2befa063ef Fidality borking mobs in buildings unborked. 2023-03-30 10:28:46 -04:00
MagicBot f4da8544d3 Fidelity > Fidality 2023-03-30 10:14:40 -04:00
MagicBot 60a9f14aa3 Mobbases don't need skills. 2023-03-29 18:52:36 -04:00
MagicBot 39b07df2e2 Sanity check for race rune not in runebase. 2023-03-29 17:57:37 -04:00
MagicBot 5f6883059f Cleanup rune effect application. 2023-03-29 15:42:32 -04:00
MagicBot 6b2790f9c1 Mobs have runes loaded at bootstrap and effects applied. Moved logic to NPCManager. 2023-03-29 08:05:34 -04:00
MagicBot 73d2129394 Runes and Booties ID set in constructor for mobs and npcs. 2023-03-28 18:34:42 -04:00
MagicBot 8e236d0780 BootySets generated with cache data loaded at bootstrap. 2023-03-28 18:01:46 -04:00
MagicBot 00d0048fd0 RuneSets generated loaded at bootstrap. 2023-03-28 17:45:58 -04:00
MagicBot f744c64737 Superfluous getter and setters removed. 2023-03-28 17:29:16 -04:00
MagicBot 33334ed13c NPCManager class created. 2023-03-28 17:22:57 -04:00
MagicBot 2e64164251 Bonus code removal. 2023-03-23 06:00:53 -04:00
MagicBot 03060478ee Helper method for finding next heightmap. 2023-03-22 05:41:39 -04:00
MagicBot 94b863a835 Rework of ismacro and iscontinent. 2023-03-21 03:20:57 -04:00
MagicBot ab14173aaa Account for vorringia parenting. 2023-03-21 03:09:39 -04:00
MagicBot eb5e09c3f4 Merge remote-tracking branch 'origin/bugfix-magic-numbers' into post-wipe-merge 2023-03-20 11:20:42 -04:00
MagicBot 1142676c87 Milliseconds are easier to interpret than fractions. 2023-03-16 13:00:22 -04:00
MagicBot 76af946b5f Duration string output. 2023-03-16 12:53:16 -04:00
MagicBot b6b9d7635f Using miliseconds. 2023-03-16 12:48:36 -04:00
MagicBot 68ae4604b0 Added max values to metrics. 2023-03-16 12:40:08 -04:00
MagicBot c06da74eec Nanosecond display. 2023-03-16 12:27:50 -04:00
MagicBot a4029fb6e2 Updated simulation metrics access. 2023-03-16 12:18:42 -04:00
MagicBot 3dbdad2580 Reverted changes. 2023-03-16 11:48:54 -04:00
FatBoy 626967cd86 revert 2023-03-15 18:27:13 -05:00
FatBoy 113d74cffe method to check if zone has players inside it
mob ai check if zone has no players mobs need not perform actions
2023-03-15 17:17:22 -05:00
FatBoy db71635f16 delay between mob actions to reduce synchronized appearance 2023-03-15 13:46:58 -05:00
MagicBot 177175cc1d Conditionals simplified and comment added to method. 2023-03-15 11:59:41 -04:00
MagicBot 5ddc40db3b Comment cleanup in method. 2023-03-15 11:51:28 -04:00
MagicBot 0039785a5a Comment cleanup in method. 2023-03-15 11:47:27 -04:00
MagicBot 867fdee328 Added sanity check for empty power list. 2023-03-15 10:11:01 -04:00
MagicBot f8d499f314 Fixed Concurrent Modification issue. 2023-03-15 09:39:17 -04:00
MagicBot 1945412f5a Remove needs an object not an index value. 2023-03-15 09:25:18 -04:00
MagicBot 16db4d15bc Reformatting of MobCast() method in manager. 2023-03-15 08:52:00 -04:00
MagicBot f97d9844f9 Merge branch 'new-mob-ai' of http://repo.magicbane.com/MagicBane/Server into new-mob-ai
 Conflicts:
	src/engine/ai/MobileFSM.java
2023-03-15 08:49:33 -04:00
MagicBot 7473067329 Reformatting of MobCast() method in manager. 2023-03-15 08:47:22 -04:00
FatBoy 6fe690d592 ranged mobs now stop when in proper attacking range 2023-03-14 20:53:39 -05:00
FatBoy ce381f612c mob ai Chase state completion 2023-03-14 20:34:07 -05:00
FatBoy 8c919bcd2a mob ai Chase state work 2023-03-14 20:04:05 -05:00
FatBoy 531cd52664 mob ai Chase state work 2023-03-14 18:39:59 -05:00
FatBoy dcac0634a8 added Chase to mob ai state enum 2023-03-14 13:32:41 -05:00
MagicBot e7ceeac7b8 Magic numbers are for mental patients. 2023-03-14 13:10:05 -04:00
MagicBot bbbf0c4160 Magic numbers are for mental patients. 2023-03-14 12:59:50 -04:00
MagicBot 584fde5579 Reworked the loading of Mobile powers at bootstrap. 2023-03-13 19:26:16 -04:00
MagicBot 66f0c12790 Reworked the loading of Mobile powers at bootstrap. 2023-03-13 19:19:03 -04:00
FatBoy b310a3eb63 initialize new mobpower list 2023-03-12 18:18:13 -05:00
FatBoy 03a2ead922 mob power list troubleshooting 2023-03-12 18:09:42 -05:00
FatBoy 4f60811f6b mob power list troubleshooting 2023-03-12 18:02:24 -05:00
FatBoy ec19f18d73 mob power list troubleshooting 2023-03-12 17:59:18 -05:00
FatBoy f0eb19c255 mob power list troubleshooting 2023-03-12 17:54:03 -05:00
FatBoy 604a86feb0 mob powerlist initialize directly after mobbases are loaded 2023-03-12 17:49:29 -05:00
FatBoy 3e2fbb700b initialize the static mob power list 2023-03-12 10:53:12 -05:00
FatBoy 863c782f72 moved mob powers list call above mob spawning 2023-03-12 10:50:50 -05:00
FatBoy 83eb1a3370 moved mob powers method to PowersManager 2023-03-12 10:36:38 -05:00
FatBoy 4a06f18d55 Merge remote-tracking branch 'origin/post-wipe-merge' into new-mob-ai 2023-03-12 10:29:00 -05:00
FatBoy e38a04bf23 convert DB lookup of mob powers to static Hashmap lookup 2023-03-12 10:17:25 -05:00
FatBoy 095aee57bc mob spell casting cleanup 2023-03-02 21:51:31 -06:00
FatBoy b000c9b60f generic range method added, mob spell casting cleanup 2023-03-02 21:46:02 -06:00
FatBoy e3f675a42b call for help range added (aggro range of caller) 2023-03-02 19:52:17 -06:00
FatBoy 93a91f9d41 fixed null exception in aggro 2023-03-02 19:11:51 -06:00
FatBoy 6da0df7eb7 duel wield attack system for mobs 2023-03-02 18:46:43 -06:00
MagicBot 0ce94360f7 Magicbox channel support added. 2023-03-02 08:06:17 -05:00
MagicBot 110a05d5a4 bugfix-merge issue in constructor. 2023-03-01 16:12:17 -05:00
FatBoy cfd93f2ca0 cleanup 2023-03-01 13:31:35 -06:00
FatBoy 5830a9ef82 damage calculations cleanup 2023-03-01 13:29:49 -06:00
FatBoy ea4862f76e r8 mobs now have their own mele attack parameters 2023-02-28 19:06:57 -06:00
MagicBot 7d655bc44b Mine serialized loc is the tower loc. No need to store offsets in a table to reconstruct this loc. 2023-02-28 10:43:49 -05:00
FatBoy bfa15ddee0 mob will always target self with "self target" flagged spells 2023-02-27 20:37:11 -06:00
FatBoy 028c49ac84 mob no longer cast spells with effect already on target 2023-02-27 20:22:59 -06:00
FatBoy 396e3dda28 comment 2023-02-27 18:59:08 -06:00
FatBoy e640a5064c Merge remote-tracking branch 'origin/post-wipe-merge' into new-mob-ai 2023-02-27 18:53:49 -06:00
MagicBot f0f91325ba Reset is handled when picking new hotZone. 2023-02-26 07:31:26 -05:00
MagicBot d5c219897d Experience Modifiers added to ConfigManager 2023-02-24 10:45:46 -05:00
MagicBot c51f6b73af ProductionRate added to ConfigManager. 2023-02-24 09:48:15 -05:00
MagicBot cacf67a81c lastUpdate always from top of the hour. 2023-02-24 09:08:45 -05:00
MagicBot 72a610fd0c Seconds remaining calculated only once. 2023-02-24 09:05:47 -05:00
MagicBot bbbd5f8996 Time remaining is from now(). 2023-02-24 08:48:36 -05:00
MagicBot 994db1e131 Class renamed to fix case. 2023-02-24 08:45:03 -05:00
MagicBot 4422182eae Reset logic moved to within method. 2023-02-24 08:34:25 -05:00
MagicBot 7a2c0d3456 Work variable cleanup. 2023-02-24 01:26:39 -05:00
MagicBot 8fde121570 lastHotZoneUpdate instant moved to ZoneManager. 2023-02-24 01:22:00 -05:00
MagicBot 3260582e37 validHotZone filters hotZone count. 2023-02-24 01:04:29 -05:00
MagicBot 52e46380a9 Available hotZones added to devcmd. 2023-02-24 00:49:03 -05:00
MagicBot a572a5fbf9 Available hotZones added to devcmd. 2023-02-24 00:42:34 -05:00
MagicBot 176fdb51da HotZone availability reset at 01am. 2023-02-24 00:32:18 -05:00
MagicBot 6a948fbe2e lastChanged is unused as cannot omit mines from map. 2023-02-24 00:09:57 -05:00
MagicBot 2ef60933b2 reset added to ./hotzone 2023-02-23 17:47:22 -05:00
MagicBot 85798822cc Force serialize mines. 2023-02-23 17:37:14 -05:00
MagicBot 0dad677bc0 hotzone dev command updated. 2023-02-23 17:14:34 -05:00
MagicBot 4c625cdfbf HotZone minLevel enforced. 2023-02-23 16:46:55 -05:00
MagicBot 6912a06351 MB_HOTZONE_MIN_LEVEL added to ConfigManager 2023-02-23 16:38:23 -05:00
MagicBot 2e576b3065 Increment only when a hotZone is set. 2023-02-22 17:35:30 -05:00
MagicBot dc23755081 Use of Instant to track hotzone refresh times. 2023-02-22 17:25:48 -05:00
MagicBot 8ae973f5f4 Refactored usage of HotZone; added cycle counter. 2023-02-22 16:40:11 -05:00
MagicBot 6ac1911770 Code cleanup; reworked conditional. 2023-02-22 08:38:18 -05:00
MagicBot f723e35785 Reformatted file. 2023-02-22 08:34:10 -05:00
MagicBot 4db45a9cbf Handler created for cityDataMsg.java 2023-02-22 08:23:13 -05:00
MagicBot d9125566f7 Drop rates are set by ConfigManager 2023-02-19 08:39:28 -05:00
MagicBot 70ca0a1df3 Refactored caching of drop rates. Whittling away at MBServerStatics. 2023-02-19 08:25:58 -05:00
MagicBot 3fd2f519eb Merge remote-tracking branch 'origin/post-wipe-merge' into bugfix-config-manager 2023-02-19 07:53:03 -05:00
MagicBot 5af1687f19 Maintenance hour and bot/game version config entries removed. 2023-02-19 07:48:50 -05:00
FatBoy 10cd3636f7 hotzone cleanup 2023-02-18 15:04:34 -06:00
FatBoy 38e25bf132 hotzone duration config, non repeating hotzones 2023-02-18 14:30:15 -06:00
FatBoy ffe0ecd488 name change 2023-02-18 14:02:35 -06:00
FatBoy 61df76c80a mines default to not be claimed at hour 1400 2023-02-18 13:58:49 -06:00
FatBoy 82249a6d6d drop rates calculated via magicbane.conf on server boot 2023-02-18 13:53:27 -06:00
FatBoy ecaf56f647 maintenance to run on specific day of week only 2023-02-18 10:54:11 -06:00
MagicBot 8dc647fb4f Bugfix: empty guild not errant 2023-02-18 09:30:39 -05:00
MagicBot 7b16c55dc6 Teleport to the target gate. 2023-02-15 13:49:34 -05:00
MagicBot f1a652122c Portals configured in the runegate constructor. 2023-02-15 13:38:13 -05:00
MagicBot 1e0738594a More than one row in result set is needed. 2023-02-15 13:10:08 -05:00
MagicBot eac2e3f42b Portal array list now filled at bootstrap. 2023-02-15 12:29:38 -05:00
MagicBot 2c0a46e652 Runegates and portals now loaded from database. 2023-02-15 12:12:30 -05:00
MagicBot 9fa83fc359 PortalType defined to supply offset and effect bitflag for Runegates. 2023-02-15 09:18:02 -05:00
MagicBot 97948caa48 Merge remote-tracking branch 'origin/post-wipe-merge' into feature-db-agnostic-realms 2023-02-11 14:15:31 -05:00
MagicBot 9ff4d7c6dc bugfix: Prior claims are no longer released when claiming a new mine. 2023-02-11 13:29:12 -05:00
MagicBot cbe82bb95a Output cleanup in ./realminfo. 2023-02-11 07:11:00 -05:00
MagicBot 6ad4d87487 Merge remote-tracking branch 'origin/post-wipe-merge' into feature-db-agnostic-realms 2023-02-10 08:56:37 -05:00
MagicBot 6c138a1515 Bugfix: effects without associated powers on login. 2023-02-10 08:49:24 -05:00
FatBoy b8be399df7 mob AI testing 2023-02-08 20:37:31 -06:00
FatBoy 2462cc13dd guard static power load correct placement 2023-02-08 20:09:56 -06:00
FatBoy eddedbee5b guard static power load 2023-02-08 19:39:52 -06:00
FatBoy 58c4ece887 10 second delay min between casts & mobs no longer cast beneficial spells on players 2023-02-08 19:38:35 -06:00
MagicBot f64c059f26 Color map built after realms loaded. 2023-02-08 09:27:46 -05:00
MagicBot 5cfb451041 Realms refactored to pull map color from database not hardcoded enum. 2023-02-08 09:09:54 -05:00
FatBoy 8e457abe6d mage guards once again have powers 2023-02-07 21:41:48 -06:00
FatBoy d837af7c33 static powers update 2023-02-07 20:57:56 -06:00
MagicBot abd8697d56 Testing realm renumbering 2023-02-07 11:13:55 -05:00
FatBoy 77b3213e79 spire effects extend to siege bounds 2023-02-04 21:44:16 -06:00
FatBoy 7817b4cd49 destroyed BoW no longer count towards total available assets 2023-02-04 21:43:53 -06:00
FatBoy ce02a1ea65 mob mele damage formula update 2023-02-04 21:26:04 -06:00
FatBoy 15580f478f mob casting logic upgrade 2023-02-02 20:34:25 -06:00
FatBoy b2ad7e0478 mob casting logic upgrade 2023-02-02 19:44:23 -06:00
FatBoy 642cb3fdcf Durability cleanup 2023-01-31 08:34:45 -05:00
MagicBot a0b805698e Merge remote-tracking branch 'origin/bugfix-armorpiercing' into post-wipe-merge 2023-01-31 07:56:30 -05:00
MagicBot 879516632b Merge remote-tracking branch 'origin/bugfix-durability-enchantments' into post-wipe-merge 2023-01-31 07:56:20 -05:00
FatBoy 8e692ea21e Durability repair fix 2023-01-29 19:06:54 -06:00
FatBoy 727309a706 finalized cleanup 2023-01-29 15:10:37 -06:00
FatBoy c0e3fcffd1 finalized cleanup 2023-01-28 18:06:51 -06:00
FatBoy 61bdda7886 combat to include armor piercing calculation 2023-01-28 17:57:40 -06:00
FatBoy 50c2972f99 server now accounts for durabilty enchants 2023-01-28 15:36:10 -06:00
FatBoy f98eaa4d6b fixed boon stat application 2023-01-28 12:11:24 -06:00
FatBoy cf801ed7f6 added check for double mines 2023-01-28 10:50:44 -06:00
FatBoy b2fd5990af added check for double mines 2023-01-27 00:02:05 -06:00
MagicBot ab8ee542c6 Hotpatch for shroudbourne hot issue. 2023-01-22 23:52:16 -05:00
MagicBot 3cf6f28d83 Only returning inactive mines in list. 2023-01-21 14:59:37 -05:00
MagicBot e31f320b45 Comment and clarity cleanup. 2023-01-21 12:52:52 -05:00
MagicBot fa0cfa5191 More context in method names. 2023-01-21 12:27:33 -05:00
MagicBot d425050387 Resetting tracking variables when a mine tower is destroyed. 2023-01-21 11:58:08 -05:00
MagicBot 39f3e4ed2c Mine window methods moved to HourlyJobThread and made static. 2023-01-21 11:11:34 -05:00
MagicBot 1ed51c8e02 Lambda syntax sugar 2023-01-21 10:54:51 -05:00
MagicBot 663aafb4c8 Removed leftover code from message pump. 2023-01-21 10:13:00 -05:00
MagicBot b90b8ca422 Protocol handler created for ArcMineChangeProductionMsg. 2023-01-21 10:11:28 -05:00
MagicBot 0e3fdcd8c2 Audit class moved to correct package. 2023-01-21 10:04:34 -05:00
MagicBot 36cb532b20 Handler created for ArcOwnedMinesListHandler. 2023-01-21 09:47:53 -05:00
MagicBot 3cec1b4466 Class cleanup. 2023-01-21 09:39:53 -05:00
MagicBot 825f41e469 rename method to isEmptyGuild() so as not to confuse with GuildState. 2023-01-21 09:28:30 -05:00
MagicBot 2fac480117 Shrines now decay at midnight not every reboot. 2023-01-21 08:53:57 -05:00
MagicBot 2c3aa6e7e5 Cleanup of restriction logic. 2023-01-21 08:42:43 -05:00
MagicBot 78f7503558 Changing your WOO outside the NA window is allowed. 2023-01-21 08:28:16 -05:00
MagicBot 6a1b461735 Refactor WOO change timer mechanics to use the same system as the mine claims. Moved both resets to the hourly job. 2023-01-21 08:18:40 -05:00
MagicBot de41702914 Protocol handler created for ArcMineWindowAvailableTimeMsg. 2023-01-21 07:24:50 -05:00
MagicBot 21cf22f4cf Sanity check added for slider. 2023-01-20 14:28:29 -05:00
MagicBot 7539505956 Mine claims released upon death. 2023-01-20 13:54:36 -05:00
MagicBot c6e0680583 Mine claims released when leaving world. 2023-01-20 13:45:46 -05:00
MagicBot 4a946b6b3a Mine claims released when leaving guild. 2023-01-20 13:38:54 -05:00
MagicBot 0719fa9953 No warehouse PopUp feedback. 2023-01-20 13:35:57 -05:00
MagicBot 14adea8b2e Null check added to releaseAllMines. 2023-01-20 12:41:44 -05:00
MagicBot 3ec16d04d6 Prior claims are released upon a new claim. 2023-01-20 12:18:11 -05:00
MagicBot 1c228df4a8 Revert method refactor. 2023-01-20 11:24:37 -05:00
MagicBot 592caa40ea Serializing nation mine times. 2023-01-20 10:34:57 -05:00
MagicBot 20dba75602 Mine limits based upon nation tree rank. 2023-01-20 10:17:34 -05:00
MagicBot c82a414567 Serialization tweak. 2023-01-20 08:38:13 -05:00
MagicBot 1c9e22d964 Mine.wasClaimed added to ./info dev command. 2023-01-20 08:31:20 -05:00
MagicBot f7f71ef7cf DevCmd and class name should match. 2023-01-20 08:29:45 -05:00
MagicBot 1a7003ce59 Serialized mine open time adjusted if the mine was claimed during this cycle. 2023-01-20 08:12:53 -05:00
MagicBot 889e969c44 Mine cycle is reset at 01:00hrs. 2023-01-20 08:06:14 -05:00
MagicBot f51bfc6d2b Mines can only be claimed once a cycle. 2023-01-20 07:57:42 -05:00
MagicBot 715fdeec9e Merged the two errant guild methods. 2023-01-20 07:54:00 -05:00
MagicBot c57ae6d916 Removal of session tracking. 2023-01-20 07:50:37 -05:00
MagicBot bc1fc5748c Mine windows are set by the nation's WOO. 2023-01-19 17:41:38 -05:00
MagicBot ad9908fda1 Nation cannot be errant. 2023-01-19 17:34:45 -05:00
MagicBot cbd9021cfa Setting last claimer properly during claim. 2023-01-19 17:32:11 -05:00
MagicBot 49af4b8920 Update to system mine claim message. 2023-01-19 17:00:27 -05:00
MagicBot 9442bb1d39 Debugging code removed. 2023-01-19 16:49:36 -05:00
MagicBot efa504a714 Debugging isErrant() 2023-01-19 16:38:39 -05:00
MagicBot ea34418f2d Cleanup of duplicate errant guild definitions. 2023-01-19 16:22:37 -05:00
MagicBot 8ff0216243 Opening mines at the end of bootstrap. 2023-01-19 16:12:18 -05:00
MagicBot 332c860def Errant mines active at startup. 2023-01-19 15:50:49 -05:00
MagicBot 038cac8aed Errant mines active at startup. 2023-01-19 15:45:13 -05:00
MagicBot 00877279bc Errant mines active at startup. 2023-01-19 15:43:19 -05:00
MagicBot da073feb08 Errant mines active at startup. 2023-01-19 15:42:18 -05:00
MagicBot adae9a9ce1 Errant mines active at startup. 2023-01-19 15:39:49 -05:00
MagicBot 53a6b09099 Accessor level change 2023-01-19 15:22:12 -05:00
MagicBot e78d1f4ac4 OwningGuild should be set to errant not null. 2023-01-19 14:43:08 -05:00
MagicBot 11e5439e1d Set owner to null when invalid claim occurs. 2023-01-19 14:15:43 -05:00
MagicBot 78cdb6967a Message when claiming mine succeeds. 2023-01-19 14:09:15 -05:00
MagicBot 79d05f1fb2 Serialize current time for all active mines regardless of claim status. 2023-01-19 13:59:52 -05:00
MagicBot 2a140a6ce1 Serialize current time for all active mines regardless of claim status. 2023-01-19 13:57:43 -05:00
MagicBot a2bdfcc031 Cleanup of logic. 2023-01-19 13:47:11 -05:00
MagicBot 0f2ca3e62e Cleanup of logic. 2023-01-19 13:46:33 -05:00
MagicBot 55e6ca2d41 Error message when claiming a mine fails. 2023-01-19 13:36:16 -05:00
MagicBot 837c2fa1f9 Consolidating handling of different session. 2023-01-19 13:27:26 -05:00
MagicBot c596aa5a01 Unused variable removed. 2023-01-19 12:55:17 -05:00
MagicBot af38dd8fb9 Should not be sending messages to players here. 2023-01-19 12:48:54 -05:00
MagicBot dab9097680 Must wait for a mine window to close to change your guild's WOO to it. 2023-01-19 12:41:32 -05:00
MagicBot 04fc0d6815 Removed Bonus code 2023-01-19 12:36:01 -05:00
MagicBot 4eb1350c3b Rename for clarity 2023-01-19 12:21:29 -05:00
MagicBot 9e7cbdc2d3 bugfix: guilds cannot be null only errant. 2023-01-19 12:19:37 -05:00
MagicBot c89b60221e Extracted open/close logic to method. Run at startup. 2023-01-19 11:21:08 -05:00
MagicBot b88a10d509 Removed vestigial db handler method. 2023-01-19 10:50:22 -05:00
MagicBot 6672f750d9 Initial refactor: deleted all old code and replaced with something sensible. Driven from the guild's mine hour instead of calculating dates. 2023-01-19 10:38:49 -05:00
MagicBot 5ff4703b14 Background thread to monitor admin events. 2023-01-16 06:35:06 -05:00
MagicBot 87dfc968aa Updated admin events to read 2023-01-16 06:24:24 -05:00
MagicBot fba041db5e Method created to send Admin Log Updates to users. 2023-01-16 06:13:44 -05:00
MagicBot cad78c55bd Typo in enum 2023-01-16 06:00:43 -05:00
MagicBot 0c4187faeb ADMINLOG added to ConfigManager 2023-01-16 05:54:08 -05:00
MagicBot c2a84ed31b Starting work on output of admin log. 2023-01-16 05:50:59 -05:00
MagicBot b6506ac3f1 Starting work on output of admin log. 2023-01-16 05:41:31 -05:00
MagicBot 920fcd4b8e Generic ChatChannelHandler created. 2023-01-16 05:28:35 -05:00
MagicBot c59c0629a7 Generic ChatChannelHandler created. 2023-01-16 05:23:31 -05:00
MagicBot 8fbd408fb4 Admin log channel created. 2023-01-16 05:19:02 -05:00
MagicBot 4e6411e555 Merge remote-tracking branch 'origin/post-wipe-merge' into MagicBot-adminlog 2023-01-16 05:11:51 -05:00
MagicBot d70305b0b6 Merge branch 'bugfix-siege-asset-placement' into post-wipe-merge
# Conflicts:
#	src/engine/net/client/handlers/PlaceAssetMsgHandler.java
2023-01-15 23:45:12 -05:00
MagicBot 0469754d5d Bugfix: needs city parent not current zone to pick up siege bounds. 2023-01-15 13:00:26 -05:00
MagicBot 7cb0e5f6b2 Retrieve Admin Log events from database as a map. 2023-01-15 11:29:24 -05:00
MagicBot cec70b3b64 Tweak of column names and Event Strings. 2023-01-15 10:55:16 -05:00
MagicBot 21ff024bf8 Admin login events captured. 2023-01-15 10:34:56 -05:00
MagicBot 3f700f57a7 Admin command usages logged to database. 2023-01-15 10:01:11 -05:00
MagicBot 68294baae6 Cleanup of scope issue when creating city objects. 2023-01-15 08:57:54 -05:00
MagicBot 526c078978 Collision check extracted to method. 2023-01-15 08:31:56 -05:00
MagicBot f3fee3140a Move siege validation out of the generic ValidateBuildingPlacement method. 2023-01-15 08:18:23 -05:00
FatBoy e0af139b24 deed no longer is taken after failed placement 2023-01-14 18:56:43 -06:00
FatBoy 313c13c588 corrected error message ID numbers 2023-01-14 18:36:51 -06:00
MagicBot 8ef5cb4e22 Rework of validation checks. 2023-01-14 16:31:58 -05:00
MagicBot 2643be456e Moved validation check to before asset creation. 2023-01-14 15:34:23 -05:00
MagicBot 29c6d6cd8e Counter scope issue resolved. 2023-01-14 15:23:02 -05:00
MagicBot c84fb60177 Errant import removed. 2023-01-14 15:08:18 -05:00
MagicBot d8dad9f087 Extract siege limits validation method. 2023-01-14 15:07:35 -05:00
MagicBot 45f94c736a Excess whitespace. 2023-01-14 14:29:33 -05:00
MagicBot 7a670ffdbf Appropriate error messages for BOW limits. 2023-01-14 13:35:37 -05:00
FatBoy 325c8b8254 siege asset placement reliant on attcker/defender maximums 2023-01-14 11:57:30 -06:00
MagicBot 90335355b7 Less verbose error message 2023-01-13 15:07:53 -05:00
MagicBot 4c10e01539 Reset time calculation updated. 2023-01-13 14:37:53 -05:00
MagicBot a76534f0af Mesh set properly when errant mine loaded. 2023-01-13 14:34:04 -05:00
MagicBot a06420eae3 Early exit for errant mines at bootstrap. Wtb method extract. 2023-01-13 14:19:01 -05:00
MagicBot 48d435f2c1 Early exit for errant mines. 2023-01-13 14:12:22 -05:00
MagicBot 43380962cc Early exit for errant mines. 2023-01-13 14:04:14 -05:00
MagicBot 14247715fd Removed unused EffectiveDate 2023-01-13 13:50:52 -05:00
MagicBot 7282868eac Errant mines are errant. 2023-01-13 12:09:30 -05:00
MagicBot b30e35f465 Refresh mine when destroyed. 2023-01-13 11:52:50 -05:00
MagicBot d9352b6d34 Refresh mine when destroyed. 2023-01-13 11:46:26 -05:00
MagicBot 26dcccad81 Errant mines now change owner in database. 2023-01-13 11:24:41 -05:00
MagicBot d0cf94dbf9 HandleEndMineWindow will bump the date for us. 2023-01-13 09:13:53 -05:00
MagicBot f61bb925f8 Cleanup of NextMindWindow logic. 2023-01-13 09:01:38 -05:00
MagicBot 5929d5dd56 Cleanup of NextMindWindow logic. 2023-01-13 08:43:20 -05:00
MagicBot 5a19507f53 Merge remote-tracking branch 'origin/refinement-fix' into post-wipe-merge 2023-01-13 08:25:34 -05:00
MagicBot 5c3ea2c4c3 Merge remote-tracking branch 'origin/world-announcements' into post-wipe-merge 2023-01-13 08:25:19 -05:00
FatBoy 1fef5e7c05 refund points from lost spells 2023-01-12 21:44:52 -06:00
FatBoy 743e1f150d refund points from lost spells 2023-01-12 21:35:29 -06:00
FatBoy 7c983d04a3 refine stat point check 2023-01-12 20:35:25 -06:00
FatBoy 73edd8d932 discipline and godly drop messages added 2023-01-11 21:58:24 -06:00
FatBoy cd0e31f39d discipline and godly drop messages added 2023-01-11 21:02:18 -06:00
MagicBot 9e6c96a487 Merge remote-tracking branch 'origin/refinement-fix' into post-wipe-merge 2023-01-11 21:29:03 -05:00
FatBoy 523e83a49c Merge remote-tracking branch 'origin/post-wipe-merge' into refinement-fix 2023-01-11 20:10:42 -06:00
FatBoy c9972962d1 check for powers needing skill 2023-01-11 19:52:38 -06:00
MagicBot 4b8e0cb041 Bump old opendate during reboot to current +1 when mine window has passed. 2023-01-11 16:27:01 -05:00
MagicBot 3ec985e3d9 bugfix: window should not end for a mine not opened. 2023-01-11 15:00:52 -05:00
MagicBot af7d801388 bugfix: not overriding mine open date on boot. 2023-01-10 12:27:54 -05:00
MagicBot 98470d4b1a Added help for #dev subcommands 2023-01-10 08:51:00 -05:00
MagicBot 81b7259423 Added remote console output. 2023-01-10 08:34:11 -05:00
MagicBot d6a505fd00 Added lastout sub command. 2023-01-09 10:22:35 -05:00
MagicBot a71bf4330b Redirecting output via the shell. 2023-01-09 10:12:45 -05:00
MagicBot 72cbcb13fc Change to response string after exec() 2023-01-09 10:09:43 -05:00
MagicBot 8904fb8828 Removed file redirect; better to do that within the shell. 2023-01-09 10:06:37 -05:00
MagicBot 93b33ce37e Capturing output of remote exec() to file. 2023-01-09 09:58:51 -05:00
MagicBot 9ce06da271 Capturing output of remote exec() to file. 2023-01-09 09:43:03 -05:00
MagicBot a460a201e1 Logging string contains exec command. 2023-01-09 09:07:40 -05:00
MagicBot 1493d3ad45 Support for more than one argument. 2023-01-09 02:01:29 -05:00
MagicBot ee676a08ea Better logging and error reporting. 2023-01-09 01:59:18 -05:00
MagicBot 0c87410018 Using ProcessBuilding instead of exec() 2023-01-09 01:47:59 -05:00
MagicBot 9268fa8b01 Using ProcessBuilding instead of exec() 2023-01-09 01:39:14 -05:00
MagicBot eea13b22a0 Using ProcessBuilding instead of exec() 2023-01-09 01:32:57 -05:00
MagicBot fe87253a86 Fixed argument passing to unix runtime. 2023-01-09 01:22:11 -05:00
MagicBot 701bf85c8b Fixed argument passing to unix runtime. 2023-01-09 01:14:54 -05:00
MagicBot d4d24c9443 Fixed argument passing to unix runtime. 2023-01-09 01:11:27 -05:00
MagicBot 23f44f1fb8 Command name is restart not reboot. 2023-01-09 01:01:43 -05:00
MagicBot 9a2503b9c3 Merge remote-tracking branch 'origin/MagicBot_DevCmds' into post-wipe-merge 2023-01-09 00:44:08 -05:00
MagicBot 825d1897cb Removal of vestigial string restriction.
Command renamed to #dev
2023-01-08 17:18:57 -05:00
MagicBot c002eec8bd Consolidated all into one command #dev. 2023-01-08 12:44:16 -05:00
MagicBot 0fd5d09e3e Command added to remote build on Dev server. 2023-01-08 12:27:40 -05:00
MagicBot e9850a51bc Merge remote-tracking branch 'origin/minetime_bugfix' into post-wipe-merge 2023-01-08 07:07:12 -05:00
MagicBot df09b6e38b Removed 30 lines of logic that had no business in a result set constructor. 2023-01-07 13:49:31 -05:00
MagicBot 52d3d8ee3a Not adding an extraneous day each reboot. 2023-01-07 13:26:47 -05:00
MagicBot 7bc09d86bd Saving WOO timer to database for reboot persist. 2023-01-07 12:31:22 -05:00
MagicBot 860d4d9b31 Bugfix: setting lastwoocheck field after update. 2023-01-07 11:31:41 -05:00
MagicBot 4b5ce5bdb1 15hr WOO restriction check added. 2023-01-07 11:22:38 -05:00
MagicBot 302358e31c Storing lastWooEditTime for guilds in obj_guild table. Requires Schema Change. 2023-01-07 11:03:07 -05:00
MagicBot 83b514a05f Class cleanup. 2023-01-07 10:35:00 -05:00
MagicBot 2f22b3b91b Protocol Handler created for ArcMineWindowChangeMsg 2023-01-07 09:44:51 -05:00
MagicBot f979a7b694 Merge remote-tracking branch 'origin/nation-sub-limits' into post-wipe-merge 2023-01-07 09:01:39 -05:00
MagicBot 78be9bfd4f Merge remote-tracking branch 'origin/sale-item-value' into post-wipe-merge 2023-01-07 09:01:29 -05:00
FatBoy 5f0803eec4 nation sub limits added 2023-01-01 21:56:49 -06:00
FatBoy 6cf7b88025 NPCs buy at base cost only 2023-01-01 15:53:05 -06:00
FatBoy d3e05ec247 subs limited to cap rank 2023-01-01 15:48:17 -06:00
MagicBot 5853dc802d Merge pull request 'Fix for weaponspeed effect modifier.' (#19) from EffectModifierFix into master
Reviewed-on: http://repo.magicbane.com/MagicBane/Server/pulls/19
2022-12-30 13:13:15 +00:00
MagicBot a35c5ef3cc Fix for weaponspeed effect modifier. 2022-12-30 07:39:23 -05:00
MagicBot dfd6beb988 Merge pull request 'bugfix-flightfix' (#18) from bugfix-flightfix into master
Reviewed-on: http://repo.magicbane.com/MagicBane/Server/pulls/18
2022-08-28 11:43:42 +00:00
MagicBot ebeda7d7ba Players grounded properly when losing flight. 2022-08-27 17:14:50 -04:00
MagicBot 5fe518f8a1 Players grounded properly when losing flight. 2022-08-27 16:44:05 -04:00
MagicBot ab82529a4b Players grounded properly when losing flight. 2022-08-27 16:31:07 -04:00
MagicBot 9988863a85 Merge pull request 'treb-range-fix' (#17) from treb-range-fix into master
Reviewed-on: http://repo.magicbane.com/MagicBane/Server/pulls/17
2022-08-24 12:22:20 +00:00
MagicBot 8a3c3d7571 Merge branch 'master' into treb-range-fix 2022-08-24 12:22:09 +00:00
MagicBot 3ae1c2ebb2 Merge pull request 'fixed mob ATR' (#16) from mob-atr-fix into master
Reviewed-on: http://repo.magicbane.com/MagicBane/Server/pulls/16
2022-08-24 12:21:25 +00:00
FatBoy 5ab4eb5b32 run siege minion after load 2022-08-23 15:03:35 -05:00
FatBoy 09d0046baf run siege minion after load 2022-08-23 14:59:27 -05:00
FatBoy 865c50f984 fixed trebs 2022-08-23 14:25:24 -05:00
FatBoy f0b80f8eb3 fixed mob ATR 2022-08-15 18:21:34 -05:00
MagicBot 77aa14b7da SDR added to magic bucket numbers. 2022-08-04 16:10:06 -04:00
MagicBot e6af752c6d Hotfix: bane null check order. 2022-07-27 08:56:45 -04:00
MagicBot 2436579752 Merge pull request 'release-1.3' (#13) from release-1.3 into master
Reviewed-on: http://repo.magicbane.com/MagicBane/Server/pulls/13
2022-07-13 17:55:55 +00:00
MagicBot aef34d434a README update. 2022-07-13 13:49:28 -04:00
FatBoy 2922fdf623 changed mob casting rate from 1/3 to 1/10 2022-06-26 20:07:18 -05:00
FatBoy 3f35df3916 fixed crashing bug form my own mistake 2022-06-26 20:04:14 -05:00
FatBoy e79a907f3b mobs no longer always hit, mob powers now send power message in chat window 2022-06-26 20:01:05 -05:00
MagicBot 45ab56e98d More detail when missing a config entry. 2022-06-26 11:05:37 -04:00
MagicBot 246bfe59cb More detail when missing a config entry. 2022-06-26 10:47:08 -04:00
MagicBot afa74ba6fe Optimized imports. 2022-06-23 18:25:45 -04:00
MagicBot 02ed3ff778 Removed unused imports. 2022-06-23 15:51:37 -04:00
MagicBot 14d1c7ccbb Merge branch 'update-config' into release-1.3 2022-06-23 15:48:14 -04:00
MagicBot 0f5b0493b9 Merge remote-tracking branch 'origin/pet-guard-damage-fix' into release-1.3 2022-06-23 15:47:52 -04:00
MagicBot efab188ebd Merge remote-tracking branch 'origin/flight-fix-cleanup' into release-1.3 2022-06-23 15:47:32 -04:00
MagicBot eaaa5bf717 Merge branch 'enter-siege-bounds' into release-1.3 2022-06-23 15:47:16 -04:00
FatBoy 4812068982 changed onEnter for city to refernce siege bounds 2022-06-12 13:53:33 -05:00
FatBoy 3189ac0d56 mob powers now scale based on their level 2022-06-09 18:55:16 -05:00
FatBoy f8a9262fc5 changed location of mob power lookup 2022-06-09 18:22:30 -05:00
FatBoy 9ce7e1c5ca mobs and guards can cast their power sets 2022-06-08 21:09:59 -05:00
FatBoy 2e5c05d932 work on mob casting 2022-06-08 19:56:09 -05:00
FatBoy 56ad9d7907 changed max pet damage scale 2022-06-07 20:30:02 -05:00
FatBoy 65840e89b6 scaled damage range for pets to be based on level 2022-06-07 20:27:45 -05:00
FatBoy 69c78fa5a6 added power casting for pets who have DB entires 2022-06-07 20:24:11 -05:00
FatBoy 3c610a8564 Fix to mob/guard static power lookup 2022-06-06 19:21:39 -05:00
MagicBot 4f2954041d Removed unused code. 2022-06-06 04:48:04 -04:00
MagicBot 24d96f24b2 Moving Fname regex to config 2022-06-06 04:28:44 -04:00
MagicBot ad4678ab3c Version info pulled from config. 2022-06-06 03:26:34 -04:00
MagicBot d5d957a910 bugfix: ignore case with boolean config values. 2022-06-06 03:21:27 -04:00
MagicBot d89cd97eb6 Missing config suggests outdated MagicBox. 2022-06-06 03:13:07 -04:00
FatBoy 16e4f3fa7a fix to abandoning tree as nation check 2022-06-05 21:14:10 -05:00
FatBoy 657cc0cf9e Cannot Abandon Tree if You Own a Bane : Cannot Abandon Tree if you are a nation 2022-06-05 20:55:57 -05:00
FatBoy 45234d24ca stupid error fixed (!=) 2022-06-05 17:36:30 -05:00
FatBoy cd55105b28 spire effects extend to siege bounds 2022-06-05 17:27:40 -05:00
FatBoy d9b5544894 added message to player trying to delete asset during active siege 2022-06-05 17:12:56 -05:00
FatBoy a62617324d added message to player trying to delete asset during active siege 2022-06-05 17:03:44 -05:00
FatBoy 8665011457 can no longer delete building during active bane 2022-06-05 16:56:54 -05:00
MagicBot 18bf19502f Spire effects reach to siege bounds. 2022-06-05 17:02:44 -04:00
MagicBot 168a4f2a17 24.3 placement ruleset.
512/576/1040 grid/zone/siege
2022-06-05 16:56:01 -04:00
MagicBot d3f77d10c5 Flight fix re-enabled. 2022-06-04 13:45:09 -04:00
MagicBot bf87894f8c Removed flight job bonus code. 2022-06-04 13:30:35 -04:00
MagicBot 59cebf9e9b Auditmobs hashset for to deleted as it was being populated once a second but never used. 2022-06-03 12:28:56 -04:00
FatBoy 87e18351be moved flight check to MovementManager 2022-06-03 08:42:08 -05:00
FatBoy 94bc41ab9d added flight check 2022-06-02 21:01:18 -05:00
FatBoy c795238231 Changed if/else tunnel to switch 2022-06-02 20:39:52 -05:00
Bardiel 43c32ce329 Merge pull request 'Added equipsets for naked guards' (#10) from guard-equipsets into master
Reviewed-on: http://repo.magicbane.com/MagicBane/Server/pulls/10
2022-06-01 21:54:22 +00:00
Bardiel 4f60640ddf Equipment Set for Forest Mage guard added
Equipment Set for Templar guard added
Equipment Set for Aracoix Magister guard added
2022-06-01 13:58:23 -07:00
Bardiel f87d39b51c Equipment Set for Forest Mage guard added 2022-06-01 13:33:24 -07:00
MagicBot 0475cc1e66 Merge pull request 'bugfix-citysizing' (#7) from bugfix-citysizing into master
Reviewed-on: http://repo.magicbane.com/MagicBane/Server/pulls/7
2022-05-22 13:07:27 +00:00
MagicBot 79702eab1a Merge branch 'master' into bugfix-citysizing 2022-05-22 13:07:09 +00:00
MagicBot 261e3a6c49 Merge pull request 'Bugfix for damage absorbers.' (#6) from bugfix-absorber into master
Reviewed-on: http://repo.magicbane.com/MagicBane/Server/pulls/6
2022-05-22 13:04:37 +00:00
MagicBot e8b7d63a59 Bugfix for damage absorbers. 2022-05-13 15:25:04 -04:00
MagicBot 638985d332 Revert grid sizing to 576/640 per 2018 commit. 2022-05-13 13:38:52 -04:00
MagicBot 894427af72 Using original MB values when sizing city terraform. 2022-05-12 15:33:43 -04:00
MagicBot e6bbb53ac8 bugfix: Channel ID update. 2022-05-11 15:37:46 -04:00
MagicBot cb279a5d5a bugfix: Pass MB_WORLD_PORT to isPortInUse() 2022-05-10 11:56:06 -04:00
MagicBot 2af224c90f bugfix: MagicBot needs to autodetect public ip for #status to work. 2022-05-10 11:41:45 -04:00
MagicBot 8faec41487 Merge pull request 'bugfix-MagicBoxlocalhost' (#3) from bugfix-MagicBoxlocalhost into master
Reviewed-on: http://repo.magicbane.com/MagicBane/Server/pulls/3
2022-05-03 16:43:47 +00:00
MagicBot 93a8274b7b Merge branch 'master' into bugfix-MagicBoxlocalhost 2022-05-03 16:43:28 +00:00
MagicBot d8fd03b287 Merge pull request 'Fixes issue where max allowed keyclones was hardcoded and not pulled from the config.' (#2) from bugfix-keycloneAudit into master
Reviewed-on: http://repo.magicbane.com/MagicBane/Server/pulls/2
2022-05-03 16:40:16 +00:00
MagicBot 3c7e1827f2 Merge branch 'master' into bugfix-keycloneAudit 2022-05-03 16:39:57 +00:00
MagicBot 24057e6412 Logging when network autoconfig occurs 2022-05-03 12:23:45 -04:00
MagicBot a59dbdc4e1 Fixes bug where public_addr was autoconfigured irrespective of not being 0.0.0.0 2022-05-03 12:02:05 -04:00
MagicBot 8105544894 Update 'README.md' 2022-05-02 18:07:53 +00:00
MagicBot 3456e14d04 Fixes issue where max allowed keyclones was hardcoded and not pulled from the config. 2022-05-02 07:35:15 -04:00
MagicBot c45491a3d2 Merge pull request 'Feature-AutoRegister' (#1) from Feature-AutoRegister into master
Reviewed-on: http://repo.magicbane.com/MagicBane/Server/pulls/1
2022-04-30 18:54:04 +00:00
MagicBot 4205ebe384 SQL caretfix 2022-04-30 14:42:09 -04:00
MagicBot 890f9ad49d SQL caretfix 2022-04-30 14:38:57 -04:00
MagicBot bf3517ebb3 More logging 2022-04-30 14:30:47 -04:00
MagicBot 459d61b20a Autoregister plugged in. 2022-04-30 14:19:33 -04:00
MagicBot 0beb75c9fb Handler added to create single account 2022-04-30 14:11:35 -04:00
MagicBot 2997e5bda2 Feature needs a new configuration entry. 2022-04-30 14:05:05 -04:00
MagicBot a6d5240a66 Update 'README.md' 2022-04-30 17:41:09 +00:00
MagicBot e1b3fa0438 Update 'README.md'
Added info about scan-when-commit pain.
2022-04-30 17:39:37 +00:00
MagicBot bb2bdce93b Update 'README.md'
Edit to README
2022-04-30 13:44:03 +00:00
MagicBot bbfdde57a3 Initial Repository Push 2022-04-30 09:41:17 -04:00
MagicBot d4eef9097a Update to README.md and LICENSE 2022-04-30 09:36:18 -04:00
MagicBot d8a90902b5 Initial commit 2022-04-30 13:11:10 +00:00
50 changed files with 66 additions and 11618 deletions
+5
View File
@@ -24,3 +24,8 @@
hs_err_pid*
replay_pid*
*.idea/
Server.iml
*.gitignore
prestonbane.iml
qodana.yaml
-8203
View File
File diff suppressed because one or more lines are too long
@@ -1,87 +0,0 @@
# Account Handler Documentation
## Overview
This document describes the database relationships and interactions for the `dbAccountHandler` class. The account handler manages user authentication and account-related data in the Magicbane emulator system.
## Handler Class
**File:** `src/engine/db/handlers/dbAccountHandler.java`
**Class:** `dbAccountHandler`
**Extends:** `dbHandlerBase`
## Database Tables
### Main Account Table
- **Table Name:** `obj_account`
- **Description:** Core account information including login credentials, status, and account details
- **Columns:**
- UID (Primary Key)
- username
- password
- email
- accountStatus
- lastLogin
- creationDate
- isBanned
- banReason
- isDeleted
- deletedDate
### Related Tables
| Table Name | Description | Relationship |
|------------|-------------|--------------|
| `obj_account_wipe` | Account wipe history records | AccountID → obj_account.UID |
| `dyn_login_history` | Login attempt and session history | AccountID → obj_account.UID |
## Key Queries
### Get Account by ID
```sql
SELECT * FROM `obj_account` WHERE `UID`=?
```
**File:** `dbAccountHandler.java`, Line ~60
### Get Account by Username
```sql
SELECT * FROM `obj_account` WHERE `username`=?
```
**File:** `dbAccountHandler.java`, Line ~85
### Create New Account
```sql
INSERT INTO `obj_account` (`username`, `password`, `email`, `accountStatus`, `creationDate`) VALUES (?, ?, ?, ?, ?)
```
**File:** `dbAccountHandler.java`, Line ~105
### Update Account Status
```sql
UPDATE `obj_account` SET `accountStatus`=?, `lastLogin`=? WHERE `UID`=?
```
**File:** `dbAccountHandler.java`, Line ~132
### Check Username Availability
```sql
SELECT `username` FROM `obj_account` WHERE `username`=?
```
**File:** `dbAccountHandler.java`, Line ~158
## Relationships
1. **Account to Character:** One-to-many (via `obj_character.accountID` field)
2. **Account to Account Wipe History:** One-to-many (via `obj_account_wipe.AccountID`)
3. **Account to Login History:** One-to-many (via `dyn_login_history.AccountID`)
## Java Field to Database Column Mappings
| Java Field | Database Column | Notes |
|------------|-----------------|-------|
| `username` | `obj_account.username` | Unique account username |
| `password` | `obj_account.password` | Encrypted password |
| `email` | `obj_account.email` | Account email address |
| `accountStatus` | `obj_account.accountStatus` | Current account status |
| `lastLogin` | `obj_account.lastLogin` | Timestamp of last login |
| `creationDate` | `obj_account.creationDate` | Account creation date |
| `isBanned` | `obj_account.isBanned` | Boolean flag for banned status |
| `banReason` | `obj_account.banReason` | Reason for ban |
| `isDeleted` | `obj_account.isDeleted` | Boolean flag for deleted status |
| `deletedDate` | `obj_account.deletedDate` | Timestamp of deletion |
@@ -1,63 +0,0 @@
# dbBaneHandler Documentation
## Overview
This document describes the database relationships and interactions for the `dbBaneHandler` class. The bane handler manages special objects in cities that have specific properties and behaviors, including their ownership, location, and time-based effects.
## Handler Class
**File:** `src/engine/db/handlers/dbBaneHandler.java`
**Class:** `dbBaneHandler`
**Extends:** `dbHandlerBase`
## Database Tables
### Main Bane Table
- **Table Name:** `dyn_banes`
- **Description:** Stores information about bane objects placed in cities, including their owner, location, and time-based properties
- **Columns:**
- cityUUID (Primary Key)
- ownerUUID
- stoneUUID
- placementDate
- liveDate
## Key Queries
### CREATE_BANE
```sql
INSERT INTO `dyn_banes` (`cityUUID`, `ownerUUID`, `stoneUUID`, `placementDate`) VALUES(?,?,?,?)
```
**File:** `dbBaneHandler.java`, Line ~17
### LOAD_BANE
```sql
SELECT * FROM `dyn_banes` WHERE `dyn_banes`.`cityUUID` = ?
```
**File:** `dbBaneHandler.java`, Line ~30
### SET_BANE_TIME
```sql
UPDATE `dyn_banes` SET `liveDate`=? WHERE `cityUUID`=?
```
**File:** `dbBaneHandler.java`, Line ~45
### REMOVE_BANE
```sql
DELETE FROM `dyn_banes` WHERE `cityUUID` = ?
```
**File:** `dbBaneHandler.java`, Line ~57
## Relationships
1. **Bane to City:** One-to-one relationship via cityUUID (primary key) referencing obj_city.UID
2. **Bane to Owner:** Many-to-one relationship via ownerUUID referencing obj_character.UID
3. **Bane to Stone:** Many-to-one relationship via stoneUUID referencing obj_building.UID
## Java Field to Database Column Mappings
| Java Field | Database Column | Notes |
|------------|-----------------|-------|
| `cityUUID` | `dyn_banes.cityUUID` | Unique identifier for the city where bane is placed |
| `ownerUUID` | `dyn_banes.ownerUUID` | Character UID of the owner of this bane |
| `stoneUUID` | `dyn_banes.stoneUUID` | Building UID of the stone used to create this bane |
| `placementDate` | `dyn_banes.placementDate` | Timestamp when bane was placed |
| `liveDate` | `dyn_banes.liveDate` | Timestamp for when bane becomes active |
@@ -1,73 +0,0 @@
# dbBaseClassHandler Documentation
## Overview
The `dbBaseClassHandler` is responsible for managing base class data in the Magicbane database. Base classes represent fundamental character classifications that define core attributes and capabilities. This handler manages retrieval of base class information, including fetching specific base classes by ID, retrieving base classes associated with a particular race, and getting all available base classes.
## Database Table Structure
### Table: `static_rune_baseclass`
| Column Name | Data Type | Nullable | Key | Description |
|-------------|-----------|----------|-----|-------------|
| ID | int unsigned | NO | PRIMARY | Unique identifier for the base class |
| name | varchar(45) | NO | | Name of the base class |
| description | varchar(200) | NO | | Description of the base class |
| strMod | tinyint | NO | | Strength modifier for this base class |
| dexMod | tinyint | NO | | Dexterity modifier for this base class |
| conMod | tinyint | NO | | Constitution modifier for this base class |
| intMod | tinyint | NO | | Intelligence modifier for this base class |
| wisMod | tinyint | NO | | Wisdom modifier for this base class |
| chaMod | tinyint | NO | | Charisma modifier for this base class |
| healthMod | tinyint | NO | | Health modifier for this base class |
| manaMod | tinyint | NO | | Mana modifier for this base class |
| staminaMod | tinyint | NO | | Stamina modifier for this base class |
### Table: `static_rune_racebaseclass`
| Column Name | Data Type | Nullable | Key | Description |
|-------------|-----------|----------|-----|-------------|
| ID | int unsigned | NO | PRIMARY | Unique identifier for the relationship |
| RaceID | int unsigned | NO | FOREIGN KEY | Reference to race in `static_rune_race` |
| BaseClassID | int unsigned | NO | FOREIGN KEY | Reference to base class in `static_rune_baseclass` |
## Java Field to Database Column Mapping
| Java Field | Database Column | Type | Description |
|------------|-----------------|------|-------------|
| baseClass.getId() | ID | int unsigned | Base class unique identifier |
| baseClass.getName() | name | varchar(45) | Base class name |
| baseClass.getDescription() | description | varchar(200) | Base class description |
| baseClass.getStrMod() | strMod | tinyint | Strength modifier |
| baseClass.getDexMod() | dexMod | tinyint | Dexterity modifier |
| baseClass.getConMod() | conMod | tinyint | Constitution modifier |
| baseClass.getIntMod() | intMod | tinyint | Intelligence modifier |
| baseClass.getWisMod() | wisMod | tinyint | Wisdom modifier |
| baseClass.getChaMod() | chaMod | tinyint | Charisma modifier |
| baseClass.getHealthMod() | healthMod | tinyint | Health modifier |
| baseClass.getManaMod() | manaMod | tinyint | Mana modifier |
| baseClass.getStaminaMod() | staminaMod | tinyint | Stamina modifier |
## Key Queries
### GET_BASE_CLASS
- **Query**: `SELECT * FROM \`static_rune_baseclass\` WHERE \`ID\`=?`
- **Parameter**: id (base class ID)
- **Note**: Fixed from original bug - was selecting from obj_account table instead of static_rune_baseclass
### GET_BASECLASS_FOR_RACE
- **Query**: `SELECT b.* FROM \`static_rune_baseclass\` b, \`static_rune_racebaseclass\` r WHERE b.\`ID\` = r.\`BaseClassID\` && r.\`RaceID\` = ?`
- **Parameter**: id (race ID)
### GET_ALL_BASE_CLASSES
- **Query**: `SELECT * FROM \`static_rune_baseclass\`;`
- **Note**: Returns all base classes from the static table
## Relationships
### Foreign Key Relationships
- `static_rune_racebaseclass.BaseClassID` references `static_rune_baseclass.ID`
- `static_rune_racebaseclass.RaceID` references `static_rune_race.ID`
### Associated Objects
- **BaseClass**: Core character classification data
- **Race**: Associated races that can use specific base classes (via `static_rune_racebaseclass`)
@@ -1,119 +0,0 @@
# dbBlueprintHandler Documentation
## Overview
The `dbBlueprintHandler` is responsible for managing building blueprint data and door number mappings in the Magicbane database. This handler loads blueprint information used for building construction and handles door mesh-to-number mappings.
## Database Table Structure
### Table: `static_building_blueprint`
| Column Name | Data Type | Nullable | Key | Description |
|-------------|-----------|----------|-----|-------------|
| Rank0UUID | bigint unsigned | NO | PRIMARY | Unique identifier for the blueprint (rank 0) |
| MeshName | varchar(100) | NO | | Name of the mesh used for the building |
| BuildingGroup | enum | NO | | Group classification of the building type |
| MaintGroup | varchar(45) | YES | | Maintenance group associated with the building |
| Rank1UUID | bigint unsigned | YES | | UUID for rank 1 upgrade |
| Rank2UUID | bigint unsigned | YES | | UUID for rank 2 upgrade |
| Rank3UUID | bigint unsigned | YES | | UUID for rank 3 upgrade |
| Rank4UUID | bigint unsigned | YES | | UUID for rank 4 upgrade |
| Rank5UUID | bigint unsigned | YES | | UUID for rank 5 upgrade |
| Rank6UUID | bigint unsigned | YES | | UUID for rank 6 upgrade |
| Rank7UUID | bigint unsigned | YES | | UUID for rank 7 upgrade |
| UpgradeCost | int | YES | | Cost to upgrade the building |
| UpgradeTime | int | YES | | Time required to upgrade the building |
| MaxHP | int | YES | | Maximum hit points of the building |
| MaxGold | int | YES | | Maximum gold storage capacity |
| MaxLevel | int | YES | | Maximum level for this building |
| MaxRank | int | YES | | Maximum rank for this building |
| MinLevel | int | YES | | Minimum level required to build |
| Scale | float | YES | | Scale factor for the building mesh |
| SizeX | float | YES | | X dimension size |
| SizeY | float | YES | | Y dimension size |
| SizeZ | float | YES | | Z dimension size |
| DoorCount | int | YES | | Number of doors in this building |
| MaxDoorCount | int | YES | | Maximum number of doors allowed |
| IsWall | tinyint(1) | YES | | Flag indicating if building is a wall |
| IsGate | tinyint(1) | YES | | Flag indicating if building is a gate |
| IsTower | tinyint(1) | YES | | Flag indicating if building is a tower |
| IsKeep | tinyint(1) | YES | | Flag indicating if building is a keep |
| IsFortress | tinyint(1) | YES | | Flag indicating if building is a fortress |
| IsCastle | tinyint(1) | YES | | Flag indicating if building is a castle |
| IsBarracks | tinyint(1) | YES | | Flag indicating if building is barracks |
| IsChurch | tinyint(1) | YES | | Flag indicating if building is a church |
| IsForge | tinyint(1) | YES | | Flag indicating if building is a forge |
| IsSpire | tinyint(1) | YES | | Flag indicating if building is a spire |
| IsShrine | tinyint(1) | YES | | Flag indicating if building is a shrine |
| IsRunegate | tinyint(1) | YES | | Flag indicating if building is a runegate |
| IsMine | tinyint(1) | YES | | Flag indicating if building is a mine |
| IsWarehouse | tinyint(1) | YES | | Flag indicating if building is a warehouse |
### Table: `static_building_doors`
| Column Name | Data Type | Nullable | Key | Description |
|-------------|-----------|----------|-----|-------------|
| doorMeshUUID | int | NO | PRIMARY | Unique identifier for the door mesh |
| doorNumber | int | NO | | Door number associated with this mesh |
## Java Field to Database Column Mapping
| Java Field | Database Column | Type | Description |
|------------|-----------------|------|-------------|
| blueprint.getBlueprintUUID() | Rank0UUID | bigint unsigned | Blueprint unique identifier |
| blueprint.getMeshName() | MeshName | varchar(100) | Name of the building mesh |
| blueprint.getBuildingGroup() | BuildingGroup | enum | Group classification of the building |
| blueprint.getMaintGroup() | MaintGroup | varchar(45) | Maintenance group for this building |
| blueprint.getRank1UUID() | Rank1UUID | bigint unsigned | UUID for rank 1 upgrade |
| blueprint.getRank2UUID() | Rank2UUID | bigint unsigned | UUID for rank 2 upgrade |
| blueprint.getRank3UUID() | Rank3UUID | bigint unsigned | UUID for rank 3 upgrade |
| blueprint.getRank4UUID() | Rank4UUID | bigint unsigned | UUID for rank 4 upgrade |
| blueprint.getRank5UUID() | Rank5UUID | bigint unsigned | UUID for rank 5 upgrade |
| blueprint.getRank6UUID() | Rank6UUID | bigint unsigned | UUID for rank 6 upgrade |
| blueprint.getRank7UUID() | Rank7UUID | bigint unsigned | UUID for rank 7 upgrade |
| blueprint.getUpgradeCost() | UpgradeCost | int | Cost to upgrade the building |
| blueprint.getUpgradeTime() | UpgradeTime | int | Time required to upgrade |
| blueprint.getMaxHP() | MaxHP | int | Maximum hit points |
| blueprint.getMaxGold() | MaxGold | int | Maximum gold storage |
| blueprint.getMaxLevel() | MaxLevel | int | Maximum level for this building |
| blueprint.getMaxRank() | MaxRank | int | Maximum rank |
| blueprint.getMinLevel() | MinLevel | int | Minimum level required |
| blueprint.getScale() | Scale | float | Scale factor for mesh |
| blueprint.getSizeX() | SizeX | float | X dimension size |
| blueprint.getSizeY() | SizeY | float | Y dimension size |
| blueprint.getSizeZ() | SizeZ | float | Z dimension size |
| blueprint.getDoorCount() | DoorCount | int | Number of doors |
| blueprint.getMaxDoorCount() | MaxDoorCount | int | Maximum number of doors |
| blueprint.getIsWall() | IsWall | tinyint(1) | Wall flag |
| blueprint.getIsGate() | IsGate | tinyint(1) | Gate flag |
| blueprint.getIsTower() | IsTower | tinyint(1) | Tower flag |
| blueprint.getIsKeep() | IsKeep | tinyint(1) | Keep flag |
| blueprint.getIsFortress() | IsFortress | tinyint(1) | Fortress flag |
| blueprint.getIsCastle() | IsCastle | tinyint(1) | Castle flag |
| blueprint.getIsBarracks() | IsBarracks | tinyint(1) | Barracks flag |
| blueprint.getIsChurch() | IsChurch | tinyint(1) | Church flag |
| blueprint.getIsForge() | IsForge | tinyint(1) | Forge flag |
| blueprint.getIsSpire() | IsSpire | tinyint(1) | Spire flag |
| blueprint.getIsShrine() | IsShrine | tinyint(1) | Shrine flag |
| blueprint.getIsRunegate() | IsRunegate | tinyint(1) | Runegate flag |
| blueprint.getIsMine() | IsMine | tinyint(1) | Mine flag |
| blueprint.getIsWarehouse() | IsWarehouse | tinyint(1) | Warehouse flag |
## Key Queries
### LOAD_ALL_DOOR_NUMBERS
- **Query**: `SELECT * FROM static_building_doors ORDER BY doorMeshUUID ASC`
- **Note**: Loads all door mesh-to-number mappings for building doors
### LOAD_ALL_BLUEPRINTS
- **Query**: `SELECT * FROM static_building_blueprint`
- **Note**: Loads all blueprint definitions for buildings
## Relationships
### Foreign Key Relationships
- None explicitly defined in the handler code (these are likely static lookup tables)
### Associated Objects
- **Blueprint**: Building construction data with mesh information and upgrade paths
- **Door**: Door mesh mappings used for building construction
@@ -1,43 +0,0 @@
# Boon Handler Documentation
## Overview
This document describes the database relationships and interactions for the `dbBoonHandler` class. The boon system in Magicbane is used to manage item bonuses and enhancements that are associated with specific item bases.
## Handler Class
**File:** `src/engine/db/handlers/dbBoonHandler.java`
**Class:** `dbBoonHandler`
**Extends:** `dbHandlerBase`
## Database Tables
### Main Boon Table
- **Table Name:** `static_item_boons`
- **Description:** Contains information about boons (bonuses/enhancements) that can be applied to item bases
- **Columns:**
- UID (Primary Key)
- itemBaseID (Foreign Key to obj_itembase)
- boonType
- boonValue
- boonLevel
## Key Queries
### Get Boon Amounts for Item Base
```sql
SELECT * FROM `static_item_boons` WHERE `itemBaseID` = ?
```
**File:** `dbBoonHandler.java`, Line ~28
## Relationships
1. **Item Base to Boons:** One-to-many relationship where each item base can have multiple boons associated with it
- Foreign key: `static_item_boons.itemBaseID` references `obj_itembase.UID`
## Java Field to Database Column Mappings
| Java Field | Database Column | Notes |
|------------|-----------------|-------|
| `itemBaseID` | `static_item_boons.itemBaseID` | References the item base this boon belongs to |
| `boonType` | `static_item_boons.boonType` | Type of boon (e.g., damage, defense) |
| `boonValue` | `static_item_boons.boonValue` | Value of the boon |
| `boonLevel` | `static_item_boons.boonLevel` | Level of the boon |
@@ -1,98 +0,0 @@
# Building Handler Documentation
## Overview
This document describes the database relationships and interactions for the `dbBuildingHandler` class. The building handler manages all aspects of building objects in Magicbane, including creation, modification, deletion, and various properties like health, protection state, and ownership.
## Handler Class
**File:** `src/engine/db/handlers/dbBuildingHandler.java`
**Class:** `dbBuildingHandler`
**Extends:** `dbHandlerBase`
## Database Tables
### Main Building Table
- **Table Name:** `obj_building`
- **Description:** Core building information including location, mesh, health, and ownership details
- **Columns:**
- UID (Primary Key)
- parent (Foreign Key to obj_zone)
- ownerUUID (Foreign Key to obj_character)
- name
- meshUUID (Foreign Key to static_building_mesh)
- locX, locY, locZ (Location coordinates)
- meshScale
- currentHP
- protectionState
- currentGold
- rank
- upgradeDate
- blueprintUUID (Foreign Key to static_building_blueprint)
- w, rotY (Rotation data)
- isDeleted
### Related Tables
| Table Name | Description | Relationship |
|------------|-------------|--------------|
| `dyn_building_friendslist` | Stores friends that can access this building | BuildingID → obj_building.UID |
| `dyn_building_condemnedlist` | Stores characters/guilds marked as condemned for this building | BuildingID → obj_building.UID |
| `dyn_building_patrolpoints` | Stores patrol points for building guards | BuildingID → obj_building.UID |
| `dyn_building_regions` | Stores region information for buildings | BuildingID → obj_building.UID |
## Key Queries
### Create Building (Stored Procedure)
```sql
CALL `building_CREATE`(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
```
**File:** `dbBuildingHandler.java`, Line ~38
### Get All Buildings for Zone
```sql
SELECT * FROM `obj_building` WHERE `parent` = ?
```
**File:** `dbBuildingHandler.java`, Line ~91
### Get Building by UUID
```sql
SELECT * FROM `obj_building` WHERE `UID` = ?
```
**File:** `dbBuildingHandler.java`, Line ~110
### Get Building by Mesh
```sql
SELECT * FROM `obj_building` WHERE `meshUUID` = ?
```
**File:** `dbBuildingHandler.java`, Line ~135
## Relationships
1. **Building to Zone:** Many-to-one relationship through `obj_building.parent` field
2. **Building to Owner:** Many-to-one relationship through `obj_building.ownerUUID` field (references obj_character.UID)
3. **Building to Blueprint:** Many-to-one relationship through `obj_building.blueprintUUID` field (references static_building_blueprint.Rank0UUID)
4. **Building to Mesh:** Many-to-one relationship through `obj_building.meshUUID` field (references static_building_mesh.UID)
5. **Building to Friends List:** One-to-many relationship through `dyn_building_friendslist.BuildingID`
6. **Building to Condemned List:** One-to-many relationship through `dyn_building_condemnedlist.BuildingID`
7. **Building to Patrol Points:** One-to-many relationship through `dyn_building_patrolpoints.BuildingID`
8. **Building to Regions:** One-to-many relationship through `dyn_building_regions.BuildingID`
## Java Field to Database Column Mappings
| Java Field | Database Column | Notes |
|------------|-----------------|-------|
| `parent` | `obj_building.parent` | Zone parent ID |
| `ownerUUID` | `obj_building.ownerUUID` | Owner character UID |
| `name` | `obj_building.name` | Building name |
| `meshUUID` | `obj_building.meshUUID` | Mesh identifier |
| `locX` | `obj_building.locX` | X coordinate |
| `locY` | `obj_building.locY` | Y coordinate |
| `locZ` | `obj_building.locZ` | Z coordinate |
| `meshScale` | `obj_building.meshScale` | Scale of mesh |
| `currentHP` | `obj_building.currentHP` | Current health points |
| `protectionState` | `obj_building.protectionState` | Protection state |
| `currentGold` | `obj_building.currentGold` | Current gold amount |
| `rank` | `obj_building.rank` | Building rank |
| `upgradeDate` | `obj_building.upgradeDate` | Upgrade timestamp |
| `blueprintUUID` | `obj_building.blueprintUUID` | Blueprint identifier |
| `w` | `obj_building.w` | Rotation data |
| `rotY` | `obj_building.rotY` | Y rotation angle |
@@ -1,61 +0,0 @@
# Building Location Handler Documentation
## Overview
This document describes the database relationships and interactions for the `dbBuildingLocationHandler` class. This handler manages building location data, specifically loading locations for buildings based on type and slot.
## Handler Class
**File:** `src/engine/db/handlers/dbBuildingLocationHandler.java`
**Class:** `dbBuildingLocationHandler`
**Extends:** `dbHandlerBase`
## Database Tables
### Main Table
- **Table Name:** `static_building_location`
- **Description:** Stores location data for building components including position and rotation information
- **Columns:**
- ID (Primary Key)
- BuildingID
- type
- slot
- unknown
- locX
- locY
- locZ
- w
- rotX
- rotY
- rotZ
## Key Queries
### Load Building Locations
```sql
SELECT `ID`, `BuildingID`, `type`, `slot`, `unknown`, `locX`, `locY`, `locZ`, `w`, `rotX`, `rotY`, `rotZ`
FROM static_building_location
WHERE type = 6 OR type = 8
GROUP BY buildingID, slot
ORDER BY buildingID, slot ASC;
```
**File:** `dbBuildingLocationHandler.java`, Line ~17
## Relationships
1. **Building Location to Building:** Many-to-one relationship via `BuildingID` field referencing `obj_building.UID`
## Java Field to Database Column Mappings
| Java Field | Database Column | Notes |
|------------|-----------------|-------|
| `id` | `static_building_location.ID` | Unique identifier |
| `buildingID` | `static_building_location.BuildingID` | Reference to building |
| `type` | `static_building_location.type` | Location type |
| `slot` | `static_building_location.slot` | Slot number |
| `unknown` | `static_building_location.unknown` | Unknown field |
| `locX` | `static_building_location.locX` | X coordinate |
| `locY` | `static_building_location.locY` | Y coordinate |
| `locZ` | `static_building_location.locZ` | Z coordinate |
| `w` | `static_building_location.w` | W rotation value |
| `rotX` | `static_building_location.rotX` | X rotation |
| `rotY` | `static_building_location.rotY` | Y rotation |
| `rotZ` | `static_building_location.rotZ` | Z rotation |
@@ -1,77 +0,0 @@
# dbCSSessionHandler Documentation
## Overview
This document describes the database relationships and interactions for the `dbCSSessionHandler` class. The session handler manages user login sessions, tracking account activity, character associations, and session-based authentication.
## Handler Class
**File:** `src/engine/db/handlers/dbCSSessionHandler.java`
**Class:** `dbCSSessionHandler`
**Extends:** `dbHandlerBase`
## Database Tables
### Main Session Table
- **Table Name:** `dyn_cs_session`
- **Description:** Stores information about active and inactive user sessions, including account associations and character details
- **Columns:**
- UID (Primary Key)
- accountID
- characterID
- sessionKey
- lastLoginDate
- lastLogoutDate
### Related Tables
| Table Name | Description | Relationship |
|------------|-------------|--------------|
| `obj_account` | Accounts associated with sessions | accountID → obj_account.UID |
| `obj_character` | Characters associated with sessions | characterID → obj_character.UID |
## Key Queries
### Create Session
```sql
INSERT INTO `dyn_cs_session` (`accountID`, `characterID`, `sessionKey`, `lastLoginDate`) VALUES(?,?,?,?)
```
**File:** `dbCSSessionHandler.java`, Line ~35
### Load Session by Account
```sql
SELECT * FROM `dyn_cs_session` WHERE `accountID` = ?
```
**File:** `dbCSSessionHandler.java`, Line ~50
### Load Session by Character
```sql
SELECT * FROM `dyn_cs_session` WHERE `characterID` = ?
```
**File:** `dbCSSessionHandler.java`, Line ~65
### Update Session Last Login
```sql
UPDATE `dyn_cs_session` SET `lastLoginDate`=? WHERE `UID`=?
```
**File:** `dbCSSessionHandler.java`, Line ~80
### Update Session Last Logout
```sql
UPDATE `dyn_cs_session` SET `lastLogoutDate`=? WHERE `UID`=?
```
**File:** `dbCSSessionHandler.java`, Line ~95
## Relationships
1. **Session to Account:** Many-to-one relationship via accountID field referencing obj_account.UID
2. **Session to Character:** Many-to-one relationship via characterID field referencing obj_character.UID
3. **Session to Login History:** One-to-many relationship via session UID (via dyn_login_history table)
## Java Field to Database Column Mappings
| Java Field | Database Column | Notes |
|------------|-----------------|-------|
| `accountID` | `dyn_cs_session.accountID` | Account UID associated with this session |
| `characterID` | `dyn_cs_session.characterID` | Character UID associated with this session |
| `sessionKey` | `dyn_cs_session.sessionKey` | Session identifier for authentication |
| `lastLoginDate` | `dyn_cs_session.lastLoginDate` | Timestamp of last login |
| `lastLogoutDate` | `dyn_cs_session.lastLogoutDate` | Timestamp of last logout |
@@ -1,71 +0,0 @@
# Character Power Handler Documentation
## Overview
This document describes the database relationships and interactions for the `dbCharacterPowerHandler` class. This handler manages character power data, including adding, deleting, retrieving, and updating character powers.
## Handler Class
**File:** `src/engine/db/handlers/dbCharacterPowerHandler.java`
**Class:** `dbCharacterPowerHandler`
**Extends:** `dbHandlerBase`
## Database Tables
### Main Table
- **Table Name:** `dyn_character_power`
- **Description:** Stores dynamic power information for characters including power token, character ID, and training levels
- **Columns:**
- UID (Primary Key)
- CharacterID
- powersBaseToken
- trains
## Key Queries
### Add Character Power
```sql
INSERT INTO `dyn_character_power` (`CharacterID`, `powersBaseToken`, `trains`) VALUES (?, ?, ?);
```
**File:** `dbCharacterPowerHandler.java`, Line ~20
### Delete Character Power
```sql
DELETE FROM `dyn_character_power` WHERE `UID` = ?
```
**File:** `dbCharacterPowerHandler.java`, Line ~41
### Get Character Power by ID
```sql
SELECT * FROM `dyn_character_power` WHERE `UID` = ?
```
**File:** `dbCharacterPowerHandler.java`, Line ~57
### Get All Powers for Character
```sql
SELECT * FROM `dyn_character_power` WHERE CharacterID = ?
```
**File:** `dbCharacterPowerHandler.java`, Line ~76
### Update Trains
```sql
UPDATE `dyn_character_power` SET `trains`=? WHERE `UID`=?
```
**File:** `dbCharacterPowerHandler.java`, Line ~98
### Update Database
```sql
UPDATE `dyn_character_power` SET `PowersBaseToken`=?, `CharacterID`=?, `trains`=? WHERE `UID`=?
```
**File:** `dbCharacterPowerHandler.java`, Line ~115
## Relationships
1. **Character Power to Character:** Many-to-one relationship via `CharacterID` field referencing `obj_character.UID`
2. **Character Power to Power Base:** Many-to-one relationship via `powersBaseToken` field referencing `static_powers_base.token`
## Java Field to Database Column Mappings
| Java Field | Database Column | Notes |
|------------|-----------------|-------|
| `characterID` | `dyn_character_power.CharacterID` | Reference to character |
| `powerToken` | `dyn_character_power.powersBaseToken` | Reference to power base |
| `trains` | `dyn_character_power.trains` | Training level |
@@ -1,63 +0,0 @@
# Character Rune Handler Documentation
## Overview
This document describes the database relationships and interactions for the `dbCharacterRuneHandler` class. This handler manages character rune data, including adding, retrieving, deleting, and updating character runes.
## Handler Class
**File:** `src/engine/db/handlers/dbCharacterRuneHandler.java`
**Class:** `dbCharacterRuneHandler`
**Extends:** `dbHandlerBase`
## Database Tables
### Main Table
- **Table Name:** `dyn_character_rune`
- **Description:** Stores dynamic rune information for characters including character ID and rune base ID
- **Columns:**
- UID (Primary Key)
- CharacterID
- RuneBaseID
## Key Queries
### Add Character Rune
```sql
INSERT INTO `dyn_character_rune` (`CharacterID`, `RuneBaseID`) VALUES (?, ?);
```
**File:** `dbCharacterRuneHandler.java`, Line ~20
### Get Character Rune by ID
```sql
SELECT * FROM `dyn_character_rune` WHERE `UID`=?
```
**File:** `dbCharacterRuneHandler.java`, Line ~43
### Delete Character Rune
```sql
DELETE FROM `dyn_character_rune` WHERE `UID`=?;
```
**File:** `dbCharacterRuneHandler.java`, Line ~61
### Get All Runes for Character
```sql
SELECT * FROM `dyn_character_rune` WHERE `CharacterID` = ?
```
**File:** `dbCharacterRuneHandler.java`, Line ~74
### Update Database
```sql
UPDATE `dyn_character_rune` SET `CharacterID`=?, `RuneBaseID`=? WHERE `UID` = ?
```
**File:** `dbCharacterRuneHandler.java`, Line ~91
## Relationships
1. **Character Rune to Character:** Many-to-one relationship via `CharacterID` field referencing `obj_character.UID`
2. **Character Rune to Rune Base:** Many-to-one relationship via `RuneBaseID` field referencing `static_rune_base.ID`
## Java Field to Database Column Mappings
| Java Field | Database Column | Notes |
|------------|-----------------|-------|
| `playerID` | `dyn_character_rune.CharacterID` | Reference to character |
| `runeBaseID` | `dyn_character_rune.RuneBaseID` | Reference to rune base |
@@ -1,71 +0,0 @@
# Character Skill Handler Documentation
## Overview
This document describes the database relationships and interactions for the `dbCharacterSkillHandler` class. This handler manages character skill data, including adding, deleting, retrieving, and updating character skills.
## Handler Class
**File:** `src/engine/db/handlers/dbCharacterSkillHandler.java`
**Class:** `dbCharacterSkillHandler`
**Extends:** `dbHandlerBase`
## Database Tables
### Main Table
- **Table Name:** `dyn_character_skill`
- **Description:** Stores dynamic skill information for characters including skill base ID, character ID, and training levels
- **Columns:**
- UID (Primary Key)
- CharacterID
- skillsBaseID
- trains
## Key Queries
### Add Skill
```sql
INSERT INTO `dyn_character_skill` (`CharacterID`, `skillsBaseID`, `trains`) VALUES (?, ?, ?);
```
**File:** `dbCharacterSkillHandler.java`, Line ~20
### Delete Skill
```sql
DELETE FROM `dyn_character_skill` WHERE `UID` = ?
```
**File:** `dbCharacterSkillHandler.java`, Line ~43
### Get Skill by ID
```sql
SELECT * FROM `dyn_character_skill` WHERE `UID` = ?
```
**File:** `dbCharacterSkillHandler.java`, Line ~59
### Get All Skills for Character
```sql
SELECT * FROM `dyn_character_skill` WHERE `CharacterID` = ?
```
**File:** `dbCharacterSkillHandler.java`, Line ~80
### Update Trains
```sql
UPDATE `dyn_character_skill` SET `trains`=? WHERE `UID` = ?
```
**File:** `dbCharacterSkillHandler.java`, Line ~104
### Update Database
```sql
UPDATE `dyn_character_skill` SET `skillsBaseID`=?, `CharacterID`=?, `trains`=? WHERE `UID`=?
```
**File:** `dbCharacterSkillHandler.java`, Line ~123
## Relationships
1. **Character Skill to Character:** Many-to-one relationship via `CharacterID` field referencing `obj_character.UID`
2. **Character Skill to Skill Base:** Many-to-one relationship via `skillsBaseID` field referencing `static_skills_base.ID`
## Java Field to Database Column Mappings
| Java Field | Database Column | Notes |
|------------|-----------------|-------|
| `characterID` | `dyn_character_skill.CharacterID` | Reference to character |
| `skillBaseID` | `dyn_character_skill.skillsBaseID` | Reference to skill base |
| `trains` | `dyn_character_skill.trains` | Training level |
@@ -1,97 +0,0 @@
# City Handler Documentation
## Overview
This document describes the database relationships and interactions for the `dbCityHandler` class. The city handler manages city-related data including city creation, zone information, and building structures within the Magicbane emulator system.
## Handler Class
**File:** `src/engine/db/handlers/dbCityHandler.java`
**Class:** `dbCityHandler`
**Extends:** `dbHandlerBase`
## Database Tables
### Main City Table
- **Table Name:** `obj_city`
- **Description:** Core city information including name, motto, and metadata
- **Columns:**
- UID (Primary Key)
- name
- motto
- treeOfLifeUUID
- established
- realmTaxDate
- population
- siegesWithstood
- isNpc
- isCapital
- isNoobIsle
- bindX
- bindZ
- bindRadius
- radiusType
- forceRename
- open
- hash
### Related Tables
| Table Name | Description | Relationship |
|------------|-------------|--------------|
| `obj_zone` | Zone information within cities | CityID → obj_city.UID |
| `obj_building` | Building information within zones | ZoneID → obj_zone.UID |
| `object` | Base object table that links to obj_city | UID → obj_city.UID |
## Key Queries
### Load City Data
```sql
SELECT * FROM `object` o
JOIN `obj_city` c ON o.`UID` = c.`UID`
WHERE o.`type` = 'city' AND o.`parent` = ?
```
**File:** `dbCityHandler.java`, Line ~45
### Load Zones for City
```sql
SELECT * FROM `object` o
JOIN `obj_zone` z ON o.`UID` = z.`UID`
WHERE o.`type` = 'zone' AND o.`parent` = ?
```
**File:** `dbCityHandler.java`, Line ~60
### Load Buildings for Zone
```sql
SELECT * FROM `object` o
JOIN `obj_building` b ON o.`UID` = b.`UID`
WHERE o.`type` = 'building' AND o.`parent` = ?
```
**File:** `dbCityHandler.java`, Line ~75
### Create New City
```sql
CALL `city_CREATE`(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
```
**File:** `dbCityHandler.java`, Line ~90
## Relationships
1. **City to Object:** One-to-one (City is a type of object)
2. **Zone to City:** Many-to-one (Multiple zones per city)
3. **Building to Zone:** Many-to-one (Multiple buildings per zone)
4. **City to Zones:** One-to-many (via `obj_zone.parent` field)
5. **Zone to Buildings:** One-to-many (via `obj_building.parent` field)
## Java Field to Database Column Mappings
| Java Field | Database Column | Notes |
|------------|-----------------|-------|
| `name` | `obj_city.name` | City name |
| `motto` | `obj_city.motto` | City motto |
| `established` | `obj_city.established` | Date established |
| `population` | `obj_city.population` | Population count |
| `isNpc` | `obj_city.isNpc` | NPC flag |
| `bindX` | `obj_city.bindX` | X binding coordinate |
| `bindZ` | `obj_city.bindZ` | Z binding coordinate |
| `bindRadius` | `obj_city.bindRadius` | Binding radius |
| `isCapital` | `obj_city.isCapital` | Capital city flag |
| `isNoobIsle` | `obj_city.isNoobIsle` | Noob island flag |
@@ -1,82 +0,0 @@
# Contract Handler Documentation
## Overview
This document describes the database relationships and interactions for the `dbContractHandler` class. This handler manages contract data for NPCs, including loading contracts, their inventory sets, and sell lists.
## Handler Class
**File:** `src/engine/db/handlers/dbContractHandler.java`
**Class:** `dbContractHandler`
**Extends:** `dbHandlerBase`
## Database Tables
### Main Table
- **Table Name:** `static_npc_contract`
- **Description:** Stores static contract information for NPCs including contract ID, name, mob base ID, class ID, vendor dialog, and icon ID
- **Columns:**
- ID (Primary Key)
- contractID
- name
- mobbaseID
- classID
- vendorDialog
- iconID
- allowedBuildingTypeID
### Related Tables
| Table Name | Description | Relationship |
|------------|-------------|--------------|
| `static_npc_inventoryset` | Stores inventory items for contracts | inventorySet → static_npc_contract.inventorySet |
| `static_npc_contract_selltype` | Stores sell type information for contracts | contractID → static_npc_contract.ID |
## Key Queries
### Get Contract by ID
```sql
SELECT * FROM `static_npc_contract` WHERE `ID` = ?
```
**File:** `dbContractHandler.java`, Line ~17
### Load Contract Inventory
```sql
SELECT * FROM `static_npc_inventoryset` WHERE `inventorySet` = ?;
```
**File:** `dbContractHandler.java`, Line ~43
### Load Sell List for Contract
```sql
SELECT * FROM `static_npc_contract_selltype` WHERE `contractID` = ?;
```
**File:** `dbContractHandler.java`, Line ~65
### Update Allowed Buildings
```sql
UPDATE `static_npc_contract` SET `allowedBuildingTypeID`=? WHERE `contractID`=?
```
**File:** `dbContractHandler.java`, Line ~87
### Update Database
```sql
UPDATE `static_npc_contract` SET `contractID`=?, `name`=?, `mobbaseID`=?, `classID`=?, vendorDialog=?, iconID=?, allowedBuildingTypeID=? WHERE `ID`=?
```
**File:** `dbContractHandler.java`, Line ~100
## Relationships
1. **Contract to Mob Base:** Many-to-one relationship via `mobbaseID` field referencing `obj_mobbase.ID`
2. **Contract to Vendor Dialog:** Many-to-one relationship via `vendorDialog` field referencing `obj_vendor_dialog.UID`
3. **Contract to Inventory Set:** One-to-many relationship via `inventorySet` field
4. **Contract to Sell Types:** One-to-many relationship via `contractID` field
## Java Field to Database Column Mappings
| Java Field | Database Column | Notes |
|------------|-----------------|-------|
| `contractID` | `static_npc_contract.contractID` | Contract identifier |
| `name` | `static_npc_contract.name` | Contract name |
| `mobbaseID` | `static_npc_contract.mobbaseID` | Reference to mob base |
| `classID` | `static_npc_contract.classID` | Class identifier |
| `vendorDialogID` | `static_npc_contract.vendorDialog` | Reference to vendor dialog |
| `iconID` | `static_npc_contract.iconID` | Icon identifier |
| `allowedBuildings` | `static_npc_contract.allowedBuildingTypeID` | Allowed building types |
@@ -1,57 +0,0 @@
# dbEffectsBaseHandler Documentation
## Overview
This document describes the database relationships and interactions for the `dbEffectsBaseHandler` class. This handler manages static data about power effects in Magicbane, including their base properties and modifiers.
## Handler Class
**File:** `src/engine/db/handlers/dbEffectsBaseHandler.java`
**Class:** `dbEffectsBaseHandler`
**Extends:** `dbHandlerBase`
## Database Tables
### Main Effect Base Table
- **Table Name:** `static_power_effectbase`
- **Description:** Core table containing base information about power effects, including names and types
- **Columns:**
- IDString (Primary Key)
- name
- description
- effectType
### Modifier Tables
| Table Name | Description | Relationship |
|------------|-------------|--------------|
| `static_power_effectmod` | Stores modifier properties for effects | EffectBaseID → static_power_effectbase.IDString |
## Key Queries
### Get All Effects Base
```sql
SELECT * FROM static_power_effectbase ORDER BY `IDString` DESC
```
**File:** `dbEffectsBaseHandler.java`, Line ~25
### Get Effect Modifiers
```sql
SELECT * FROM static_power_effectmod WHERE `effectBaseID` = ?
```
**File:** `dbEffectsBaseHandler.java`, Line ~40
## Relationships
1. **Effect Base to Modifiers:** One-to-many relationship via effectBaseID field in static_power_effectmod referencing static_power_effectbase.IDString
2. **Effect Base to Resources Cost:** Many-to-many relationship through static_power_effectcost table
## Java Field to Database Column Mappings
| Java Field | Database Column | Notes |
|------------|-----------------|-------|
| `IDString` | `static_power_effectbase.IDString` | Unique identifier for the effect |
| `name` | `static_power_effectbase.name` | Display name of the effect |
| `description` | `static_power_effectbase.description` | Description of the effect |
| `effectType` | `static_power_effectbase.effectType` | Type of effect |
| `modType` | `static_power_effectmod.modType` | Modifier type for effect modifiers |
| `modValue` | `static_power_effectmod.modValue` | Value of the modifier |
| `other fields...` | Various columns | Other properties related to effects and modifiers |
@@ -1,40 +0,0 @@
# dbEffectsResourceCostHandler Documentation
## Overview
This document describes the database relationships and interactions for the `dbEffectsResourceCostHandler` class. This handler manages the resource costs associated with power effects, including mana, health, and other resource types required to use specific powers.
## Handler Class
**File:** `src/engine/db/handlers/dbEffectsResourceCostHandler.java`
**Class:** `dbEffectsResourceCostHandler`
**Extends:** `dbHandlerBase`
## Database Tables
### Main Resource Cost Table
- **Table Name:** `static_power_effectcost`
- **Description:** Stores resource cost information for power effects, defining what resources are required to use specific effects
- **Columns:**
- IDString (Primary Key)
- resourceType
- resourceAmount
## Key Queries
### Get Resource Cost by Effect ID
```sql
SELECT * FROM static_power_effectcost WHERE `IDString` = ?
```
**File:** `dbEffectsResourceCostHandler.java`, Line ~25
## Relationships
1. **Effect Cost to Effect Base:** Many-to-one relationship via IDString field referencing static_power_effectbase.IDString
## Java Field to Database Column Mappings
| Java Field | Database Column | Notes |
|------------|-----------------|-------|
| `idString` | `static_power_effectcost.IDString` | Unique identifier linking to effect base |
| `resourceType` | `static_power_effectcost.resourceType` | Type of resource required (mana, health, etc.) |
| `resourceAmount` | `static_power_effectcost.resourceAmount` | Amount of resource required |
| `other fields...` | Various columns | Other properties related to resource costs |
@@ -1,46 +0,0 @@
# dbEnchantmentHandler Documentation
## Overview
This document describes the database relationships and interactions for the `dbEnchantmentHandler` class. This handler manages item enchantments, which are special properties applied to items that modify their attributes or provide additional abilities.
## Handler Class
**File:** `src/engine/db/handlers/dbEnchantmentHandler.java`
**Class:** `dbEnchantmentHandler`
**Extends:** `dbHandlerBase`
## Database Tables
### Main Enchantment Table
- **Table Name:** `dyn_item_enchantment`
- **Description:** Stores enchantment information for items, including the type of power action and rank level
- **Columns:**
- itemID (Primary Key)
- powerAction
- rank
## Key Queries
### Get Enchantments by Item ID
```sql
SELECT * FROM dyn_item_enchantment WHERE `itemID` = ?
```
**File:** `dbEnchantmentHandler.java`, Line ~25
### Save Enchantment
```sql
INSERT INTO `dyn_item_enchantment` (`itemID`, `powerAction`, `rank`) VALUES(?,?,?)
```
**File:** `dbEnchantmentHandler.java`, Line ~40
## Relationships
1. **Enchantment to Item:** Many-to-one relationship via itemID field referencing obj_item.UID
## Java Field to Database Column Mappings
| Java Field | Database Column | Notes |
|------------|-----------------|-------|
| `itemID` | `dyn_item_enchantment.itemID` | Unique identifier for the item |
| `powerAction` | `dyn_item_enchantment.powerAction` | The power action associated with the enchantment |
| `rank` | `dyn_item_enchantment.rank` | The rank or strength level of the enchantment |
| `other fields...` | Various columns | Other properties related to item enchantments |
@@ -1,118 +0,0 @@
# Guild Handler Documentation
## Overview
This document describes the database relationships and interactions for the `dbGuildHandler` class. The guild system in Magicbane is complex, involving multiple related tables for managing guilds, their history, alliances, enemies, and member management.
## Handler Class
**File:** `src/engine/db/handlers/dbGuildHandler.java`
**Class:** `dbGuildHandler`
**Extends:** `dbHandlerBase`
## Database Tables
### Main Guild Table
- **Table Name:** `obj_guild`
- **Description:** Core guild information including name, leader, tags, charter, and ownership details
- **Columns:**
- UID (Primary Key)
- name
- leaderUID
- backgroundColor01
- backgroundColor02
- symbolColor
- backgroundDesign
- symbol
- charter
- leadershipType
- motto
- ownedCity
### Related Tables
| Table Name | Description | Relationship |
|------------|-------------|--------------|
| `dyn_character_guildhistory` | Tracks character's guild membership history | CharacterID → obj_character.UID, GuildID → obj_guild.UID |
| `dyn_guild_allianceenemylist` | Stores alliance/enemy relationships between guilds | GuildID → obj_guild.UID, OtherGuildID → obj_guild.UID |
| `dyn_guild_banishlist` | Lists characters banned from guilds | GuildID → obj_guild.UID, CharacterID → obj_character.UID |
| `dyn_guild_characterkoslist` | Stores characters marked as KOS (Kill on Sight) for guilds | GuildID → obj_guild.UID, KOSCharacterID → obj_character.UID |
| `dyn_guild_guildkoslist` | Stores guilds marked as KOS for other guilds | GuildID → obj_guild.UID, KOSGuildID → obj_guild.UID |
| `object` | Base object table that links to obj_guild | UID → obj_guild.UID |
## Key Queries
### Get Guild by ID
```sql
SELECT `obj_guild`.*, `object`.`parent`
FROM `obj_guild`
INNER JOIN `object` ON `object`.`UID` = `obj_guild`.`UID`
WHERE `object`.`UID`=?
```
**File:** `dbGuildHandler.java`, Line ~450
### Get Guild History of Player
```sql
SELECT g.* FROM `obj_guild` g, `dyn_character_guildhistory` l
WHERE g.`UID` = l.`GuildID` && l.`CharacterID` = ?
```
**File:** `dbGuildHandler.java`, Line ~200
### Get Guild Allies
```sql
SELECT g.* FROM `obj_guild` g, `dyn_guild_allianceenemylist` l
WHERE l.isAlliance = 1 && l.OtherGuildID = g.UID && l.GuildID=?
```
**File:** `dbGuildHandler.java`, Line ~230
### Get Guild Enemies
```sql
SELECT g.* FROM `obj_guild` g, `dyn_guild_allianceenemylist` l
WHERE l.isAlliance = 0 && l.OtherGuildID = g.UID && l.GuildID=?
```
**File:** `dbGuildHandler.java`, Line ~253
### Get Guild KOS Characters
```sql
SELECT c.* FROM `obj_character` c, `dyn_guild_characterkoslist` l
WHERE c.`char_isActive` = 1 && l.`KOSCharacterID` = c.`UID` && l.`GuildID`=?
```
**File:** `dbGuildHandler.java`, Line ~273
### Get Guild KOS Guilds
```sql
SELECT g.* FROM `obj_guild` g, `dyn_guild_guildkoslist` l
WHERE l.KOSGuildID = g.UID && l.GuildID = ?
```
**File:** `dbGuildHandler.java`, Line ~295
### Save Guild (Stored Procedure)
```sql
CALL `guild_CREATE`(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
```
**File:** `dbGuildHandler.java`, Line ~483
## Relationships
1. **Guild to Character:** Many-to-many through `obj_character.guildUID` field
2. **Guild to Guild History:** One-to-many (via `dyn_character_guildhistory.GuildID`)
3. **Guild to Alliances/Enemies:** Many-to-many (via `dyn_guild_allianceenemylist`)
4. **Guild to Bans List:** One-to-many (via `dyn_guild_banishlist.GuildID`)
5. **Guild to KOS Characters:** One-to-many (via `dyn_guild_characterkoslist.GuildID`)
6. **Guild to KOS Guilds:** One-to-many (via `dyn_guild_guildkoslist.GuildID`)
7. **Guild to Sub-Guilds:** Parent-child relationship via `object.parent` field
## Java Field to Database Column Mappings
| Java Field | Database Column | Notes |
|------------|-----------------|-------|
| `name` | `obj_guild.name` | Guild name |
| `leaderUID` | `obj_guild.leaderUID` | Leader character UID |
| `backgroundColor01` | `obj_guild.backgroundColor01` | First background color |
| `backgroundColor02` | `obj_guild.backgroundColor02` | Second background color |
| `symbolColor` | `obj_guild.symbolColor` | Symbol color |
| `backgroundDesign` | `obj_guild.backgroundDesign` | Background design ID |
| `symbol` | `obj_guild.symbol` | Guild symbol ID |
| `charter` | `obj_guild.charter` | Charter information |
| `leadershipType` | `obj_guild.leadershipType` | Leadership type |
| `motto` | `obj_guild.motto` | Guild motto |
| `ownedCity` | `obj_guild.ownedCity` | Owned city ID |
@@ -1,42 +0,0 @@
# dbHeightMapHandler Documentation
## Overview
This document describes the database relationships and interactions for the `dbHeightMapHandler` class. This handler manages height map data for zones, which is used to determine terrain elevation in the game world.
## Handler Class
**File:** `src/engine/db/handlers/dbHeightMapHandler.java`
**Class:** `dbHeightMapHandler`
**Extends:** `dbHandlerBase`
## Database Tables
### Main Height Map Table
- **Table Name:** `static_zone_heightmap`
- **Description:** Stores raw height map data for zones, representing terrain elevation information
- **Columns:**
- zoneLoadID (Primary Key)
- heightMapData
- width
- height
## Key Queries
### Get Height Map by Zone Load ID
```sql
SELECT * FROM static_zone_heightmap WHERE `zoneLoadID` = ?
```
**File:** `dbHeightMapHandler.java`, Line ~25
## Relationships
1. **Height Map to Zone:** Many-to-one relationship via zoneLoadID field referencing static_zone_load.zoneLoadID
## Java Field to Database Column Mappings
| Java Field | Database Column | Notes |
|------------|-----------------|-------|
| `zoneLoadID` | `static_zone_heightmap.zoneLoadID` | Unique identifier for the zone |
| `heightMapData` | `static_zone_heightmap.heightMapData` | Raw height map data for terrain elevation |
| `width` | `static_zone_size.width` | Width dimension of the zone |
| `height` | `static_zone_size.height` | Height dimension of the zone |
| `other fields...` | Various columns | Other properties related to height maps |
@@ -1,71 +0,0 @@
# dbItemBaseHandler Documentation
## Overview
This document describes the database relationships and interactions for the `dbItemBaseHandler` class. This handler manages static item base data, including item properties, stats, and appearance information.
## Handler Class
**File:** `src/engine/db/handlers/dbItemBaseHandler.java`
**Class:** `dbItemBaseHandler`
**Extends:** `dbHandlerBase`
## Database Tables
### Main Item Base Table
- **Table Name:** `static_itembase`
- **Description:** Core table storing base properties of items, including names, descriptions, and appearance settings
- **Columns:**
- UID (Primary Key)
- name
- description
- itemClass
- icon
- mesh
### Related Tables
| Table Name | Description | Relationship |
|------------|-------------|--------------|
| `static_item_bakedinstat` | Stores stat information for items | ItemBaseID → static_itembase.UID |
| `static_itembase_animations` | Stores animation settings for items | ItemBaseID → static_itembase.UID |
## Key Queries
### Get Item Base by UID
```sql
SELECT * FROM static_itembase WHERE `UID` = ?
```
**File:** `dbItemBaseHandler.java`, Line ~25
### Get Item Stats
```sql
SELECT * FROM static_item_bakedinstat WHERE `itemBaseID` = ?
```
**File:** `dbItemBaseHandler.java`, Line ~40
### Get Item Animations
```sql
SELECT * FROM static_itembase_animations WHERE `itemBaseID` = ?
```
**File:** `dbItemBaseHandler.java`, Line ~55
## Relationships
1. **Item Base to Stats:** One-to-many relationship via itemBaseID field in static_item_bakedinstat referencing static_itembase.UID
2. **Item Base to Animations:** One-to-many relationship via itemBaseID field in static_itembase_animations referencing static_itembase.UID
## Java Field to Database Column Mappings
| Java Field | Database Column | Notes |
|------------|-----------------|-------|
| `UID` | `static_itembase.UID` | Unique identifier for the item |
| `name` | `static_itembase.name` | Name of the item |
| `description` | `static_itembase.description` | Description of the item |
| `itemClass` | `static_itembase.itemClass` | Class of the item |
| `icon` | `static_itembase.icon` | Icon identifier for the item |
| `mesh` | `static_itembase.mesh` | Mesh identifier for the item |
| `fromUse` | `static_item_bakedinstat.fromUse` | Flag indicating if stat is from use |
| `animation` | `static_itembase_animations.animation` | Animation associated with the item |
| `rightHand` | `static_itembase_animations.rightHand` | Flag indicating right hand animation |
| `runeSet` | `static_npc_runeSet.runeSet` | NPC rune set identifier |
| `runeBase` | `static_npc_runeSet.runeBase` | Base rune identifier |
| `other fields...` | Various columns | Other properties related to item base data |
@@ -1,64 +0,0 @@
# dbItemHandler Documentation
## Overview
This document describes the database relationships and interactions for the `dbItemHandler` class. This handler manages item data in players' inventories, including item properties, location information, and ownership details.
## Handler Class
**File:** `src/engine/db/handlers/dbItemHandler.java`
**Class:** `dbItemHandler`
**Extends:** `dbHandlerBase`
## Database Tables
### Main Item Table
- **Table Name:** `obj_item`
- **Description:** Stores information about items in player inventories, including location, ownership, and attributes
- **Columns:**
- UID (Primary Key)
- ownerUID
- containerID
- itemBaseID
- item_container
- equipSlot
- flags
- customName
## Key Queries
### Get Item by UID
```sql
SELECT * FROM obj_item WHERE `UID` = ?
```
**File:** `dbItemHandler.java`, Line ~25
### Save Item
```sql
INSERT INTO `obj_item` (`ownerUID`, `containerID`, `itemBaseID`, `item_container`, `equipSlot`, `flags`, `customName`) VALUES(?,?,?,?,?,?,?)
```
**File:** `dbItemHandler.java`, Line ~40
### Get Items by Owner
```sql
SELECT * FROM obj_item WHERE `ownerUID` = ?
```
**File:** `dbItemHandler.java`, Line ~55
## Relationships
1. **Item to Owner:** Many-to-one relationship via ownerUID field referencing obj_character.UID
2. **Item to Container:** Many-to-one relationship via containerID field referencing obj_container.UID
3. **Item to Item Base:** Many-to-one relationship via itemBaseID field referencing static_itembase.UID
## Java Field to Database Column Mappings
| Java Field | Database Column | Notes |
|------------|-----------------|-------|
| `UID` | `obj_item.UID` | Unique identifier for the item |
| `ownerUID` | `obj_item.ownerUID` | UID of the character who owns this item |
| `containerID` | `obj_item.containerID` | Container ID where item is stored |
| `itemBaseID` | `obj_item.itemBaseID` | UID of the base item definition |
| `item_container` | `obj_item.item_container` | Container type (inventory, equip, bank, etc.) |
| `equipSlot` | `obj_item.equipSlot` | Slot where item is equipped |
| `flags` | `obj_item.flags` | Item flags for special properties |
| `customName` | `obj_item.customName` | Custom name of the item |
| `other fields...` | Various columns | Other item-specific properties |
@@ -1,54 +0,0 @@
# dbKitHandler Documentation
## Overview
This document describes the database relationships and interactions for the `dbKitHandler` class. The kit handler manages static data about game kits, which are predefined sets of items or abilities that players can obtain or use in the game.
## Handler Class
**File:** `src/engine/db/handlers/dbKitHandler.java`
**Class:** `dbKitHandler`
**Extends:** `dbHandlerBase`
## Database Tables
### Main Kit Table
- **Table Name:** `static_rune_validkit`
- **Description:** Stores information about valid kits available in the game, including their properties and restrictions
- **Columns:**
- UID (Primary Key)
- kitName
- description
- raceRestriction
- classRestriction
- itemLimit
- isAvailable
## Key Queries
### GET_ALL_KITS
```sql
SELECT * FROM `static_rune_validkit`
```
**File:** `dbKitHandler.java`, Line ~29
### GET_KIT_BY_NAME
```sql
SELECT * FROM `static_rune_validkit` WHERE `kitName`=?
```
**File:** `dbKitHandler.java`, Line ~45
## Relationships
1. **Kit to Race Restrictions:** Many-to-many relationship through raceRestriction field
2. **Kit to Class Restrictions:** Many-to-many relationship through classRestriction field
3. **Kit to Items:** One-to-many relationship via itemLimit referencing items in the game
## Java Field to Database Column Mappings
| Java Field | Database Column | Notes |
|------------|-----------------|-------|
| `kitName` | `static_rune_validkit.kitName` | Unique name identifier for the kit |
| `description` | `static_rune_validkit.description` | Description of the kit's purpose and benefits |
| `raceRestriction` | `static_rune_validkit.raceRestriction` | Race restriction for the kit |
| `classRestriction` | `static_rune_validkit.classRestriction` | Class restriction for the kit |
| `itemLimit` | `static_rune_validkit.itemLimit` | Maximum number of items allowed in this kit |
| `isAvailable` | `static_rune_validkit.isAvailable` | Boolean flag indicating if kit is currently available |
@@ -1,91 +0,0 @@
# dbLootHandler Documentation
## Overview
This document describes the database relationships and interactions for the `dbLootHandler` class. The loot handler manages static loot tables and item generation data used in the game's loot system, including general tables, item tables, modifier tables, and booty sets.
## Handler Class
**File:** `src/engine/db/handlers/dbLootHandler.java`
**Class:** `dbLootHandler`
**Extends:** `dbHandlerBase`
## Database Tables
### Main Tables
- **Table Name:** `static_loot_gen`
- **Description:** Stores general loot table entries for item generation
- **Columns:**
- genTable (Primary Key)
- itemID
- weight
- minLevel
- maxLevel
### Related Tables
| Table Name | Description | Relationship |
|------------|-------------|--------------|
| `static_loot_item` | Stores item-specific loot table entries | One-to-many with genTable |
| `static_loot_mod` | Stores modifier information for loot items | One-to-many with modTable |
| `static_loot_modtype` | Defines modifier types used in loot systems | One-to-many with modType |
| `static_loot_bootySet` | Stores booty set definitions for loot generation | One-to-many with bootySet |
## Key Queries
### LOAD_GEN_ITEM_TABLES
```sql
SELECT * FROM `static_loot_gen`
```
**File:** `dbLootHandler.java`, Line ~32
### LOAD_ITEM_TABLES
```sql
SELECT * FROM `static_loot_item`
```
**File:** `dbLootHandler.java`, Line ~64
### LOAD_MOD_TABLES
```sql
SELECT * FROM `static_loot_mod`
```
**File:** `dbLootHandler.java`, Line ~96
### LOAD_MOD_TYPE_TABLES
```sql
SELECT * FROM `static_loot_modtype`
```
**File:** `dbLootHandler.java`, Line ~128
### LOAD_BOOTY_TABLES
```sql
SELECT * FROM static_loot_bootySet
```
**File:** `dbLootHandler.java`, Line ~160
### LOAD_ENCHANT_VALUES
```sql
SELECT `IDString`, `minMod` FROM `static_power_effectmod` WHERE `modType` = ?
```
**File:** `dbLootHandler.java`, Line ~192
## Relationships
1. **Loot Generation Tables:** The main loot tables are related through the genTable, itemTable, and modTable fields to form a hierarchical loot generation system
2. **Item Tables:** Connected to general tables through itemID fields for specific item definitions
3. **Modifier Tables:** Linked through modTable and modType fields for modifier definitions
4. **Booty Sets:** Connected through bootySet field for specific booty set configurations
## Java Field to Database Column Mappings
| Java Field | Database Column | Notes |
|------------|-----------------|-------|
| `genTableID` | `static_loot_gen.genTable` | Unique identifier for the loot table |
| `itemID` | `static_loot_gen.itemID` | Item ID for this loot entry |
| `weight` | `static_loot_gen.weight` | Weight for random selection |
| `minLevel` | `static_loot_gen.minLevel` | Minimum level requirement |
| `maxLevel` | `static_loot_gen.maxLevel` | Maximum level requirement |
| `itemTableID` | `static_loot_item.itemTable` | Item table identifier |
| `modTableID` | `static_loot_mod.modTable` | Modifier table identifier |
| `modTypeID` | `static_loot_modtype.modType` | Modifier type identifier |
| `bootySetID` | `static_loot_bootySet.bootySet` | Booty set identifier |
| `IDString` | `static_power_effectmod.IDString` | ID string for effect modifiers |
| `minMod` | `static_power_effectmod.minMod` | Minimum modifier value |
@@ -1,49 +0,0 @@
# dbMenuHandler Documentation
## Overview
This document describes the database relationships and interactions for the `dbMenuHandler` class. The menu handler manages NPC menu options and their associated data, providing functionality to retrieve menu options based on menu IDs.
## Handler Class
**File:** `src/engine/db/handlers/dbMenuHandler.java`
**Class:** `dbMenuHandler`
**Extends:** `dbHandlerBase`
## Database Tables
### Main Table
- **Table Name:** `static_npc_menuoption`
- **Description:** Stores NPC menu option data including text, actions, and relationships to parent menus
- **Columns:**
- menuID (Primary Key)
- optionText
- actionType
- actionValue
- nextMenuID
- conditionType
- conditionValue
## Key Queries
### GET_MENU_OPTIONS
```sql
SELECT * FROM `static_npc_menuoption` WHERE menuID = ?
```
**File:** `dbMenuHandler.java`, Line ~25
## Relationships
1. **Menu Options to Menu:** One-to-many relationship via menuID field referencing parent menu structure
2. **Menu Options to Next Menu:** Many-to-one relationship via nextMenuID field for navigation between menus
3. **Menu Options to Conditions:** Zero-to-many relationship via conditionType and conditionValue fields for dynamic menu display
## Java Field to Database Column Mappings
| Java Field | Database Column | Notes |
|------------|-----------------|-------|
| `menuID` | `static_npc_menuoption.menuID` | Unique identifier for the parent menu |
| `optionText` | `static_npc_menuoption.optionText` | Text displayed for this menu option |
| `actionType` | `static_npc_menuoption.actionType` | Type of action to perform when selected |
| `actionValue` | `static_npc_menuoption.actionValue` | Value associated with the action |
| `nextMenuID` | `static_npc_menuoption.nextMenuID` | ID of the menu to navigate to when selected |
| `conditionType` | `static_npc_menuoption.conditionType` | Type of condition for displaying this option |
| `conditionValue` | `static_npc_menuoption.conditionValue` | Value associated with the condition |
@@ -1,83 +0,0 @@
# dbMineHandler Documentation
## Overview
This document describes the database relationships and interactions for the `dbMineHandler` class. The mine handler manages mine objects and their properties, including ownership, resource types, production types, and flags for various mine behaviors.
## Handler Class
**File:** `src/engine/db/handlers/dbMineHandler.java`
**Class:** `dbMineHandler`
**Extends:** `dbHandlerBase`
## Database Tables
### Main Table
- **Table Name:** `obj_mine`
- **Description:** Stores mine-specific data including owner, resource type, production type, and flags
- **Columns:**
- UID (Primary Key)
- mine_ownerUID
- mine_resource
- mine_type
- flags
### Related Tables
| Table Name | Description | Relationship |
|------------|-------------|--------------|
| `obj_building` | Base building data for mines | One-to-one with obj_mine via UID |
| `object` | Generic object data including parent relationships | One-to-one with obj_mine via UID |
## Key Queries
### GET_MINE
```sql
SELECT `obj_building`.*, `object`.`parent` FROM `object` INNER JOIN `obj_building` ON `obj_building`.`UID` = `object`.`UID` WHERE `object`.`UID` = ?
```
**File:** `dbMineHandler.java`, Line ~25
### GET_ALL_MINES_FOR_SERVER
```sql
SELECT `obj_mine`.*, `object`.`parent` FROM `object` INNER JOIN `obj_mine` ON `obj_mine`.`UID` = `object`.`UID`
```
**File:** `dbMineHandler.java`, Line ~43
### CHANGE_OWNER
```sql
UPDATE `obj_mine` SET `mine_ownerUID`=? WHERE `UID`=?
```
**File:** `dbMineHandler.java`, Line ~57
### CHANGE_RESOURCE
```sql
UPDATE `obj_mine` SET `mine_resource`=? WHERE `UID`=?
```
**File:** `dbMineHandler.java`, Line ~71
### CHANGE_TYPE
```sql
UPDATE `obj_mine` SET `mine_type`=? WHERE `UID`=?
```
**File:** `dbMineHandler.java`, Line ~85
### SET_FLAGS
```sql
UPDATE `obj_mine` SET `flags`=? WHERE `UID`=?
```
**File:** `dbMineHandler.java`, Line ~99
## Relationships
1. **Mine to Building:** One-to-one relationship via UID field (mine data extends building data)
2. **Mine to Owner:** Many-to-one relationship via mine_ownerUID referencing obj_character.UID
3. **Mine to Resource:** Many-to-one relationship via mine_resource field linking to resource definitions
4. **Mine to Parent Object:** One-to-one relationship through object table for parent-child hierarchies
## Java Field to Database Column Mappings
| Java Field | Database Column | Notes |
|------------|-----------------|-------|
| `mine_ownerUID` | `obj_mine.mine_ownerUID` | Character UID of the mine owner |
| `mine_resource` | `obj_mine.mine_resource` | Resource type being mined |
| `mine_type` | `obj_mine.mine_type` | Production type of the mine |
| `flags` | `obj_mine.flags` | Bit flags for mine properties |
| `UID` | `obj_mine.UID` | Unique identifier for the mine object |
@@ -1,66 +0,0 @@
# dbMobBaseHandler Documentation
## Overview
This document describes the database relationships and interactions for the `dbMobBaseHandler` class. This handler manages static data about mob (monster) base properties in Magicbane, including their characteristics, stats, and behaviors.
## Handler Class
**File:** `src/engine/db/handlers/dbMobBaseHandler.java`
**Class:** `dbMobBaseHandler`
**Extends:** `dbHandlerBase`
## Database Tables
### Main Mob Base Table
- **Table Name:** `static_mob_base`
- **Description:** Core table storing base properties of mobs, including names, descriptions, and basic characteristics
- **Columns:**
- UID (Primary Key)
- name
- description
- mobType
- level
- health
### Related Tables
| Table Name | Description | Relationship |
|------------|-------------|--------------|
| `static_mob_stats` | Stores stat information for mobs | MobBaseID → static_mob_base.UID |
| `static_mob_loot` | Stores loot information for mobs | MobBaseID → static_mob_base.UID |
## Key Queries
### Get Mob Base by UID
```sql
SELECT * FROM static_mob_base WHERE `UID` = ?
```
**File:** `dbMobBaseHandler.java`, Line ~25
### Get Mob Stats
```sql
SELECT * FROM static_mob_stats WHERE `mobBaseID` = ?
```
**File:** `dbMobBaseHandler.java`, Line ~40
### Get Mob Loot
```sql
SELECT * FROM static_mob_loot WHERE `mobBaseID` = ?
```
**File:** `dbMobBaseHandler.java`, Line ~55
## Relationships
1. **Mob Base to Stats:** One-to-many relationship via mobBaseID field in static_mob_stats referencing static_mob_base.UID
2. **Mob Base to Loot:** One-to-many relationship via mobBaseID field in static_mob_loot referencing static_mob_base.UID
## Java Field to Database Column Mappings
| Java Field | Database Column | Notes |
|------------|-----------------|-------|
| `UID` | `static_mob_base.UID` | Unique identifier for the mob |
| `name` | `static_mob_base.name` | Name of the mob |
| `description` | `static_mob_base.description` | Description of the mob |
| `mobType` | `static_mob_base.mobType` | Type of mob |
| `level` | `static_mob_base.level` | Level of the mob |
| `health` | `static_mob_base.health` | Base health of the mob |
| `other fields...` | Various columns | Other properties related to mob base data |
@@ -1,70 +0,0 @@
# dbMobHandler Documentation
## Overview
This document describes the database relationships and interactions for the `dbMobHandler` class. This handler manages dynamic mob data in the game world, including their current state, location, and behavior.
## Handler Class
**File:** `src/engine/db/handlers/dbMobHandler.java`
**Class:** `dbMobHandler`
**Extends:** `dbHandlerBase`
## Database Tables
### Main Mob Table
- **Table Name:** `dyn_mob`
- **Description:** Stores current state information for mobs in the game world, including location, health, and status
- **Columns:**
- UID (Primary Key)
- mobBaseID
- zoneUUID
- x
- y
- z
- health
- isAlive
### Related Tables
| Table Name | Description | Relationship |
|------------|-------------|--------------|
| `obj_character` | Characters that may interact with mobs | OwnerUID → obj_character.UID |
## Key Queries
### Get Mob by UID
```sql
SELECT * FROM dyn_mob WHERE `UID` = ?
```
**File:** `dbMobHandler.java`, Line ~25
### Save Mob
```sql
INSERT INTO `dyn_mob` (`mobBaseID`, `zoneUUID`, `x`, `y`, `z`, `health`, `isAlive`) VALUES(?,?,?,?,?,?,?)
```
**File:** `dbMobHandler.java`, Line ~40
### Get Mobs by Zone
```sql
SELECT * FROM dyn_mob WHERE `zoneUUID` = ?
```
**File:** `dbMobHandler.java`, Line ~55
## Relationships
1. **Mob to Mob Base:** Many-to-one relationship via mobBaseID field referencing static_mob_base.UID
2. **Mob to Zone:** Many-to-one relationship via zoneUUID field referencing obj_zone.UID
3. **Mob to Owner:** Many-to-one relationship via ownerUID field referencing obj_character.UID (if applicable)
## Java Field to Database Column Mappings
| Java Field | Database Column | Notes |
|------------|-----------------|-------|
| `UID` | `dyn_mob.UID` | Unique identifier for the mob |
| `mobBaseID` | `dyn_mob.mobBaseID` | UID of the base mob definition |
| `zoneUUID` | `dyn_mob.zoneUUID` | Zone where the mob is located |
| `x` | `dyn_mob.x` | X coordinate of mob position |
| `y` | `dyn_mob.y` | Y coordinate of mob position |
| `z` | `dyn_mob.z` | Z coordinate of mob position |
| `health` | `dyn_mob.health` | Current health of the mob |
| `isAlive` | `dyn_mob.isAlive` | Flag indicating if mob is alive |
| `other fields...` | Various columns | Other properties related to mob state |
@@ -1,71 +0,0 @@
# dbNPCHandler Documentation
## Overview
This document describes the database relationships and interactions for the `dbNPCHandler` class. This handler manages non-player character (NPC) data, including their base properties, current state, and behaviors in the game world.
## Handler Class
**File:** `src/engine/db/handlers/dbNPCHandler.java`
**Class:** `dbNPCHandler`
**Extends:** `dbHandlerBase`
## Database Tables
### Main NPC Table
- **Table Name:** `dyn_npc`
- **Description:** Stores current state information for NPCs, including location, health, and behavior flags
- **Columns:**
- UID (Primary Key)
- npcBaseID
- zoneUUID
- x
- y
- z
- health
- isAlive
- behavior
### Related Tables
| Table Name | Description | Relationship |
|------------|-------------|--------------|
| `static_npc_base` | Base properties of NPCs | npcBaseID → static_npc_base.UID |
## Key Queries
### Get NPC by UID
```sql
SELECT * FROM dyn_npc WHERE `UID` = ?
```
**File:** `dbNPCHandler.java`, Line ~25
### Save NPC
```sql
INSERT INTO `dyn_npc` (`npcBaseID`, `zoneUUID`, `x`, `y`, `z`, `health`, `isAlive`, `behavior`) VALUES(?,?,?,?,?,?,?,?)
```
**File:** `dbNPCHandler.java`, Line ~40
### Get NPCs by Zone
```sql
SELECT * FROM dyn_npc WHERE `zoneUUID` = ?
```
**File:** `dbNPCHandler.java`, Line ~55
## Relationships
1. **NPC to NPC Base:** Many-to-one relationship via npcBaseID field referencing static_npc_base.UID
2. **NPC to Zone:** Many-to-one relationship via zoneUUID field referencing obj_zone.UID
## Java Field to Database Column Mappings
| Java Field | Database Column | Notes |
|------------|-----------------|-------|
| `UID` | `dyn_npc.UID` | Unique identifier for the NPC |
| `npcBaseID` | `dyn_npc.npcBaseID` | UID of the base NPC definition |
| `zoneUUID` | `dyn_npc.zoneUUID` | Zone where the NPC is located |
| `x` | `dyn_npc.x` | X coordinate of NPC position |
| `y` | `dyn_npc.y` | Y coordinate of NPC position |
| `z` | `dyn_npc.z` | Z coordinate of NPC position |
| `health` | `dyn_npc.health` | Current health of the NPC |
| `isAlive` | `dyn_npc.isAlive` | Flag indicating if NPC is alive |
| `behavior` | `dyn_npc.behavior` | Behavior type or state of the NPC |
| `other fields...` | Various columns | Other properties related to NPC state |
@@ -1,72 +0,0 @@
# dbPetitionHandler Documentation
## Overview
This document describes the database relationships and interactions for the `dbPetitionHandler` class. This handler manages player petitions, which are requests or complaints submitted by players to game administrators.
## Handler Class
**File:** `src/engine/db/handlers/dbPetitionHandler.java`
**Class:** `dbPetitionHandler`
**Extends:** `dbHandlerBase`
## Database Tables
### Main Petition Table
- **Table Name:** `dyn_petition`
- **Description:** Stores information about player petitions, including submission details, status, and resolution
- **Columns:**
- UID (Primary Key)
- characterID
- petitionType
- description
- status
- submittedDate
- resolvedDate
### Related Tables
| Table Name | Description | Relationship |
|------------|-------------|--------------|
| `obj_character` | Characters who submitted petitions | characterID → obj_character.UID |
## Key Queries
### Get Petition by UID
```sql
SELECT * FROM dyn_petition WHERE `UID` = ?
```
**File:** `dbPetitionHandler.java`, Line ~25
### Save Petition
```sql
INSERT INTO `dyn_petition` (`characterID`, `petitionType`, `description`, `status`, `submittedDate`) VALUES(?,?,?,?,?)
```
**File:** `dbPetitionHandler.java`, Line ~40
### Get Petitions by Character
```sql
SELECT * FROM dyn_petition WHERE `characterID` = ?
```
**File:** `dbPetitionHandler.java`, Line ~55
### Update Petition Status
```sql
UPDATE `dyn_petition` SET `status`=?, `resolvedDate`=? WHERE `UID`=?
```
**File:** `dbPetitionHandler.java`, Line ~70
## Relationships
1. **Petition to Character:** Many-to-one relationship via characterID field referencing obj_character.UID
## Java Field to Database Column Mappings
| Java Field | Database Column | Notes |
|------------|-----------------|-------|
| `UID` | `dyn_petition.UID` | Unique identifier for the petition |
| `characterID` | `dyn_petition.characterID` | UID of the character who submitted the petition |
| `petitionType` | `dyn_petition.petitionType` | Type or category of the petition |
| `description` | `dyn_petition.description` | Description of the petition |
| `status` | `dyn_petition.status` | Current status of the petition (open, in progress, resolved) |
| `submittedDate` | `dyn_petition.submittedDate` | Timestamp when petition was submitted |
| `resolvedDate` | `dyn_petition.resolvedDate` | Timestamp when petition was resolved |
| `other fields...` | Various columns | Other properties related to petition data |
@@ -1,149 +0,0 @@
# Player Character Handler Documentation
## Overview
This document describes the database relationships and interactions for the `dbPlayerCharacterHandler` class. The player character handler manages all aspects of character data including creation, updates, and retrieval operations within the Magicbane emulator system.
## Handler Class
**File:** `src/engine/db/handlers/dbPlayerCharacterHandler.java`
**Class:** `dbPlayerCharacterHandler`
**Extends:** `dbHandlerBase`
## Database Tables
### Main Character Table
- **Table Name:** `obj_character`
- **Description:** Core character information including attributes, stats, and personal details
- **Columns:**
- UID (Primary Key)
- char_firstname
- char_lastname
- char_isActive
- char_raceID
- char_baseClassID
- char_promotionClassID
- char_strMod
- char_dexMod
- char_conMod
- char_intMod
- char_spiMod
- char_experience
- char_skinColor
- char_hairColor
- char_hairStyle
- char_beardColor
- char_beardStyle
- char_bindBuilding
- guildUID
- guild_isInnerCouncil
- guild_isRecruiter
- guild_isTaxCollector
- guild_isFullMember
- guild_title
- anniversery
- hash
### Related Tables
| Table Name | Description | Relationship |
|------------|-------------|--------------|
| `dyn_character_ignore` | Stores character ignore lists for players | accountUID → obj_account.UID |
| `dyn_character_friends` | Manages friendship relationships between characters | CharacterID → obj_character.UID |
| `dyn_character_guildhistory` | Tracks character's guild membership history | CharacterID → obj_character.UID, GuildID → obj_guild.UID |
| `dyn_character_heraldy` | Stores heraldry information for characters | CharacterID → obj_character.UID |
| `dyn_character_killmap` | Records kill statistics for characters | CharacterID → obj_character.UID |
| `dyn_character_murdermap` | Tracks murder statistics for characters | CharacterID → obj_character.UID |
| `dyn_character_power` | Manages character powers/abilities | CharacterID → obj_character.UID |
| `dyn_character_rune` | Stores rune information for characters | CharacterID → obj_character.UID |
| `dyn_character_skill` | Manages character skills and training | CharacterID → obj_character.UID |
## Key Queries
### Create New Character
```sql
CALL `character_CREATE`(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
```
**File:** `dbPlayerCharacterHandler.java`, Line ~35
### Get Characters for Account
```sql
SELECT `obj_character`.*, `object`.`parent` FROM `object` INNER JOIN `obj_character` ON `obj_character`.`UID` = `object`.`UID` WHERE `object`.`parent`=? && `obj_character`.`char_isActive`='1';
```
**File:** `dbPlayerCharacterHandler.java`, Line ~109
### Get All Active Characters
```sql
SELECT `obj_character`.*, `object`.`parent` FROM `object` INNER JOIN `obj_character` ON `obj_character`.`UID` = `object`.`UID` WHERE `obj_character`.`char_isActive`='1';
```
**File:** `dbPlayerCharacterHandler.java`, Line ~127
### Get Character by UID
```sql
SELECT `obj_character`.*, `object`.`parent` FROM `object` INNER JOIN `obj_character` ON `obj_character`.`UID` = `object`.`UID` WHERE `object`.`UID` = ?
```
**File:** `dbPlayerCharacterHandler.java`, Line ~185
### Get Character by Name
```sql
SELECT `char_firstname` FROM `obj_character` WHERE `char_isActive`=1 && `char_firstname`=?
```
**File:** `dbPlayerCharacterHandler.java`, Line ~203
### Update Character Name
```sql
UPDATE `obj_character` SET `char_firstname`=?, `char_lastname`=? WHERE `char_firstname`=? AND `char_isActive`='1'
```
**File:** `dbPlayerCharacterHandler.java`, Line ~222
### Set Character Ignore List
```sql
INSERT INTO `dyn_character_ignore` (`accountUID`, `ignoringUID`, `characterName`) VALUES (?, ?, ?)
```
**File:** `dbPlayerCharacterHandler.java`, Line ~83
### Get Character Ignore List
```sql
SELECT * FROM `dyn_character_ignore` WHERE `accountUID` = ?
```
**File:** `dbPlayerCharacterHandler.java`, Line ~151
## Relationships
1. **Character to Account:** Many-to-one (via `obj_character.parent` field referencing `obj_account.UID`)
2. **Character to Guild:** Many-to-one (via `obj_character.guildUID` field)
3. **Character to Ignore List:** One-to-many (via `dyn_character_ignore.accountUID`)
4. **Character to Friends List:** One-to-many (via `dyn_character_friends.CharacterID`)
5. **Character to Guild History:** One-to-many (via `dyn_character_guildhistory.CharacterID`)
6. **Character to Heraldry:** One-to-one (via `dyn_character_heraldy.CharacterID`)
7. **Character to Skills:** One-to-many (via `dyn_character_skill.CharacterID`)
8. **Character to Powers:** One-to-many (via `dyn_character_power.CharacterID`)
9. **Character to Runes:** One-to-many (via `dyn_character_rune.CharacterID`)
## Java Field to Database Column Mappings
| Java Field | Database Column | Notes |
|------------|-----------------|-------|
| `firstName` | `obj_character.char_firstname` | Character's first name |
| `lastName` | `obj_character.char_lastname` | Character's last name |
| `isActive` | `obj_character.char_isActive` | Boolean flag for active status |
| `race` | `obj_character.char_raceID` | Race identifier |
| `baseClass` | `obj_character.char_baseClassID` | Base class identifier |
| `promotionClass` | `obj_character.char_promotionClassID` | Promotion class identifier |
| `strMod` | `obj_character.char_strMod` | Strength modifier |
| `dexMod` | `obj_character.char_dexMod` | Dexterity modifier |
| `conMod` | `obj_character.char_conMod` | Constitution modifier |
| `intMod` | `obj_character.char_intMod` | Intelligence modifier |
| `spiMod` | `obj_character.char_spiMod` | Spirit modifier |
| `exp` | `obj_character.char_experience` | Experience points |
| `skinColor` | `obj_character.char_skinColor` | Skin color value |
| `hairColor` | `obj_character.char_hairColor` | Hair color value |
| `hairStyle` | `obj_character.char_hairStyle` | Hair style identifier |
| `beardColor` | `obj_character.char_beardColor` | Beard color value |
| `beardStyle` | `obj_character.char_beardStyle` | Beard style identifier |
| `bindBuilding` | `obj_character.char_bindBuilding` | Bind building UID |
| `guildUID` | `obj_character.guildUID` | Guild identifier |
| `isInnerCouncil` | `obj_character.guild_isInnerCouncil` | Inner council status |
| `isRecruiter` | `obj_character.guild_isRecruiter` | Recruiter status |
| `isTaxCollector` | `obj_character.guild_isTaxCollector` | Tax collector status |
| `isFullMember` | `obj_character.guild_isFullMember` | Full member status |
| `guildTitle` | `obj_character.guild_title` | Guild title identifier |
| `anniversery` | `obj_character.anniversery` | Anniversary flag |
@@ -1,81 +0,0 @@
# Power Handler Documentation
## Overview
This document describes the database relationships and interactions for the `dbPowerHandler` class. The power handler manages game powers and abilities that characters can possess and use in the Magicbane emulator system.
## Handler Class
**File:** `src/engine/db/handlers/dbPowerHandler.java`
**Class:** `dbPowerHandler`
**Extends:** `dbHandlerBase`
## Database Tables
### Main Table(s)
- **Table Name:** `obj_power`
- **Description:** Core power information including name, description, and activation properties
- **Columns:**
- UID (Primary Key)
- name
- description
- powerType
- activationType
- cooldownTime
- duration
- maxLevel
- cost
- iconID
### Related Tables
| Table Name | Description | Relationship |
|------------|-------------|--------------|
| `obj_character_power` | Tracks character-specific power levels and status | CharacterID → obj_character.UID, PowerID → obj_power.UID |
| `static_power_requirement` | Stores requirements for unlocking powers | PowerID → obj_power.UID |
## Key Queries
### Get Power by ID
```sql
SELECT * FROM `obj_power` WHERE `UID`=?
```
**File:** `dbPowerHandler.java`, Line ~60
### Get Character's Powers
```sql
SELECT p.*, cp.level, cp.isUnlocked
FROM `obj_power` p
INNER JOIN `obj_character_power` cp ON p.`UID` = cp.`PowerID`
WHERE cp.`CharacterID`=?
```
**File:** `dbPowerHandler.java`, Line ~85
### Get Power Requirements
```sql
SELECT * FROM `static_power_requirement` WHERE `PowerID`=?
```
**File:** `dbPowerHandler.java`, Line ~120
## Relationships
1. **Power to Character:** Many-to-many through `obj_character_power` table
2. **Power to Requirements:** One-to-many (via `static_power_requirement.PowerID`)
3. **Power to Static Data:** Power definitions are stored in static tables
## Java Field to Database Column Mappings
| Java Field | Database Column | Notes |
|------------|-----------------|-------|
| `name` | `obj_power.name` | Power name |
| `description` | `obj_power.description` | Power description |
| `powerType` | `obj_power.powerType` | Type of power (active, passive) |
| `activationType` | `obj_power.activationType` | How the power is activated |
| `cooldownTime` | `obj_power.cooldownTime` | Cooldown period in seconds |
| `duration` | `obj_power.duration` | Duration of power effect |
| `maxLevel` | `obj_power.maxLevel` | Maximum level for this power |
| `cost` | `obj_power.cost` | Resource cost to use power |
| `iconID` | `obj_power.iconID` | Icon identifier for UI display |
## Notes
- The power system is designed to support both active and passive abilities
- Power requirements are stored separately to allow flexible unlocking mechanisms
- Character-specific power data is tracked in the `obj_character_power` table
@@ -1,77 +0,0 @@
# Promotion Class Handler Documentation
## Overview
This document describes the database relationships and interactions for the `dbPromotionClassHandler` class. The promotion class handler manages character class promotions and advancement systems in the Magicbane emulator.
## Handler Class
**File:** `src/engine/db/handlers/dbPromotionClassHandler.java`
**Class:** `dbPromotionClassHandler`
**Extends:** `dbHandlerBase`
## Database Tables
### Main Table(s)
- **Table Name:** `obj_promotionclass`
- **Description:** Core promotion class information including name, requirements, and advancement paths
- **Columns:**
- UID (Primary Key)
- name
- description
- baseClassID
- requiredLevel
- requiredItems
- statBonuses
- skillBonus
### Related Tables
| Table Name | Description | Relationship |
|------------|-------------|--------------|
| `obj_character_promotionclass` | Tracks character-specific promotion class status | CharacterID → obj_character.UID, PromotionClassID → obj_promotionclass.UID |
| `static_promotion_requirement` | Stores requirements for class promotions | PromotionClassID → obj_promotionclass.UID |
## Key Queries
### Get Promotion Class by ID
```sql
SELECT * FROM `obj_promotionclass` WHERE `UID`=?
```
**File:** `dbPromotionClassHandler.java`, Line ~60
### Get Character's Promotion Classes
```sql
SELECT pc.*, cpc.isUnlocked
FROM `obj_promotionclass` pc
INNER JOIN `obj_character_promotionclass` cpc ON pc.`UID` = cpc.`PromotionClassID`
WHERE cpc.`CharacterID`=?
```
**File:** `dbPromotionClassHandler.java`, Line ~85
### Get Promotion Requirements
```sql
SELECT * FROM `static_promotion_requirement` WHERE `PromotionClassID`=?
```
**File:** `dbPromotionClassHandler.java`, Line ~120
## Relationships
1. **Promotion Class to Character:** Many-to-many through `obj_character_promotionclass` table
2. **Promotion Class to Requirements:** One-to-many (via `static_promotion_requirement.PromotionClassID`)
3. **Promotion Class to Base Class:** Many-to-one relationship via baseClassID
## Java Field to Database Column Mappings
| Java Field | Database Column | Notes |
|------------|-----------------|-------|
| `name` | `obj_promotionclass.name` | Promotion class name |
| `description` | `obj_promotionclass.description` | Description of the promotion class |
| `baseClassID` | `obj_promotionclass.baseClassID` | Reference to base class |
| `requiredLevel` | `obj_promotionclass.requiredLevel` | Level required for promotion |
| `requiredItems` | `obj_promotionclass.requiredItems` | Items required for promotion |
| `statBonuses` | `obj_promotionclass.statBonuses` | Stat bonuses granted |
| `skillBonus` | `obj_promotionclass.skillBonus` | Skill bonuses granted |
## Notes
- Promotion classes are tied to base classes and provide advancement paths for characters
- The system supports both unlocked and locked promotion classes
- Requirements are stored separately to allow flexible advancement mechanics
@@ -1,45 +0,0 @@
# Race Handler Documentation
## Overview
This document describes the database relationships and interactions for the `dbRaceHandler` class. The race handler manages race-related data including beard colors and styles for different races in the Magicbane emulator.
## Handler Class
**File:** `src/engine/db/handlers/dbRaceHandler.java`
**Class:** `dbRaceHandler`
**Extends:** `dbHandlerBase`
## Database Tables
### Race-related Tables
- **Table Name:** `static_rune_racebeardcolor`
- **Description:** Stores beard color information for different races
- **Columns:**
- RaceID (Foreign Key)
- color
## Key Queries
### Get Beard Colors for Race
```sql
SELECT `color` FROM `static_rune_racebeardcolor` WHERE `RaceID` = ?
```
**File:** `dbRaceHandler.java`, Line ~25
### Get Beard Styles for Race
```sql
SELECT `style` FROM `static_rune_racebeardstyle` WHERE `RaceID` = ?
```
**File:** `dbRaceHandler.java`, Line ~40
## Relationships
1. **Race to Beard Colors:** One-to-many (via `static_rune_racebeardcolor.RaceID`)
2. **Race to Beard Styles:** One-to-many (via `static_rune_racebeardstyle.RaceID`)
## Java Field to Database Column Mappings
| Java Field | Database Column | Notes |
|------------|-----------------|-------|
| `RaceID` | `static_rune_racebeardcolor.RaceID` | Foreign key to race |
| `color` | `static_rune_racebeardcolor.color` | Beard color value |
@@ -1,78 +0,0 @@
# Realm Handler Documentation
## Overview
This document describes the database relationships and interactions for the `dbRealmHandler` class. The realm handler manages different game realms or worlds within the Magicbane emulator system.
## Handler Class
**File:** `src/engine/db/handlers/dbRealmHandler.java`
**Class:** `dbRealmHandler`
**Extends:** `dbHandlerBase`
## Database Tables
### Main Table(s)
- **Table Name:** `obj_realm`
- **Description:** Core realm information including name, status, and configuration settings
- **Columns:**
- UID (Primary Key)
- name
- description
- status
- maxPlayers
- serverIP
- serverPort
- isPublic
- creationDate
### Related Tables
| Table Name | Description | Relationship |
|------------|-------------|--------------|
| `dyn_realm_playerlist` | Tracks active players in each realm | RealmID → obj_realm.UID, CharacterID → obj_character.UID |
| `obj_realm_config` | Configuration settings for each realm | RealmID → obj_realm.UID |
## Key Queries
### Get Realm by ID
```sql
SELECT * FROM `obj_realm` WHERE `UID`=?
```
**File:** `dbRealmHandler.java`, Line ~60
### Get All Active Realms
```sql
SELECT * FROM `obj_realm` WHERE `status`='active'
```
**File:** `dbRealmHandler.java`, Line ~85
### Get Realm Players
```sql
SELECT c.* FROM `obj_character` c
INNER JOIN `dyn_realm_playerlist` rpl ON c.`UID` = rpl.`CharacterID`
WHERE rpl.`RealmID`=?
```
**File:** `dbRealmHandler.java`, Line ~120
## Relationships
1. **Realm to Character:** Many-to-many through `dyn_realm_playerlist` table
2. **Realm to Configuration:** One-to-one (via `obj_realm_config.RealmID`)
3. **Realm to Player Status:** Real-time tracking of active players
## Java Field to Database Column Mappings
| Java Field | Database Column | Notes |
|------------|-----------------|-------|
| `name` | `obj_realm.name` | Realm name |
| `description` | `obj_realm.description` | Description of the realm |
| `status` | `obj_realm.status` | Current status (active, inactive) |
| `maxPlayers` | `obj_realm.maxPlayers` | Maximum number of players allowed |
| `serverIP` | `obj_realm.serverIP` | Server IP address |
| `serverPort` | `obj_realm.serverPort` | Server port number |
| `isPublic` | `obj_realm.isPublic` | Whether realm is publicly accessible |
| `creationDate` | `obj_realm.creationDate` | When the realm was created |
## Notes
- Realms represent different game worlds or instances
- Players can move between realms based on configuration
- The system tracks real-time player presence in each realm
@@ -1,69 +0,0 @@
# Resist Handler Documentation
## Overview
This document describes the database relationships and interactions for the `dbResistHandler` class. The resist handler manages character resistance values against various damage types and effects in the Magicbane emulator system.
## Handler Class
**File:** `src/engine/db/handlers/dbResistHandler.java`
**Class:** `dbResistHandler`
**Extends:** `dbHandlerBase`
## Database Tables
### Main Table(s)
- **Table Name:** `obj_resist`
- **Description:** Core resistance information including damage type and resistance values
- **Columns:**
- UID (Primary Key)
- resistType
- value
- description
### Related Tables
| Table Name | Description | Relationship |
|------------|-------------|--------------|
| `obj_character_resist` | Tracks character-specific resistance values | CharacterID → obj_character.UID, ResistID → obj_resist.UID |
| `static_resist_type` | Static definitions of resistance types | ResistTypeID → obj_resist.UID |
## Key Queries
### Get Resist by ID
```sql
SELECT * FROM `obj_resist` WHERE `UID`=?
```
**File:** `dbResistHandler.java`, Line ~60
### Get Character's Resistances
```sql
SELECT r.*, cr.value as characterValue
FROM `obj_resist` r
INNER JOIN `obj_character_resist` cr ON r.`UID` = cr.`ResistID`
WHERE cr.`CharacterID`=?
```
**File:** `dbResistHandler.java`, Line ~85
### Get Resist by Type
```sql
SELECT * FROM `obj_resist` WHERE `resistType`=?
```
**File:** `dbResistHandler.java`, Line ~120
## Relationships
1. **Resist to Character:** Many-to-many through `obj_character_resist` table
2. **Resist to Static Types:** One-to-many (via `static_resist_type.ResistTypeID`)
3. **Resist to Damage Types:** Direct mapping to game damage types
## Java Field to Database Column Mappings
| Java Field | Database Column | Notes |
|------------|-----------------|-------|
| `resistType` | `obj_resist.resistType` | Type of resistance (fire, ice, etc.) |
| `value` | `obj_resist.value` | Resistance value |
| `description` | `obj_resist.description` | Description of the resistance type |
## Notes
- Resistances are applied to various damage types in combat
- Character-specific resistances can be modified through equipment or abilities
- The system supports multiple resistance types for comprehensive damage mitigation
@@ -1,77 +0,0 @@
# Rune Base Attribute Handler Documentation
## Overview
This document describes the database relationships and interactions for the `dbRuneBaseAttributeHandler` class. The rune base attribute handler manages the fundamental attributes and properties of rune base items in the Magicbane emulator system.
## Handler Class
**File:** `src/engine/db/handlers/dbRuneBaseAttributeHandler.java`
**Class:** `dbRuneBaseAttributeHandler`
**Extends:** `dbHandlerBase`
## Database Tables
### Main Table(s)
- **Table Name:** `obj_runebaseattribute`
- **Description:** Core rune base attribute information including name, description, and property values
- **Columns:**
- UID (Primary Key)
- name
- description
- attributeType
- minValue
- maxValue
- defaultValue
- isStackable
### Related Tables
| Table Name | Description | Relationship |
|------------|-------------|--------------|
| `obj_rune_baseattribute` | Links rune base items to their attributes | RuneBaseID → obj_runebase.UID, AttributeID → obj_runebaseattribute.UID |
| `static_rune_attribute_type` | Static definitions of attribute types | AttributeTypeID → obj_runebaseattribute.UID |
## Key Queries
### Get Rune Base Attribute by ID
```sql
SELECT * FROM `obj_runebaseattribute` WHERE `UID`=?
```
**File:** `dbRuneBaseAttributeHandler.java`, Line ~60
### Get Attributes for Rune Base
```sql
SELECT rba.*, rbaa.attributeValue
FROM `obj_runebaseattribute` rba
INNER JOIN `obj_rune_baseattribute` rbaa ON rba.`UID` = rbaa.`AttributeID`
WHERE rbaa.`RuneBaseID`=?
```
**File:** `dbRuneBaseAttributeHandler.java`, Line ~85
### Get Attribute by Type
```sql
SELECT * FROM `obj_runebaseattribute` WHERE `attributeType`=?
```
**File:** `dbRuneBaseAttributeHandler.java`, Line ~120
## Relationships
1. **Rune Base Attribute to Rune Base:** Many-to-many through `obj_rune_baseattribute` table
2. **Rune Base Attribute to Static Types:** One-to-many (via `static_rune_attribute_type.AttributeTypeID`)
3. **Attribute to Property Values:** Defines the range and default values for each attribute
## Java Field to Database Column Mappings
| Java Field | Database Column | Notes |
|------------|-----------------|-------|
| `name` | `obj_runebaseattribute.name` | Attribute name |
| `description` | `obj_runebaseattribute.description` | Description of the attribute |
| `attributeType` | `obj_runebaseattribute.attributeType` | Type of attribute (stat, effect, etc.) |
| `minValue` | `obj_runebaseattribute.minValue` | Minimum value allowed |
| `maxValue` | `obj_runebaseattribute.maxValue` | Maximum value allowed |
| `defaultValue` | `obj_runebaseattribute.defaultValue` | Default value for the attribute |
| `isStackable` | `obj_runebaseattribute.isStackable` | Whether the attribute can stack |
## Notes
- Rune base attributes define the core properties of rune items
- Attributes can be applied to different rune base types
- The system supports both fixed and variable attribute values
@@ -1,77 +0,0 @@
# Rune Base Effect Handler Documentation
## Overview
This document describes the database relationships and interactions for the `dbRuneBaseEffectHandler` class. The rune base effect handler manages the effects and abilities that rune base items can provide in the Magicbane emulator system.
## Handler Class
**File:** `src/engine/db/handlers/dbRuneBaseEffectHandler.java`
**Class:** `dbRuneBaseEffectHandler`
**Extends:** `dbHandlerBase`
## Database Tables
### Main Table(s)
- **Table Name:** `obj_runebaseeffect`
- **Description:** Core rune base effect information including name, description, and activation properties
- **Columns:**
- UID (Primary Key)
- name
- description
- effectType
- activationType
- duration
- cooldownTime
- powerValue
### Related Tables
| Table Name | Description | Relationship |
|------------|-------------|--------------|
| `obj_rune_baseeffect` | Links rune base items to their effects | RuneBaseID → obj_runebase.UID, EffectID → obj_runebaseeffect.UID |
| `static_rune_effect_type` | Static definitions of effect types | EffectTypeID → obj_runebaseeffect.UID |
## Key Queries
### Get Rune Base Effect by ID
```sql
SELECT * FROM `obj_runebaseeffect` WHERE `UID`=?
```
**File:** `dbRuneBaseEffectHandler.java`, Line ~60
### Get Effects for Rune Base
```sql
SELECT rbe.*, rba.effectValue
FROM `obj_runebaseeffect` rbe
INNER JOIN `obj_rune_baseeffect` rba ON rbe.`UID` = rba.`EffectID`
WHERE rba.`RuneBaseID`=?
```
**File:** `dbRuneBaseEffectHandler.java`, Line ~85
### Get Effect by Type
```sql
SELECT * FROM `obj_runebaseeffect` WHERE `effectType`=?
```
**File:** `dbRuneBaseEffectHandler.java`, Line ~120
## Relationships
1. **Rune Base Effect to Rune Base:** Many-to-many through `obj_rune_baseeffect` table
2. **Rune Base Effect to Static Types:** One-to-many (via `static_rune_effect_type.EffectTypeID`)
3. **Effect to Activation Properties:** Defines how effects are triggered and applied
## Java Field to Database Column Mappings
| Java Field | Database Column | Notes |
|------------|-----------------|-------|
| `name` | `obj_runebaseeffect.name` | Effect name |
| `description` | `obj_runebaseeffect.description` | Description of the effect |
| `effectType` | `obj_runebaseeffect.effectType` | Type of effect (damage, healing, buff, etc.) |
| `activationType` | `obj_runebaseeffect.activationType` | How the effect is activated |
| `duration` | `obj_runebaseeffect.duration` | Duration of effect in seconds |
| `cooldownTime` | `obj_runebaseeffect.cooldownTime` | Cooldown period between activations |
| `powerValue` | `obj_runebaseeffect.powerValue` | Strength or power value of the effect |
## Notes
- Rune base effects define the abilities and powers that runes can provide
- Effects have various activation methods (passive, active, triggered)
- The system supports duration-based and cooldown-based effects
@@ -1,76 +0,0 @@
# Rune Base Handler Documentation
## Overview
This document describes the database relationships and interactions for the `dbRuneBaseHandler` class. The rune base handler manages the base definitions and properties of rune items in the Magicbane emulator system.
## Handler Class
**File:** `src/engine/db/handlers/dbRuneBaseHandler.java`
**Class:** `dbRuneBaseHandler`
**Extends:** `dbHandlerBase`
## Database Tables
### Main Table(s)
- **Table Name:** `obj_runebase`
- **Description:** Core rune base item information including name, description, and basic properties
- **Columns:**
- UID (Primary Key)
- name
- description
- itemType
- rarity
- iconID
- value
- weight
### Related Tables
| Table Name | Description | Relationship |
|------------|-------------|--------------|
| `obj_rune_baseattribute` | Links rune base items to their attributes | RuneBaseID → obj_runebase.UID, AttributeID → obj_runebaseattribute.UID |
| `obj_rune_baseeffect` | Links rune base items to their effects | RuneBaseID → obj_runebase.UID, EffectID → obj_runebaseeffect.UID |
| `static_rune_type` | Static definitions of rune types | RuneTypeID → obj_runebase.UID |
## Key Queries
### Get Rune Base by ID
```sql
SELECT * FROM `obj_runebase` WHERE `UID`=?
```
**File:** `dbRuneBaseHandler.java`, Line ~60
### Get All Rune Bases
```sql
SELECT * FROM `obj_runebase`
```
**File:** `dbRuneBaseHandler.java`, Line ~85
### Get Rune Base by Type
```sql
SELECT * FROM `obj_runebase` WHERE `itemType`=?
```
**File:** `dbRuneBaseHandler.java`, Line ~120
## Relationships
1. **Rune Base to Attributes:** Many-to-many through `obj_rune_baseattribute` table
2. **Rune Base to Effects:** Many-to-many through `obj_rune_baseeffect` table
3. **Rune Base to Static Types:** One-to-many (via `static_rune_type.RuneTypeID`)
4. **Rune Base to Item Properties:** Defines the core characteristics of rune items
## Java Field to Database Column Mappings
| Java Field | Database Column | Notes |
|------------|-----------------|-------|
| `name` | `obj_runebase.name` | Rune base name |
| `description` | `obj_runebase.description` | Description of the rune |
| `itemType` | `obj_runebase.itemType` | Type of rune (weapon, armor, etc.) |
| `rarity` | `obj_runebase.rarity` | Rarity level of the rune |
| `iconID` | `obj_runebase.iconID` | Icon identifier for UI display |
| `value` | `obj_runebase.value` | Value or worth of the rune |
| `weight` | `obj_runebase.weight` | Weight of the rune item |
## Notes
- Rune bases define the fundamental properties of all rune items in the game
- Each rune base can have multiple attributes and effects associated with it
- The system supports various rune types with different characteristics
@@ -1,78 +0,0 @@
# Runegate Handler Documentation
## Overview
This document describes the database relationships and interactions for the `dbRunegateHandler` class. The runegate handler manages runegate structures and their properties in the Magicbane emulator system.
## Handler Class
**File:** `src/engine/db/handlers/dbRunegateHandler.java`
**Class:** `dbRunegateHandler`
**Extends:** `dbHandlerBase`
## Database Tables
### Main Table(s)
- **Table Name:** `obj_runegate`
- **Description:** Core runegate information including location, properties, and activation status
- **Columns:**
- UID (Primary Key)
- name
- description
- locationX
- locationY
- locationZ
- isActive
- activationTime
- cooldownPeriod
- destinationRealmID
### Related Tables
| Table Name | Description | Relationship |
|------------|-------------|--------------|
| `obj_runegate_connection` | Links runegates to their destinations | SourceRunegateID → obj_runegate.UID, DestinationRunegateID → obj_runegate.UID |
| `dyn_runegate_usage` | Tracks usage history of runegates | RunegateID → obj_runegate.UID, CharacterID → obj_character.UID |
## Key Queries
### Get Runegate by ID
```sql
SELECT * FROM `obj_runegate` WHERE `UID`=?
```
**File:** `dbRunegateHandler.java`, Line ~60
### Get Active Runegates
```sql
SELECT * FROM `obj_runegate` WHERE `isActive`=1
```
**File:** `dbRunegateHandler.java`, Line ~85
### Get Runegate by Location
```sql
SELECT * FROM `obj_runegate` WHERE `locationX`=? AND `locationY`=? AND `locationZ`=?
```
**File:** `dbRunegateHandler.java`, Line ~120
## Relationships
1. **Runegate to Connections:** Many-to-many through `obj_runegate_connection` table
2. **Runegate to Usage History:** One-to-many (via `dyn_runegate_usage.RunegateID`)
3. **Runegate to Destination Realms:** Links runegates to different game realms
## Java Field to Database Column Mappings
| Java Field | Database Column | Notes |
|------------|-----------------|-------|
| `name` | `obj_runegate.name` | Runegate name |
| `description` | `obj_runegate.description` | Description of the runegate |
| `locationX` | `obj_runegate.locationX` | X coordinate of runegate location |
| `locationY` | `obj_runegate.locationY` | Y coordinate of runegate location |
| `locationZ` | `obj_runegate.locationZ` | Z coordinate of runegate location |
| `isActive` | `obj_runegate.isActive` | Whether the runegate is currently active |
| `activationTime` | `obj_runegate.activationTime` | Time when runegate was last activated |
| `cooldownPeriod` | `obj_runegate.cooldownPeriod` | Cooldown period between uses |
| `destinationRealmID` | `obj_runegate.destinationRealmID` | Realm ID for destination |
## Notes
- Runegates function as teleportation devices in the game world
- They can connect to other runegates in different locations or realms
- The system tracks usage history for balance and maintenance purposes
@@ -1,78 +0,0 @@
# Shrine Handler Documentation
## Overview
This document describes the database relationships and interactions for the `dbShrineHandler` class. The shrine handler manages shrine structures and their properties in the Magicbane emulator system.
## Handler Class
**File:** `src/engine/db/handlers/dbShrineHandler.java`
**Class:** `dbShrineHandler`
**Extends:** `dbHandlerBase`
## Database Tables
### Main Table(s)
- **Table Name:** `obj_shrine`
- **Description:** Core shrine information including location, properties, and effects
- **Columns:**
- UID (Primary Key)
- name
- description
- locationX
- locationY
- locationZ
- shrineType
- isActive
- effectDuration
- effectPower
### Related Tables
| Table Name | Description | Relationship |
|------------|-------------|--------------|
| `obj_shrine_effect` | Defines effects provided by shrines | ShrineID → obj_shrine.UID, EffectID → obj_shrineeffect.UID |
| `dyn_shrine_usage` | Tracks usage history of shrines | ShrineID → obj_shrine.UID, CharacterID → obj_character.UID |
## Key Queries
### Get Shrine by ID
```sql
SELECT * FROM `obj_shrine` WHERE `UID`=?
```
**File:** `dbShrineHandler.java`, Line ~60
### Get Active Shrines
```sql
SELECT * FROM `obj_shrine` WHERE `isActive`=1
```
**File:** `dbShrineHandler.java`, Line ~85
### Get Shrine by Location
```sql
SELECT * FROM `obj_shrine` WHERE `locationX`=? AND `locationY`=? AND `locationZ`=?
```
**File:** `dbShrineHandler.java`, Line ~120
## Relationships
1. **Shrine to Effects:** Many-to-many through `obj_shrine_effect` table
2. **Shrine to Usage History:** One-to-many (via `dyn_shrine_usage.ShrineID`)
3. **Shrine to Shrine Types:** Different types of shrines with different effects
## Java Field to Database Column Mappings
| Java Field | Database Column | Notes |
|------------|-----------------|-------|
| `name` | `obj_shrine.name` | Shrine name |
| `description` | `obj_shrine.description` | Description of the shrine |
| `locationX` | `obj_shrine.locationX` | X coordinate of shrine location |
| `locationY` | `obj_shrine.locationY` | Y coordinate of shrine location |
| `locationZ` | `obj_shrine.locationZ` | Z coordinate of shrine location |
| `shrineType` | `obj_shrine.shrineType` | Type of shrine (healing, buff, etc.) |
| `isActive` | `obj_shrine.isActive` | Whether the shrine is currently active |
| `effectDuration` | `obj_shrine.effectDuration` | Duration of shrine effects |
| `effectPower` | `obj_shrine.effectPower` | Power level of shrine effects |
## Notes
- Shrines provide various beneficial effects to players who interact with them
- They can be healing shrines, buff shrines, or other special effect shrines
- The system tracks usage history for balance and maintenance purposes
@@ -1,81 +0,0 @@
# Skill Base Handler Documentation
## Overview
This document describes the database relationships and interactions for the `dbSkillBaseHandler` class. The skill base handler manages the fundamental definitions and properties of skills in the Magicbane emulator system.
## Handler Class
**File:** `src/engine/db/handlers/dbSkillBaseHandler.java`
**Class:** `dbSkillBaseHandler`
**Extends:** `dbHandlerBase`
## Database Tables
### Main Table(s)
- **Table Name:** `obj_skillbase`
- **Description:** Core skill base information including name, description, and activation properties
- **Columns:**
- UID (Primary Key)
- name
- description
- skillType
- activationType
- cooldownTime
- duration
- maxLevel
- cost
- iconID
### Related Tables
| Table Name | Description | Relationship |
|------------|-------------|--------------|
| `obj_character_skill` | Tracks character-specific skill levels and status | CharacterID → obj_character.UID, SkillID → obj_skillbase.UID |
| `static_skill_requirement` | Stores requirements for unlocking skills | SkillID → obj_skillbase.UID |
## Key Queries
### Get Skill Base by ID
```sql
SELECT * FROM `obj_skillbase` WHERE `UID`=?
```
**File:** `dbSkillBaseHandler.java`, Line ~60
### Get Character's Skills
```sql
SELECT s.*, cs.level, cs.isUnlocked
FROM `obj_skillbase` s
INNER JOIN `obj_character_skill` cs ON s.`UID` = cs.`SkillID`
WHERE cs.`CharacterID`=?
```
**File:** `dbSkillBaseHandler.java`, Line ~85
### Get Skill Requirements
```sql
SELECT * FROM `static_skill_requirement` WHERE `SkillID`=?
```
**File:** `dbSkillBaseHandler.java`, Line ~120
## Relationships
1. **Skill Base to Character:** Many-to-many through `obj_character_skill` table
2. **Skill Base to Requirements:** One-to-many (via `static_skill_requirement.SkillID`)
3. **Skill Base to Static Data:** Skill definitions are stored in static tables
## Java Field to Database Column Mappings
| Java Field | Database Column | Notes |
|------------|-----------------|-------|
| `name` | `obj_skillbase.name` | Skill name |
| `description` | `obj_skillbase.description` | Skill description |
| `skillType` | `obj_skillbase.skillType` | Type of skill (attack, defense, support) |
| `activationType` | `obj_skillbase.activationType` | How the skill is activated |
| `cooldownTime` | `obj_skillbase.cooldownTime` | Cooldown period in seconds |
| `duration` | `obj_skillbase.duration` | Duration of skill effect |
| `maxLevel` | `obj_skillbase.maxLevel` | Maximum level for this skill |
| `cost` | `obj_skillbase.cost` | Resource cost to use skill |
| `iconID` | `obj_skillbase.iconID` | Icon identifier for UI display |
## Notes
- Skill bases define the core properties of all skills in the game
- Skills can be activated in various ways (instant, channeling, etc.)
- The system supports both unlocked and locked skill progression
@@ -1,75 +0,0 @@
# Skill Requirement Handler Documentation
## Overview
This document describes the database relationships and interactions for the `dbSkillReqHandler` class. The skill requirement handler manages the prerequisites and conditions needed to unlock or use various skills in the Magicbane emulator system.
## Handler Class
**File:** `src/engine/db/handlers/dbSkillReqHandler.java`
**Class:** `dbSkillReqHandler`
**Extends:** `dbHandlerBase`
## Database Tables
### Main Table(s)
- **Table Name:** `static_skill_requirement`
- **Description:** Core skill requirement information including type, value, and conditions
- **Columns:**
- UID (Primary Key)
- skillID
- requirementType
- requirementValue
- prerequisiteSkillID
- prerequisiteLevel
- prerequisiteStat
### Related Tables
| Table Name | Description | Relationship |
|------------|-------------|--------------|
| `obj_skillbase` | Links to the skill that has requirements | SkillID → obj_skillbase.UID |
| `obj_character_skill` | Tracks character-specific skill status | CharacterID → obj_character.UID, SkillID → obj_skillbase.UID |
## Key Queries
### Get Skill Requirements by Skill ID
```sql
SELECT * FROM `static_skill_requirement` WHERE `skillID`=?
```
**File:** `dbSkillReqHandler.java`, Line ~60
### Get Specific Requirement by ID
```sql
SELECT * FROM `static_skill_requirement` WHERE `UID`=?
```
**File:** `dbSkillReqHandler.java`, Line ~85
### Get Requirements for Character Skill
```sql
SELECT sr.*, cs.level as characterLevel
FROM `static_skill_requirement` sr
LEFT JOIN `obj_character_skill` cs ON sr.`prerequisiteSkillID` = cs.`SkillID`
WHERE sr.`skillID`=?
```
**File:** `dbSkillReqHandler.java`, Line ~120
## Relationships
1. **Skill Requirement to Skill Base:** Many-to-one (via `skillID` → obj_skillbase.UID)
2. **Skill Requirement to Prerequisite Skills:** Many-to-one (via `prerequisiteSkillID` → obj_skillbase.UID)
3. **Skill Requirement to Character Skills:** One-to-many through character skill tracking
## Java Field to Database Column Mappings
| Java Field | Database Column | Notes |
|------------|-----------------|-------|
| `skillID` | `static_skill_requirement.skillID` | Reference to the skill that requires this condition |
| `requirementType` | `static_skill_requirement.requirementType` | Type of requirement (level, skill, stat) |
| `requirementValue` | `static_skill_requirement.requirementValue` | Value needed for requirement |
| `prerequisiteSkillID` | `static_skill_requirement.prerequisiteSkillID` | Prerequisite skill ID if applicable |
| `prerequisiteLevel` | `static_skill_requirement.prerequisiteLevel` | Required level of prerequisite skill |
| `prerequisiteStat` | `static_skill_requirement.prerequisiteStat` | Required stat value if applicable |
## Notes
- Skill requirements define the conditions needed to unlock or use skills
- Requirements can be based on character level, other skills, or specific stats
- The system supports complex requirement chains for advanced skill trees
@@ -1,72 +0,0 @@
# Vendor Dialog Handler Documentation
## Overview
This document describes the database relationships and interactions for the `dbVendorDialogHandler` class. The vendor dialog handler manages the dialog systems and interaction options for NPC vendors in the Magicbane emulator system.
## Handler Class
**File:** `src/engine/db/handlers/dbVendorDialogHandler.java`
**Class:** `dbVendorDialogHandler`
**Extends:** `dbHandlerBase`
## Database Tables
### Main Table(s)
- **Table Name:** `static_npc_dialog`
- **Description:** Core vendor dialog information including text, options, and responses
- **Columns:**
- UID (Primary Key)
- npcID
- dialogText
- responseType
- nextDialogID
- isFinal
- triggerEvent
### Related Tables
| Table Name | Description | Relationship |
|------------|-------------|--------------|
| `static_npc_dialog_option` | Defines available options for each dialog | DialogID → static_npc_dialog.UID |
| `obj_npc` | Links to the NPC that has this dialog system | npcID → obj_npc.UID |
## Key Queries
### Get Dialog by ID
```sql
SELECT * FROM `static_npc_dialog` WHERE `UID`=?
```
**File:** `dbVendorDialogHandler.java`, Line ~60
### Get Dialog Options for Dialog
```sql
SELECT * FROM `static_npc_dialog_option` WHERE `dialogID`=?
```
**File:** `dbVendorDialogHandler.java`, Line ~85
### Get Initial Dialog for NPC
```sql
SELECT * FROM `static_npc_dialog` WHERE `npcID`=? AND `nextDialogID` IS NULL
```
**File:** `dbVendorDialogHandler.java`, Line ~120
## Relationships
1. **Dialog to Options:** One-to-many (via `dialogID` → static_npc_dialog.UID)
2. **Dialog to NPC:** Many-to-one (via `npcID` → obj_npc.UID)
3. **Dialog to Next Dialog:** Chain of dialog progression through `nextDialogID`
## Java Field to Database Column Mappings
| Java Field | Database Column | Notes |
|------------|-----------------|-------|
| `npcID` | `static_npc_dialog.npcID` | Reference to the NPC this dialog belongs to |
| `dialogText` | `static_npc_dialog.dialogText` | Text displayed in the dialog |
| `responseType` | `static_npc_dialog.responseType` | Type of response expected (buy, sell, quest) |
| `nextDialogID` | `static_npc_dialog.nextDialogID` | ID of next dialog in sequence |
| `isFinal` | `static_npc_dialog.isFinal` | Whether this is the final dialog in chain |
| `triggerEvent` | `static_npc_dialog.triggerEvent` | Event that triggers this dialog |
## Notes
- Vendor dialogs provide interactive communication with NPCs
- Dialog systems support branching conversations and quest progression
- The system handles complex dialog chains with multiple options and outcomes
@@ -1,83 +0,0 @@
# Warehouse Handler Documentation
## Overview
This document describes the database relationships and interactions for the `dbWarehouseHandler` class. The warehouse handler manages storage systems and inventory management for characters in the Magicbane emulator system.
## Handler Class
**File:** `src/engine/db/handlers/dbWarehouseHandler.java`
**Class:** `dbWarehouseHandler`
**Extends:** `dbHandlerBase`
## Database Tables
### Main Table(s)
- **Table Name:** `obj_warehouse`
- **Description:** Core warehouse information including storage capacity and location
- **Columns:**
- UID (Primary Key)
- name
- description
- characterID
- storageCapacity
- currentStorage
- locationX
- locationY
- locationZ
- isPublic
### Related Tables
| Table Name | Description | Relationship |
|------------|-------------|--------------|
| `obj_warehouse_item` | Tracks items stored in warehouses | WarehouseID → obj_warehouse.UID, ItemID → obj_item.UID |
| `obj_character_warehouse` | Links characters to their warehouse access | CharacterID → obj_character.UID, WarehouseID → obj_warehouse.UID |
## Key Queries
### Get Warehouse by ID
```sql
SELECT * FROM `obj_warehouse` WHERE `UID`=?
```
**File:** `dbWarehouseHandler.java`, Line ~60
### Get Character's Warehouses
```sql
SELECT w.* FROM `obj_warehouse` w
INNER JOIN `obj_character_warehouse` cw ON w.`UID` = cw.`WarehouseID`
WHERE cw.`CharacterID`=?
```
**File:** `dbWarehouseHandler.java`, Line ~85
### Get Warehouse Items
```sql
SELECT i.*, wi.quantity
FROM `obj_item` i
INNER JOIN `obj_warehouse_item` wi ON i.`UID` = wi.`ItemID`
WHERE wi.`WarehouseID`=?
```
**File:** `dbWarehouseHandler.java`, Line ~120
## Relationships
1. **Warehouse to Items:** Many-to-many through `obj_warehouse_item` table
2. **Warehouse to Characters:** Many-to-many through `obj_character_warehouse` table
3. **Warehouse to Storage Capacity:** Tracks current and maximum storage limits
## Java Field to Database Column Mappings
| Java Field | Database Column | Notes |
|------------|-----------------|-------|
| `name` | `obj_warehouse.name` | Warehouse name |
| `description` | `obj_warehouse.description` | Description of the warehouse |
| `characterID` | `obj_warehouse.characterID` | Character who owns this warehouse |
| `storageCapacity` | `obj_warehouse.storageCapacity` | Maximum storage capacity |
| `currentStorage` | `obj_warehouse.currentStorage` | Current amount of stored items |
| `locationX` | `obj_warehouse.locationX` | X coordinate of warehouse location |
| `locationY` | `obj_warehouse.locationY` | Y coordinate of warehouse location |
| `locationZ` | `obj_warehouse.locationZ` | Z coordinate of warehouse location |
| `isPublic` | `obj_warehouse.isPublic` | Whether the warehouse is publicly accessible |
## Notes
- Warehouses provide extended storage for character inventories
- Multiple characters can access shared warehouses
- The system tracks both storage capacity and current usage
@@ -1,201 +0,0 @@
# Magicbane Database Handler Documentation Index
This index provides an overview of all database handler documentation files created for the Magicbane emulator project.
## Available Documentation Files
1. **dbAccountHandler_Documentation.md**
- Documents account management functionality including authentication and account status tracking
- Covers `obj_account` table and its relationships to character objects
2. **dbCityHandler_Documentation.md**
- Documents city management functionality including city creation, zones, and buildings
- Covers `obj_city`, `obj_zone`, and `obj_building` tables
3. **dbPlayerCharacterHandler_Documentation.md**
- Describes player character handling including creation, updates, and retrieval operations
- Covers `obj_character` table and related dynamic tables
4. **dbRaceHandler_Documentation.md**
- Describes race-related data handling for beard colors and styles
- Focuses on static race data tables
5. **dbGuildHandler_Documentation.md**
- Describes the complex guild system with relationships to history, alliances, enemies, and member management
- Covers multiple related tables including `obj_guild`, `dyn_character_guildhistory`, `dyn_guild_allianceenemylist`, etc.
6. **dbBaneHandler_Documentation.md**
- Documents bane management functionality for city-based special objects
- Covers `dyn_banes` table and its relationships to cities, players, and buildings
7. **dbCSSessionHandler_Documentation.md**
- Documents client session management including session creation, retrieval, updating, and deletion
- Covers `dyn_session` table and its relationships to accounts and characters
8. **dbKitHandler_Documentation.md**
- Documents kit management functionality for static kit data
- Covers `static_rune_validkit` table and its relationships to races, classes, and items
9. **dbLootHandler_Documentation.md**
- Documents loot system functionality including general tables, item tables, modifier tables, and booty sets
- Covers `static_loot_gen`, `static_loot_item`, `static_loot_mod`, `static_loot_modtype`, and `static_loot_bootySet` tables
10. **dbMenuHandler_Documentation.md**
- Documents NPC menu option handling including retrieval of menu options by menu ID
- Covers `static_npc_menuoption` table
11. **dbContractHandler_Documentation.md**
- Documents contract management functionality for player contracts and quest tracking
- Covers `dyn_contract` table and its relationships to characters and quests
12. **dbEffectsBaseHandler_Documentation.md**
- Documents effect base data handling including effect types, categories, and properties
- Covers `static_effect_base` table and related lookup tables
13. **dbEffectsResourceCostHandler_Documentation.md**
- Documents resource cost handling for game effects and abilities
- Covers `static_effect_resourcecost` table and its relationships to effects and resources
14. **dbEnchantmentHandler_Documentation.md**
- Documents enchantment management functionality for item enhancements
- Covers `dyn_enchantment` table and related data structures
15. **dbHeightMapHandler_Documentation.md**
- Documents height map data handling for terrain and elevation information
- Covers `static_heightmap` table and its spatial data relationships
16. **dbItemBaseHandler_Documentation.md**
- Documents base item data handling including item properties, types, and categories
- Covers `static_item_base` table and related lookup tables
17. **dbItemHandler_Documentation.md**
- Documents item management functionality for player inventory and items
- Covers `dyn_item` table and its relationships to characters and locations
18. **dbMineHandler_Documentation.md**
- Documents mine management functionality including resource extraction and mining operations
- Covers `dyn_mine` table and related mining data structures
19. **dbMobBaseHandler_Documentation.md**
- Documents base mob data handling including mob types, stats, and behaviors
- Covers `static_mob_base` table and related lookup tables
20. **dbMobHandler_Documentation.md**
- Documents mob management functionality for NPC creatures and monster behavior
- Covers `dyn_mob` table and its relationships to zones and character data
21. **dbNPCHandler_Documentation.md**
- Documents NPC handling including conversation systems and NPC properties
- Covers `dyn_npc` table and related interaction data
22. **dbPetitionHandler_Documentation.md**
- Documents petition management functionality for player support requests
- Covers `dyn_petition` table and its relationships to accounts and characters
23. **dbPowerHandler_Documentation.md**
- Documents power handling including character abilities, skills, and power systems
- Covers `static_power_base`, `dyn_character_power`, and related tables
24. **dbPromotionClassHandler_Documentation.md**
- Documents promotion class handling for character advancement and class changes
- Covers `static_promotion_class` table and related data structures
25. **dbRealmHandler_Documentation.md**
- Documents realm management functionality including realm data and server information
- Covers `obj_realm` table and its relationships to accounts and characters
26. **dbResistHandler_Documentation.md**
- Documents resistance handling for character stats and damage mitigation
- Covers `static_resist` table and related resistance data structures
27. **dbRuneBaseAttributeHandler_Documentation.md**
- Documents rune base attribute handling for magical properties and modifiers
- Covers `static_rune_baseattribute` table and related lookup tables
28. **dbRuneBaseEffectHandler_Documentation.md**
- Documents rune base effect handling including effect types and properties
- Covers `static_rune_baseeffect` table and related data structures
29. **dbRuneBaseHandler_Documentation.md**
- Documents rune base data handling for rune creation and properties
- Covers `static_rune_base` table and related lookup tables
30. **dbRunegateHandler_Documentation.md**
- Documents runegate management functionality for magical portal systems
- Covers `dyn_runegate` table and its relationships to characters and locations
31. **dbShrineHandler_Documentation.md**
- Documents shrine management functionality including shrine effects and locations
- Covers `dyn_shrine` table and related data structures
32. **dbSkillBaseHandler_Documentation.md**
- Documents skill base data handling for character abilities and skills
- Covers `static_skill_base` table and related lookup tables
33. **dbSkillReqHandler_Documentation.md**
- Documents skill requirement handling for character advancement and skill unlocks
- Covers `static_skill_requirement` table and related data structures
34. **dbVendorDialogHandler_Documentation.md**
- Documents vendor dialog handling for NPC merchant interactions
- Covers `static_npc_dialog` table and related conversation data
35. **dbWarehouseHandler_Documentation.md**
- Documents warehouse management functionality for player storage systems
- Covers `dyn_warehouse` table and its relationships to characters and items
36. **dbBaseClassHandler_Documentation.md**
- Documents base class handling for character race and class structures
- Covers `static_rune_racebaseclass` table and related data structures
37. **dbBlueprintHandler_Documentation.md**
- Documents blueprint handling for building and construction systems
- Covers `static_building_blueprint` and `static_building_doors` tables
38. **dbBoonHandler_Documentation.md**
- Documents boon handling for item and character enhancements
- Covers `static_item_boons` table and related data structures
39. **dbBuildingHandler_Documentation.md**
- Documents building management functionality including construction and ownership
- Covers `obj_building`, `dyn_building_friendslist`, and related tables
40. **dbBuildingLocationHandler_Documentation.md**
- Documents building location handling for spatial positioning and placement
- Covers `static_building_location` table and related data structures
41. **dbCharacterPowerHandler_Documentation.md**
- Documents character power handling for ability and skill management
- Covers `dyn_character_power` table and related data structures
42. **dbCharacterRuneHandler_Documentation.md**
- Documents character rune handling for magical rune systems
- Covers `dyn_character_rune` table and related data structures
43. **dbCharacterSkillHandler_Documentation.md**
- Documents character skill handling for ability progression and skill management
- Covers `dyn_character_skill` table and related data structures
44. **dbZoneHandler_Documentation.md**
- Documents zone management functionality including world zones and area definitions
- Covers `obj_zone` table and its relationships to cities and buildings
## Documentation Structure
All documentation files follow a consistent format with the following sections:
- Overview
- Handler Class information
- Database Tables involved
- Key Queries with line references
- Relationships between entities
- Java Field to Database Column Mappings
## Usage Notes
These documents are intended for:
- Developers working on the Magicbane emulator
- Wiki documentation for project maintainers
- Database schema understanding and maintenance
- Future reference when code changes may affect database relationships
The files are located in: `src/engine/documentation/Handler Specific Documentation/`
+11 -1
View File
@@ -88,7 +88,7 @@ public enum MovementManager {
// if (msg.getEndLat() < 0)
// msg.setEndLat(0);
//
//
// if (msg.getEndLon() > 0)
// msg.setEndLon(0);
@@ -216,6 +216,16 @@ public enum MovementManager {
}
if (toMove.getObjectType().equals(GameObjectType.PlayerCharacter)) {
Vector3fImmutable playerCollidePoint = Bounds.PlayerCollisionPoint((PlayerCharacter) toMove, toMove.getLoc(), endLocation);
if (playerCollidePoint != null) {
msg.setEndCoord(playerCollidePoint);
endLocation = playerCollidePoint;
collide = true;
}
}
if (toMove.getObjectType() == GameObjectType.PlayerCharacter && ((PlayerCharacter) toMove).isTeleportMode()) {
toMove.teleport(endLocation);
return;
+40 -1
View File
@@ -81,7 +81,7 @@ public class Bounds {
Bounds identityBounds = Bounds.borrow();
identityBounds.setBounds(location);
collisionState = collide(targetBounds, identityBounds, 0.0f);
collisionState = collide(targetBounds, identityBounds, 0.1f);
identityBounds.release();
return collisionState;
}
@@ -267,6 +267,45 @@ public class Bounds {
return collidePoint;
}
public static Vector3fImmutable PlayerCollisionPoint(PlayerCharacter player, Vector3fImmutable start, Vector3fImmutable end) {
Vector3fImmutable collidePoint = null;
float distance = player.getLoc().distance2D(end);
// Check for building collisions first
collidePoint = PlayerBuildingCollisionPoint(player, start, end);
if (collidePoint != null) {
return collidePoint;
}
// Now check for player collisions
HashSet<AbstractWorldObject> nearbyPlayers = WorldGrid.getObjectsInRangePartial(player, distance + 2, MBServerStatics.MASK_PLAYER);
float minDistance = 5.0f; // Minimum distance between players
for (AbstractWorldObject awo : nearbyPlayers) {
PlayerCharacter otherPlayer = (PlayerCharacter) awo;
if (otherPlayer == player) continue;
Vector3fImmutable otherLoc = otherPlayer.getLoc();
Vector3fImmutable closestPoint = getClosestPointOnLine(start, end, otherLoc);
if (closestPoint.distance2D(otherLoc) < minDistance) {
// Collision detected, adjust end point
Vector3fImmutable pushVector = closestPoint.subtract(otherLoc).normalize();
collidePoint = closestPoint.add(pushVector.scaleAdd(minDistance, Vector3fImmutable.ZERO));
break;
}
}
return collidePoint != null ? collidePoint : end;
}
private static Vector3fImmutable getClosestPointOnLine(Vector3fImmutable lineStart, Vector3fImmutable lineEnd, Vector3fImmutable point) {
Vector3fImmutable line = lineEnd.subtract(lineStart);
float t = point.subtract(lineStart).dot(line) / line.dot(line);
t = Math.max(0, Math.min(1, t));
return lineStart.add(line.scaleAdd(t, Vector3fImmutable.ZERO));
}
public static boolean linesTouching(float x1, float y1, float x2, float y2, float x3, float y3, float x4, float y4) {
float denominator = ((x2 - x1) * (y4 - y3)) - ((y2 - y1) * (x4 - x3));
float numerator1 = ((y1 - y3) * (x4 - x3)) - ((x1 - x3) * (y4 - y3));
@@ -18,9 +18,8 @@ import engine.net.client.Protocol;
import engine.objects.Building;
import engine.objects.Guild;
import engine.server.MBServerStatics;
import java.time.Instant;
import java.time.Duration;
import java.time.temporal.ChronoField;
import org.joda.time.DateTime;
import org.joda.time.Seconds;
public class ArcMineWindowAvailableTimeMsg extends ClientNetMsg {
@@ -28,8 +27,8 @@ public class ArcMineWindowAvailableTimeMsg extends ClientNetMsg {
private Building treeOfLife;
private int currentMineHour;
private Duration secondsLeft;
private Instant lateTime;
private Seconds secondsLeft;
private DateTime lateTime;
private int late;
/**
@@ -74,15 +73,15 @@ public class ArcMineWindowAvailableTimeMsg extends ClientNetMsg {
currentMineHour = guild.getMineTime();
late = MBServerStatics.MINE_LATE_WINDOW;
lateTime = Instant.now();
lateTime = DateTime.now();
if (late == 0)
lateTime = lateTime.plus(Duration.ofDays(1));
lateTime = lateTime.plusDays(1);
lateTime = lateTime.with(ChronoField.HOUR_OF_DAY, late);
lateTime = lateTime.hourOfDay().setCopy(late);
late = ((late > 23) ? (late - 24) : late);
secondsLeft = Duration.between(Instant.now(), lateTime);
secondsLeft = Seconds.secondsBetween(DateTime.now(), lateTime);
}
/**
@@ -108,4 +107,4 @@ public class ArcMineWindowAvailableTimeMsg extends ClientNetMsg {
public void setBuildingUUID(int buildingUUID) {
this.buildingUUID = buildingUUID;
}
}
}
+1 -7
View File
@@ -26,7 +26,6 @@ import engine.job.JobScheduler;
import engine.jobs.DeferredPowerJob;
import engine.jobs.FinishSpireEffectJob;
import engine.jobs.NoTimeJob;
import engine.math.Bounds;
import engine.math.FastMath;
import engine.math.Vector3fImmutable;
import engine.net.ByteBufferWriter;
@@ -269,9 +268,6 @@ public class PlayerCharacter extends AbstractCharacter {
this.hash = rs.getString("hash");
// For debugging skills
// CharacterSkill.printSkills(this);
}
public static Building getUpdatedBindBuilding(PlayerCharacter player) {
@@ -4565,9 +4561,6 @@ public class PlayerCharacter extends AbstractCharacter {
this.charItemManager = new CharacterItemManager(this);
Bounds playerBounds = Bounds.borrow();
playerBounds.setBounds(this.getLoc());
this.setBounds(playerBounds);
}
@Override
@@ -5363,6 +5356,7 @@ public class PlayerCharacter extends AbstractCharacter {
moveToMsg.setSourceType(GameObjectType.PlayerCharacter.ordinal());
moveToMsg.setSourceID(this.getObjectUUID());
Dispatch dispatch = Dispatch.borrow(this, moveToMsg);
DispatchMessage.dispatchMsgDispatch(dispatch, DispatchChannel.PRIMARY);