Compare commits

..

383 Commits

Author SHA1 Message Date
MagicBot 92db9e1086 More cleanup in statTransferAction 2024-09-13 12:20:33 -04:00
MagicBot f0875a6093 Refactored out garbage variables 2024-09-12 12:20:23 -04:00
FatBoy 0c50cd9536 system to finish using powers with new UsePowerJob 2024-09-08 20:11:21 -05:00
FatBoy 3c1280e546 starting of new power manager 2024-09-08 16:39:29 -05:00
FatBoy aece43a3bc starting of new power manager 2024-09-07 19:57:20 -05:00
MagicBot 1417760f5b StartTransfer poweraction work 2024-09-07 15:49:58 -04:00
MagicBot 2947753c3c StartTransfer poweraction work 2024-09-07 15:47:33 -04:00
MagicBot 98664a8983 Teleport poweraction work 2024-09-07 15:18:02 -04:00
MagicBot 5e5203aa36 Teleport bool parsed 2024-09-07 15:16:05 -04:00
MagicBot a41288ac78 Track poweraction work 2024-09-07 15:05:31 -04:00
MagicBot bdb9a12bd5 Track poweraction work 2024-09-07 14:59:22 -04:00
MagicBot 458bdbd72d Track poweraction work 2024-09-07 14:56:21 -04:00
MagicBot 65b10f72fa Track fields updated 2024-09-07 14:52:12 -04:00
MagicBot b50110f7b0 Poweraction refactor work 2024-09-07 12:13:21 -04:00
MagicBot 1e09930bdb Poweraction refactor work 2024-09-07 12:13:01 -04:00
MagicBot 614fb9a5e9 Field camelcase 2024-09-07 12:10:55 -04:00
MagicBot 17b4b993e2 Signature argument renamed 2024-09-05 15:46:59 -04:00
MagicBot fa45e9556f Refactored poweractions 2024-09-05 15:41:16 -04:00
MagicBot deab274ba2 Refactored poweractions 2024-09-05 15:36:38 -04:00
MagicBot 82cefce424 Refactored poweractions 2024-09-05 15:25:29 -04:00
FatBoy 0fd6dfb648 Power Action Constructor (not finished) 2024-09-02 16:30:47 -05:00
FatBoy a5ccba2e27 updated ModifierEntry contructors 2024-09-02 16:09:52 -05:00
FatBoy e09bd9aae0 Merge branch 'feature-config-parsing2' into feature-config-usage
# Conflicts:
#	src/engine/powers/EffectsBase.java
2024-09-02 15:33:13 -05:00
MagicBot 74b1994f5e Merge remote-tracking branch 'refs/remotes/origin/weekend-fixings' into feature-config-parsing2 2024-08-25 17:52:06 -04:00
MagicBot dfa646d828 Update to player city filter 2024-08-25 17:31:28 -04:00
MagicBot 668b61b734 city.isDestroyed 2024-08-25 17:11:01 -04:00
MagicBot 20c032fa4d Hash value updated. 2024-08-25 17:03:48 -04:00
MagicBot 62235497ad Returns all not just active mines 2024-08-25 16:53:51 -04:00
MagicBot 983dd46870 Update to thread logic 2024-08-25 16:23:28 -04:00
MagicBot 4da089e9b8 Update to thread logic 2024-08-25 16:20:27 -04:00
MagicBot aaff28d720 Update to console output 2024-08-25 16:13:37 -04:00
MagicBot 93befc0887 Update to console output 2024-08-25 16:13:22 -04:00
MagicBot d304d0706c Owner set to null 2024-08-25 15:28:12 -04:00
MagicBot eff44c334d Error trapping and output 2024-08-25 15:26:14 -04:00
MagicBot e082a0b49c Bane logic tweaking 2024-08-25 15:18:40 -04:00
FatBoy 42186fd2a3 labelling 2024-08-22 18:57:55 -05:00
FatBoy 769b84b9da Enchant Value derived form parser instead of database 2024-08-22 18:56:56 -05:00
MagicBot 3842cce1ab Naming conventions set 2024-08-22 16:34:05 -04:00
MagicBot f4fc7fc75b EffectDescription refactored out. 2024-08-22 16:21:13 -04:00
MagicBot f89ce2ee15 Parsing cleanup work. 2024-08-22 16:06:56 -04:00
MagicBot ecd7215003 Parsing cleanup work. 2024-08-22 16:01:42 -04:00
MagicBot 585f984554 Separate group for min/max 2024-08-22 15:52:28 -04:00
FatBoy 3d96e6504e All Effect Data Loaded From Parser 2024-08-21 17:40:24 -05:00
FatBoy f0efd0c477 Fail Conditions for effects fully loaded from parser values 2024-08-21 16:59:43 -05:00
FatBoy bc50408c45 Merge branch 'feature-config-parsing2' into feature-config-usage 2024-08-21 16:34:24 -05:00
MagicBot 7125e9b360 Variable renamed for clarity 2024-08-21 16:59:26 -04:00
MagicBot 2fb7260077 Support for multiple pre-reqs 2024-08-21 16:37:47 -04:00
MagicBot d3ef0c828d Support for multiple pre-reqs 2024-08-21 16:34:43 -04:00
MagicBot bedf3761bd String usage cleanup 2024-08-21 13:28:01 -04:00
MagicBot b3b9867624 String usage cleanup 2024-08-21 13:23:22 -04:00
MagicBot d0f1a73a9f Refactor all arrays to arraylist usage. 2024-08-21 13:06:35 -04:00
MagicBot 4bcf00fd6f Enums are uppercase 2024-08-21 12:43:14 -04:00
MagicBot 5f7465194e List not arraylist 2024-08-21 12:39:45 -04:00
MagicBot f0c6584818 pojo created for ConditionEntry 2024-08-21 12:35:01 -04:00
MagicBot a61b8d193b Comment cleanup 2024-08-21 11:45:11 -04:00
FatBoy c863cd5f54 removed one time used empty hashset 2024-08-20 20:46:17 -05:00
FatBoy c01c69db83 EffectBase sources and fail conditions static maps removed 2024-08-20 20:43:29 -05:00
FatBoy 001a89ccf0 database loading effects 2024-08-20 19:45:31 -05:00
FatBoy c2633d0d9f Usage of EffectsParser 2024-08-20 19:14:50 -05:00
MagicBot 5957ff6f7b Redundant assignment 2024-08-20 19:37:09 -04:00
MagicBot afc80c0e03 Debug code removed 2024-08-20 19:35:17 -04:00
MagicBot 740949812c Package reformat 2024-08-20 19:30:33 -04:00
MagicBot ee0fc67984 Debug code removed 2024-08-20 19:29:50 -04:00
MagicBot 434a9d5fda More PowerAction parsing work. 2024-08-20 19:19:04 -04:00
MagicBot ec6ec33c74 More PowerAction parsing work. 2024-08-20 19:17:06 -04:00
MagicBot 71c240e347 More PowerAction parsing work. 2024-08-20 19:16:11 -04:00
MagicBot eaf9894f99 More PowerAction parsing work. 2024-08-20 19:12:30 -04:00
MagicBot b68aa3b289 More PowerAction parsing work. 2024-08-20 19:10:46 -04:00
MagicBot 345e729d1a More PowerAction parsing work. 2024-08-20 19:09:26 -04:00
MagicBot 2e8b4c97ac More powerAction work 2024-08-20 19:03:27 -04:00
MagicBot 01d5e37a81 More powerAction work 2024-08-20 19:02:21 -04:00
MagicBot 67dc95e496 More powerAction work 2024-08-20 19:00:52 -04:00
MagicBot e56c5a4fdc More powerAction work 2024-08-20 18:49:03 -04:00
MagicBot 4e3a578ad1 More powerAction work 2024-08-20 18:47:44 -04:00
MagicBot 1b7114d8bd More powerAction work 2024-08-20 18:35:34 -04:00
MagicBot 27cc7655b3 More powerAction work 2024-08-20 18:31:37 -04:00
MagicBot f7b593149d More powerAction work 2024-08-20 18:30:37 -04:00
MagicBot 01e7e0fac3 More powerAction work 2024-08-20 18:29:32 -04:00
MagicBot 228781e62f More powerAction work 2024-08-20 18:27:26 -04:00
MagicBot d0c41816ac More powerAction work 2024-08-20 18:24:05 -04:00
MagicBot 2bc872e9d9 TrackEntry pojo created. 2024-08-20 18:18:21 -04:00
MagicBot 127300c58b TrackEntry pojo created. 2024-08-20 18:14:55 -04:00
MagicBot 1da1b2f546 More poweraction parsing work. 2024-08-20 18:14:34 -04:00
MagicBot 79f7458010 More poweraction parsing work. 2024-08-20 17:41:43 -04:00
MagicBot c8f90ea654 More poweraction parsing work. 2024-08-20 17:40:12 -04:00
MagicBot 27c1ec0e55 More poweraction parsing work. 2024-08-20 17:37:17 -04:00
MagicBot bda4bb66e1 More poweraction parsing work. 2024-08-20 17:34:15 -04:00
MagicBot 2691b4317b More poweraction parsing work. 2024-08-20 17:32:26 -04:00
MagicBot 25878db5f0 More poweraction parsing work. 2024-08-20 17:29:58 -04:00
MagicBot 9cd5e42c08 More poweraction parsing work. 2024-08-20 17:28:10 -04:00
MagicBot c39dc59ef5 More poweraction parsing work. 2024-08-20 17:25:00 -04:00
MagicBot 0b5564267f More poweraction parsing work. 2024-08-20 17:19:35 -04:00
MagicBot 6ca5e46ef6 More poweraction parsing work. 2024-08-20 17:14:26 -04:00
MagicBot 4b855cdf6e More poweraction parsing work. 2024-08-20 17:12:11 -04:00
MagicBot b4638f9218 More poweraction parsing work. 2024-08-20 17:10:56 -04:00
MagicBot 5b8934c922 More poweraction parsing work. 2024-08-20 17:08:59 -04:00
MagicBot 9d89f5d7f4 More poweraction parsing work. 2024-08-20 17:07:00 -04:00
MagicBot 1c6be6a1ea More poweraction parsing work. 2024-08-20 16:54:47 -04:00
MagicBot 5d054142ff More poweraction parsing work. 2024-08-20 16:51:59 -04:00
MagicBot 7723ac8830 More poweraction parsing work. 2024-08-20 16:49:51 -04:00
MagicBot b5cc45aafd More poweraction parsing work. 2024-08-20 16:43:56 -04:00
MagicBot 94d3364808 More poweraction parsing work. 2024-08-20 16:39:51 -04:00
MagicBot dab46c185c More poweraction parsing work. 2024-08-20 16:37:55 -04:00
MagicBot 8bf5360f6f StatTransfer pojo created. 2024-08-20 16:35:16 -04:00
MagicBot ee431510fb StatTransfer pojo created. 2024-08-20 16:26:57 -04:00
MagicBot 465736912b PowerAction parsing work. 2024-08-20 15:43:40 -04:00
MagicBot f2ae969e84 PowerAction parsing work. 2024-08-20 15:41:26 -04:00
MagicBot f2eaf61bd0 PowerAction parsing work. 2024-08-20 15:31:26 -04:00
MagicBot 189c052ed5 PowerAction parsing work. 2024-08-20 15:28:40 -04:00
MagicBot fa28129aa4 PowerAction parsing work. 2024-08-20 15:27:06 -04:00
MagicBot c42d438a7c PowerAction parsing work. 2024-08-20 15:24:17 -04:00
MagicBot 2e1efce858 PowerAction parsing work. 2024-08-20 15:21:27 -04:00
MagicBot 825d7eb071 PowerAction parsing work. 2024-08-20 15:18:02 -04:00
MagicBot cd80b9f228 PowerAction parsing work. 2024-08-20 15:05:47 -04:00
MagicBot 502dda0b3b Debug code added 2024-08-20 15:01:28 -04:00
MagicBot a8ea778c6e Debug code added 2024-08-20 12:13:01 -04:00
MagicBot 6c29321581 PowerActionEntry parsing work. 2024-08-20 12:07:56 -04:00
MagicBot 7ed94d171a PowerActionEntry parsing work. 2024-08-20 12:06:35 -04:00
MagicBot afd73082f3 PowerActionEntry parsing work. 2024-08-20 12:05:03 -04:00
MagicBot 890f3523f3 PowerActionEntry parsing work. 2024-08-20 12:00:35 -04:00
MagicBot 8e8ed92e26 PowerActionEntry parsing work. 2024-08-20 12:00:22 -04:00
MagicBot b935ae9fc4 PowerActionEntry parsing work. 2024-08-20 11:58:53 -04:00
MagicBot d6272d7310 PowerActionEntry parsing work. 2024-08-19 21:26:44 -04:00
MagicBot e60a7a5ac0 PowerActionEntry parsing work. 2024-08-19 21:11:53 -04:00
MagicBot 7e8cb056ed PowerActionEntry parsing work. 2024-08-19 21:03:34 -04:00
MagicBot 9ae3cb796d PowerActionEntry parsing work. 2024-08-19 21:02:13 -04:00
MagicBot 9a6a131bbf PowerActionEntry parsing work. 2024-08-19 20:50:45 -04:00
MagicBot 3909ddb3ba PowerActionEntry parsing work. 2024-08-19 20:49:43 -04:00
MagicBot dbc26b8243 PowerActionEntry parsing work. 2024-08-19 20:41:30 -04:00
MagicBot 93a4acb108 init moved to configmanager. 2024-08-19 20:38:38 -04:00
MagicBot 9c1c4e02a9 init moved to configmanager. 2024-08-19 20:38:09 -04:00
MagicBot 00aa06c5f1 Condition fix 2024-08-19 15:24:28 -04:00
MagicBot f3578f82e6 PowerAction work started. 2024-08-19 15:20:15 -04:00
MagicBot 85ee1faf4a PowerAction work started. 2024-08-19 15:18:19 -04:00
MagicBot b72c8e8ce3 PowerAction work started. 2024-08-19 13:17:44 -04:00
MagicBot 77a89b8f8a PowerAction work started. 2024-08-19 13:15:33 -04:00
MagicBot a9a9b6a8ac PowerAction work started. 2024-08-19 13:13:54 -04:00
MagicBot fab77a0dbb PowerAction work started. 2024-08-19 13:13:31 -04:00
MagicBot e83e0def2e PowerAction work started. 2024-08-19 13:05:32 -04:00
MagicBot ebcc721d43 Class renamed 2024-08-19 11:24:37 -04:00
MagicBot ff6d236ea7 Power Conditions parsed 2024-08-19 11:10:55 -04:00
MagicBot 41a9c19001 More PowerEntry parsing work. 2024-08-19 08:29:07 -04:00
MagicBot 187ef18ac2 More PowerEntry parsing work. 2024-08-19 08:27:39 -04:00
MagicBot 93304e3eb7 More PowerEntry parsing work. 2024-08-19 08:25:42 -04:00
MagicBot b1f14c4beb More PowerEntry parsing work. 2024-08-19 08:23:17 -04:00
MagicBot 1b2c073886 More PowerEntry parsing work. 2024-08-19 08:21:38 -04:00
MagicBot f20a5bb881 More PowerEntry parsing work. 2024-08-19 08:20:35 -04:00
MagicBot 394ba5a165 More PowerEntry parsing work. 2024-08-19 08:19:29 -04:00
MagicBot c35e689d1b More PowerEntry parsing work. 2024-08-19 08:16:31 -04:00
MagicBot a9b6fcb9ee More PowerEntry parsing work. 2024-08-19 08:12:45 -04:00
MagicBot 8eeb539f16 More PowerEntry parsing work. 2024-08-19 08:12:18 -04:00
MagicBot a863902370 More PowerEntry parsing work. 2024-08-19 08:10:13 -04:00
MagicBot 12f8139d1e More PowerEntry parsing work. 2024-08-19 08:08:32 -04:00
MagicBot 4f25e7e24f More PowerEntry parsing work. 2024-08-19 08:06:09 -04:00
MagicBot 5860a263d9 More PowerEntry parsing work. 2024-08-19 08:02:35 -04:00
MagicBot 1460ddb975 More PowerEntry parsing work. 2024-08-19 08:00:53 -04:00
MagicBot 5326126dcb More PowerEntry parsing work. 2024-08-19 07:57:32 -04:00
MagicBot e6a8cdd5e2 More PowerEntry parsing work. 2024-08-19 07:56:04 -04:00
MagicBot 0dc8eeee90 More PowerEntry parsing work. 2024-08-19 07:54:14 -04:00
MagicBot e719d13c8c More PowerEntry parsing work. 2024-08-19 07:53:19 -04:00
MagicBot 9ee2592ec7 Regex update 2024-08-19 07:45:26 -04:00
MagicBot 720b97dc69 Regex updated to include spaces only in a line. 2024-08-19 07:40:07 -04:00
MagicBot 177917a8c8 EffectPreReq pojo created 2024-08-19 07:32:25 -04:00
MagicBot a1323e5d17 EffectPreReq pojo created 2024-08-19 07:15:20 -04:00
MagicBot 760b2c3df1 Debug string updated 2024-08-19 07:12:06 -04:00
MagicBot 31f8b5a294 One or more whitspaces 2024-08-19 07:08:09 -04:00
MagicBot 3498cc370f More PowerEntry work. 2024-08-19 06:51:30 -04:00
MagicBot 66dd7b5f90 More PowerEntry work. 2024-08-19 06:49:13 -04:00
MagicBot 5cc979e2f3 More PowerEntry work. 2024-08-19 06:45:37 -04:00
MagicBot 1bcf307f94 More PowerEntry work. 2024-08-19 06:33:30 -04:00
MagicBot cdf67f4ce5 More PowerEntry work. 2024-08-19 06:30:27 -04:00
MagicBot 67f2dce2fd More PowerEntry work. 2024-08-19 06:26:59 -04:00
MagicBot 162f28d874 More PowerEntry work. 2024-08-19 06:26:06 -04:00
MagicBot c6ab1b5468 More PowerEntry work. 2024-08-19 06:25:03 -04:00
MagicBot d17db3a1fd More PowerEntry work. 2024-08-19 06:15:50 -04:00
MagicBot 9428436883 More PowerEntry work. 2024-08-19 06:07:17 -04:00
MagicBot 62dfb8a42e More PowerEntry work. 2024-08-19 06:05:11 -04:00
MagicBot c6647a99b8 More PowerEntry work. 2024-08-19 06:04:01 -04:00
MagicBot a11797c5e4 More PowerEntry work. 2024-08-19 06:01:52 -04:00
MagicBot 84a124bb52 More PowerEntry work. 2024-08-19 05:58:24 -04:00
MagicBot b296742de0 More PowerEntry work. 2024-08-19 05:56:24 -04:00
MagicBot c0560ece47 More PowerEntry work. 2024-08-19 05:55:49 -04:00
MagicBot 89fd647870 More PowerEntry work. 2024-08-19 05:44:35 -04:00
MagicBot 07da5cb77c More PowerEntry work. 2024-08-19 05:44:03 -04:00
MagicBot aaf84d13f8 More PowerEntry work. 2024-08-19 05:42:04 -04:00
MagicBot fd1bb0def7 More PowerEntry work. 2024-08-19 05:39:57 -04:00
MagicBot 3223eae7b6 More PowerEntry work. 2024-08-19 05:39:24 -04:00
MagicBot d836f80805 More PowerEntry work. 2024-08-19 05:38:25 -04:00
MagicBot 1a6dcf3f57 More PowerEntry work. 2024-08-19 05:36:51 -04:00
MagicBot dce48f3d66 More PowerEntry work. 2024-08-19 05:34:38 -04:00
MagicBot 10d98f32b6 More PowerEntry work. 2024-08-19 05:28:23 -04:00
MagicBot acdf6db91a More PowerEntry work. 2024-08-18 16:38:06 -04:00
MagicBot 0ee7269c8f More PowerEntry work. 2024-08-18 16:28:07 -04:00
MagicBot 4b888b3d92 More PowerEntry work. 2024-08-18 16:27:13 -04:00
MagicBot f0ed15baf0 More PowerEntry work. 2024-08-18 16:21:50 -04:00
MagicBot 6c882a7788 More PowerEntry work. 2024-08-18 16:20:58 -04:00
MagicBot 11e03e0051 More PowerEntry work. 2024-08-18 16:18:45 -04:00
MagicBot 6e47b80d23 More powerAction work. 2024-08-18 16:09:40 -04:00
MagicBot a3d3c32b07 More powerAction work. 2024-08-18 16:01:31 -04:00
MagicBot 3a27f2f4c8 More powerAction work. 2024-08-18 15:57:37 -04:00
MagicBot 1638804f1f More powerAction work. 2024-08-18 15:51:30 -04:00
MagicBot 362958c0f1 More powerAction work. 2024-08-18 15:47:22 -04:00
MagicBot 74720956a1 More powerAction work. 2024-08-18 15:35:01 -04:00
MagicBot 58e1f4d70b More powerAction work. 2024-08-18 15:01:29 -04:00
MagicBot c871c253b1 More powerAction work. 2024-08-18 15:01:05 -04:00
MagicBot 547b101c60 More powerAction work. 2024-08-18 15:00:18 -04:00
MagicBot b9ccbe219f More powerAction work. 2024-08-18 14:56:41 -04:00
MagicBot c31409d26f Enum updated from .exe 2024-08-18 14:13:27 -04:00
MagicBot 00d6e4f819 Enum added for CategoryToPower 2024-08-18 14:10:20 -04:00
MagicBot dc9f33dc7b PowerAction pojo created 2024-08-18 13:00:03 -04:00
MagicBot 3d45f26611 PowerAction pojo created 2024-08-18 12:38:22 -04:00
MagicBot 8554bad731 Package restructure 2024-08-17 16:33:20 -04:00
MagicBot b2a8fe357e More enum work. 2024-08-17 16:24:25 -04:00
MagicBot 08ac0b8d8d More enum work. 2024-08-17 16:20:21 -04:00
MagicBot 23bf491d4b More enum work. 2024-08-17 16:16:00 -04:00
MagicBot 76d22abd0b Debug code removed 2024-08-17 16:08:39 -04:00
MagicBot e4e8086e41 More Enum work 2024-08-17 16:07:47 -04:00
MagicBot 63116551bc Enum work 2024-08-17 16:02:44 -04:00
MagicBot d06ce44bd5 Enum work 2024-08-17 15:58:48 -04:00
MagicBot 387f75766f Debug output 2024-08-17 15:36:03 -04:00
MagicBot 2a18b96d23 Reformat 2024-08-17 15:31:45 -04:00
MagicBot bf2174fbe5 Sometimes bad floats. 2024-08-17 15:29:11 -04:00
MagicBot 462f6725b6 Sometimes bad floats. 2024-08-17 15:26:59 -04:00
MagicBot ed09bffc87 Values are floats 2024-08-17 15:23:12 -04:00
MagicBot 218de2bb70 Support for multiple power enrties. 2024-08-17 15:13:32 -04:00
MagicBot c90961b691 Support for multiple power enrties. 2024-08-17 14:51:30 -04:00
MagicBot 1b5b904a8f Support for multiple power enrties. 2024-08-17 14:51:18 -04:00
MagicBot ed219efb92 22 fields 2024-08-17 14:37:49 -04:00
MagicBot 4d704d3ab0 Variables mirror executable 2024-08-16 13:09:22 -04:00
MagicBot 11076ff586 Variables mirror executable 2024-08-16 12:36:54 -04:00
MagicBot 6b22e624f6 Debug code added 2024-08-16 12:01:13 -04:00
MagicBot a81f90238b Debug code added 2024-08-15 16:31:04 -04:00
MagicBot e7c2e827b9 Filename updated 2024-08-15 16:20:33 -04:00
MagicBot 82aa2f9b77 Parsing powers at bootstrap 2024-08-15 16:16:59 -04:00
MagicBot d9cc2d2a56 More PowerEntry parsing work. 2024-08-15 16:08:33 -04:00
MagicBot 28e3769d1e Parm changed to float. 2024-08-15 16:01:50 -04:00
MagicBot e092d764bd More PowerEntry parsing work. 2024-08-14 17:33:06 -04:00
MagicBot 27c0a852e9 More PowerEntry parsing work. 2024-08-14 17:32:45 -04:00
MagicBot bf6ad69d4c More PowerEntry parsing work. 2024-08-14 17:29:13 -04:00
MagicBot 0b4b270d2f Strip quotes from names 2024-08-14 17:21:26 -04:00
MagicBot 4b63493b73 Formatting 2024-08-14 17:19:39 -04:00
MagicBot 9b6c8af171 Cannot be null 2024-08-14 17:18:36 -04:00
MagicBot 4c7421cd62 More PowerEntry parsing work 2024-08-14 17:11:38 -04:00
MagicBot 7662069100 More PowerEntry parsing work 2024-08-14 17:00:19 -04:00
MagicBot adb10e34f3 Naming convention update 2024-08-14 16:57:34 -04:00
MagicBot bd0d814142 Moved comment to declaration 2024-08-14 16:55:11 -04:00
MagicBot 06364a2b9e More power parsing work. 2024-08-14 16:53:07 -04:00
MagicBot afb6d3e8a3 Needs group 0 2024-08-14 16:46:02 -04:00
MagicBot a48ff5851c PowerEntry parsing work 2024-08-14 16:36:07 -04:00
MagicBot ede21f8d54 PowerEntry parsing work 2024-08-14 16:34:20 -04:00
MagicBot d08190cbff PowerEntry parsing work 2024-08-14 16:29:21 -04:00
MagicBot cd50ca4309 PowerEntry parsing work 2024-08-14 16:27:51 -04:00
MagicBot 97c118ae1a PowerEntry parsing work 2024-08-13 12:20:27 -04:00
MagicBot 8878f07628 PowerEntry data class created 2024-08-13 12:06:24 -04:00
MagicBot dee30d8121 Header added to new files 2024-08-13 12:05:09 -04:00
MagicBot 5087465ecb Power parsing work 2024-08-13 12:04:18 -04:00
MagicBot 39844251b0 wpak package for wpak code 2024-08-13 11:58:41 -04:00
MagicBot 8c983eadff Declaration order follows execution order. 2024-08-13 11:29:37 -04:00
MagicBot 7efe5209aa Comment update 2024-08-13 11:28:34 -04:00
MagicBot 95cf5fa209 Comment update 2024-08-13 11:28:07 -04:00
MagicBot adde3fc3a8 Comment update 2024-08-12 16:05:36 -04:00
MagicBot b7089e88d3 Comment update 2024-08-12 11:20:28 -04:00
MagicBot da63d9d926 Can't be null 2024-08-12 11:19:53 -04:00
MagicBot c8a5224c75 Parsing conditions 2024-08-12 11:15:21 -04:00
MagicBot d4618ae4b9 Parsing conditions 2024-08-12 11:13:54 -04:00
MagicBot 0591b9d41f Parsing conditions 2024-08-12 11:10:52 -04:00
MagicBot 52c5f51613 Parsing conditions 2024-08-12 11:03:45 -04:00
MagicBot f8b9c97730 Parsing conditions 2024-08-12 11:01:27 -04:00
MagicBot c7fa537cfb More effectmod parser work. 2024-08-12 10:50:00 -04:00
MagicBot e0e8296339 More effectmod parser work. 2024-08-12 10:47:37 -04:00
MagicBot e677ca9f33 More effectmod parser work. 2024-08-12 10:46:35 -04:00
MagicBot c19f6df690 More effectmod parser work. 2024-08-12 10:45:19 -04:00
MagicBot 3ed7f7c3fb More effectmod parser work. 2024-08-12 10:43:45 -04:00
MagicBot 6b10374adb More effectmod parser work. 2024-08-12 10:42:30 -04:00
MagicBot 0a65ea61e7 More effectmod parser work. 2024-08-12 10:41:11 -04:00
MagicBot 6500659c1f More effectmod parser work. 2024-08-12 10:39:46 -04:00
MagicBot 480887a78f More effectmod parser work. 2024-08-12 10:38:23 -04:00
MagicBot 05ac2d0a90 More effectmod parser work. 2024-08-12 10:36:55 -04:00
MagicBot bbac9ce6b9 More effectmod parser work. 2024-08-12 10:28:37 -04:00
MagicBot 5b9866f704 More effectmod parser work. 2024-08-12 10:26:49 -04:00
MagicBot 4a6e4d2a85 More effectmod parser work. 2024-08-12 10:25:10 -04:00
MagicBot b7ef3de527 More effectmod parser work. 2024-08-12 10:23:56 -04:00
MagicBot 4bfb866abe More effectmod parser work. 2024-08-12 10:22:19 -04:00
MagicBot 23d2b595d9 More effectmod parser work. 2024-08-12 10:21:37 -04:00
MagicBot 7d30fd2b96 More effectmod parser work. 2024-08-12 10:20:48 -04:00
MagicBot 93d5976c1e More effectmod parser work. 2024-08-12 10:19:20 -04:00
MagicBot 260bc453d1 More effectmod parser work. 2024-08-12 10:15:04 -04:00
MagicBot 5a619db9bd More effectmod parser work. 2024-08-12 10:12:28 -04:00
MagicBot d622406912 More effectmod parser work. 2024-08-12 10:09:54 -04:00
MagicBot a5e2b69ae3 More effectmod parser work. 2024-08-12 10:05:49 -04:00
MagicBot 56686944af More effectmod parser work. 2024-08-12 10:03:55 -04:00
MagicBot aa957f41af More effectmod parser work. 2024-08-12 10:02:24 -04:00
MagicBot 9336305334 More effectmod parser work. 2024-08-12 09:59:17 -04:00
MagicBot bc9c5224d0 More effectmod parser work. 2024-08-12 09:57:19 -04:00
MagicBot eda27b2e9c min/max are floats 2024-08-12 09:55:22 -04:00
MagicBot c5d6b382f8 More effectmod parser work. 2024-08-12 09:45:26 -04:00
MagicBot ae0d182e2e More effectmod parser work. 2024-08-12 09:40:43 -04:00
MagicBot ad78d152f7 More effectmod parser work. 2024-08-12 09:39:01 -04:00
MagicBot 000ccdaf0a More effectmod parser work. 2024-08-12 09:32:58 -04:00
MagicBot 57249727de More effectmod parser work. 2024-08-12 09:27:19 -04:00
MagicBot d6c49d0793 More effectmod parser work. 2024-08-12 09:25:17 -04:00
MagicBot 2fa58c4f38 More effectmod parser work. 2024-08-12 09:16:17 -04:00
MagicBot c361c2a78a More effectmod parser work. 2024-08-12 09:13:29 -04:00
MagicBot 4d862355be More effectmod parser work. 2024-08-12 09:09:44 -04:00
MagicBot 52028e0e97 More effectmod parser work. 2024-08-12 09:01:49 -04:00
MagicBot 3e4e13a8ae More effectmod parser work. 2024-08-12 09:00:59 -04:00
MagicBot 0ceea002d5 More effectmod parser work. 2024-08-12 08:52:24 -04:00
MagicBot 7d8f4049b9 More effectmod parser work. 2024-08-12 08:47:57 -04:00
MagicBot dbefaa7ead More effectmod parser work. 2024-08-12 08:45:42 -04:00
MagicBot 9c1ec1069f More effectmod parser work. 2024-08-12 08:14:52 -04:00
MagicBot f36c980eb9 More effectmod parser work. 2024-08-11 17:07:56 -04:00
MagicBot cb1a7f014d More effectmod parser work. 2024-08-11 12:48:56 -04:00
MagicBot e729bc9541 More effectmod parser work. 2024-08-11 12:44:54 -04:00
MagicBot c97a6f555a min/scale/slope for group of types 2024-08-11 12:01:18 -04:00
MagicBot 95a104e397 Effect Modifier parsing work. 2024-08-10 18:56:31 -04:00
MagicBot e7ad83cc60 Effect Modifier parsing work. 2024-08-10 18:55:26 -04:00
MagicBot 821b7264ec Effect Modifier parsing work. 2024-08-10 18:50:28 -04:00
MagicBot 0bf3456119 Effect Modifier parsing work. 2024-08-10 18:45:23 -04:00
MagicBot ff7bd7a699 Effect Modifier parsing work. 2024-08-10 18:33:08 -04:00
MagicBot a028bebafd Effect Modifier parsing work. 2024-08-10 18:27:17 -04:00
MagicBot 789d9a3bb6 Effect Modifier parsing work. 2024-08-10 18:23:40 -04:00
MagicBot 8e19b66a9b Effect Modifier parsing work. 2024-08-10 18:13:56 -04:00
MagicBot 975845375f Effect Modifier parsing work. 2024-08-10 18:13:15 -04:00
MagicBot 74b37063bf Effect Modifier parsing work. 2024-08-10 18:07:54 -04:00
MagicBot c2fee2290d Update to mods regex 2024-08-10 18:02:22 -04:00
MagicBot f7c8c44ebb EffectModifier parsing 2024-08-10 17:54:29 -04:00
MagicBot 91b2ff6e62 EffectModifier parsing 2024-08-10 16:30:43 -04:00
MagicBot 8293f552b1 EffectModifier parsing 2024-08-10 16:29:55 -04:00
MagicBot a84336fc31 Quotes stripped from names. 2024-08-10 16:18:33 -04:00
MagicBot 3951114eb7 Some entries have no icon 2024-08-08 13:14:21 -04:00
MagicBot f24877e9ce Some entries have no icon 2024-08-08 13:14:07 -04:00
MagicBot b81b83570a Some entries have no icon 2024-08-08 13:11:10 -04:00
MagicBot 2417073a4d Regex handles empty strings 2024-08-08 13:07:20 -04:00
MagicBot ebc0b7a89e Debugging 2024-08-08 13:02:01 -04:00
MagicBot 3d6bfcf48f Trim fields before adding to array 2024-08-08 12:57:03 -04:00
MagicBot a5864b74f8 Regex split update 2024-08-08 12:54:58 -04:00
MagicBot de8896ff4e Debugging 2024-08-08 12:29:01 -04:00
MagicBot e579912733 Debugging 2024-08-08 12:28:35 -04:00
MagicBot c7b4404c36 Regex used for strsplit 2024-08-08 12:19:53 -04:00
MagicBot f1de7d413a Hashset initialized 2024-08-08 11:59:10 -04:00
MagicBot cc6f5f5f25 Regex updated with lookahead 2024-08-08 11:56:31 -04:00
MagicBot 19bf75ade8 Regex updated 2024-08-08 11:47:45 -04:00
MagicBot 73eacc3779 Regex updated 2024-08-08 11:38:09 -04:00
MagicBot 69f3504ee9 Regex updated 2024-08-08 11:36:00 -04:00
MagicBot bd89b5e975 Assign result 2024-08-08 11:28:58 -04:00
MagicBot 186eea3099 Regex updated 2024-08-08 11:26:01 -04:00
MagicBot 5e0badef17 EffectModifier pojo work. 2024-08-08 11:21:39 -04:00
MagicBot ea24d493fd Parsing of effect description 2024-08-06 17:18:46 -04:00
MagicBot d12d040def Parsing of effect description 2024-08-06 17:17:57 -04:00
MagicBot 491a9dbae9 Sanitize input 2024-08-06 17:07:07 -04:00
MagicBot 1e0372c40d HashSets for starters. 2024-08-06 16:56:41 -04:00
MagicBot d2f6344846 Regex driven parsing. 2024-08-06 16:52:06 -04:00
FatBoy 47cb824b3f parsing multi worded names 2024-07-24 19:44:29 -05:00
FatBoy 7d8117173f parsing multi worded names 2024-07-24 19:38:28 -05:00
FatBoy 2f076d3215 parsing multi worded names 2024-07-24 19:33:42 -05:00
FatBoy 1a0b8c1d35 parsing multi worded names 2024-07-24 19:31:27 -05:00
FatBoy 887db109c1 parsing multi worded names 2024-07-24 19:31:00 -05:00
FatBoy d8b7f74cd1 attempt to parse 2 worded values 2024-07-24 19:23:18 -05:00
FatBoy b81b4f0e0a attempt to parse 2 worded values 2024-07-24 19:23:04 -05:00
FatBoy 0b4e0d65a9 attempt to parse 2 worded values 2024-07-24 19:14:15 -05:00
FatBoy 2f837ace1e attempt to parse 2 worded values 2024-07-24 19:13:07 -05:00
FatBoy 319d68d15e attempt to parse 2 worded values 2024-07-24 19:09:41 -05:00
FatBoy 2224d811eb attempt to parse 2 worded values 2024-07-24 19:08:41 -05:00
FatBoy 9ec97ce448 attempt to parse 2 worded values 2024-07-24 19:03:49 -05:00
FatBoy f13b8b5d3e attempt to parse 2 worded values 2024-07-24 18:56:29 -05:00
FatBoy 633f5837dc attempt to parse 2 worded values 2024-07-24 18:55:20 -05:00
FatBoy 3238cfa0ff attempt to parse 2 worded values 2024-07-24 18:54:01 -05:00
FatBoy 83b1503cee attempt to parse 2 worded values 2024-07-24 18:51:27 -05:00
MagicBot 6854fad222 Class cleanup 2024-07-24 12:56:24 -04:00
FatBoy 56dd3cfa95 Effects.cfg parser 2024-07-23 21:18:12 -05:00
FatBoy f81a1acb20 Effects.cfg parser 2024-07-23 21:15:37 -05:00
FatBoy 4ed5744707 Effects.cfg parser 2024-07-23 21:11:17 -05:00
FatBoy 085f2816a9 Effects.cfg parser 2024-07-23 21:09:01 -05:00
FatBoy 0526fdef2f Effects.cfg parser 2024-07-23 21:07:29 -05:00
FatBoy 093ee9f59a Effects.cfg parser 2024-07-23 21:02:41 -05:00
FatBoy 1d56b138a5 Effects.cfg parser 2024-07-23 20:57:40 -05:00
FatBoy 419ce3f49c Effects.cfg parser 2024-07-23 20:56:25 -05:00
FatBoy a27f257f80 Effects.cfg parser 2024-07-23 20:53:26 -05:00
FatBoy 8eee7ca23e Effects.cfg parser 2024-07-23 20:51:58 -05:00
FatBoy 28cf0d2232 Effects.cfg parser 2024-07-23 20:48:41 -05:00
FatBoy e12a8a3c7c Effects.cfg parser 2024-07-23 20:47:39 -05:00
MagicBot 9ad5f239b0 No modtable defaults to workorder. 2024-07-22 16:54:11 -04:00
MagicBot 3db8ee7afd Forge validation for modtables updated. 2024-07-22 16:37:27 -04:00
154 changed files with 3303 additions and 1492 deletions
@@ -1,303 +0,0 @@
// • ▌ ▄ ·. ▄▄▄· ▄▄ • ▪ ▄▄· ▄▄▄▄· ▄▄▄· ▐▄▄▄ ▄▄▄ .
// ·██ ▐███▪▐█ ▀█ ▐█ ▀ ▪██ ▐█ ▌▪▐█ ▀█▪▐█ ▀█ •█▌ ▐█▐▌·
// ▐█ ▌▐▌▐█·▄█▀▀█ ▄█ ▀█▄▐█·██ ▄▄▐█▀▀█▄▄█▀▀█ ▐█▐ ▐▌▐▀▀▀
// ██ ██▌▐█▌▐█ ▪▐▌▐█▄▪▐█▐█▌▐███▌██▄▪▐█▐█ ▪▐▌██▐ █▌▐█▄▄▌
// ▀▀ █▪▀▀▀ ▀ ▀ ·▀▀▀▀ ▀▀▀·▀▀▀ ·▀▀▀▀ ▀ ▀ ▀▀ █▪ ▀▀▀
// Magicbane Emulator Project © 2013 - 2022
// www.magicbane.com
package engine.db.handlers;
import engine.gameManager.DbManager;
import engine.gameManager.PowersManager;
import engine.mbEnums;
import engine.powers.EffectsBase;
import engine.powers.effectmodifiers.*;
import org.pmw.tinylog.Logger;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.HashSet;
public class dbEffectsBaseHandler extends dbHandlerBase {
public dbEffectsBaseHandler() {
}
public static ArrayList<EffectsBase> getAllEffectsBase() {
ArrayList<EffectsBase> effectList = new ArrayList<>();
try (Connection connection = DbManager.getConnection();
PreparedStatement prepareStatement = connection.prepareStatement("SELECT * FROM static_power_effectbase ORDER BY `IDString` DESC")) {
ResultSet rs = prepareStatement.executeQuery();
while (rs.next()) {
EffectsBase effectBase = new EffectsBase(rs);
effectList.add(effectBase);
}
} catch (SQLException e) {
Logger.error(e.toString());
}
return effectList;
}
public static void cacheAllEffectModifiers() {
String IDString;
AbstractEffectModifier abstractEffectModifier = null;
try (Connection connection = DbManager.getConnection();
PreparedStatement prepareStatement = connection.prepareStatement("SELECT * FROM static_power_effectmod")) {
ResultSet rs = prepareStatement.executeQuery();
while (rs.next()) {
IDString = rs.getString("IDString");
EffectsBase effectBase = PowersManager.getEffectByIDString(IDString);
mbEnums.ModType modifier = mbEnums.ModType.GetModType(rs.getString("modType"));
//combine item prefix and suffix effect modifiers
abstractEffectModifier = getCombinedModifiers(abstractEffectModifier, rs, effectBase, modifier);
if (abstractEffectModifier != null) {
if (EffectsBase.modifiersMap.containsKey(effectBase.getIDString()) == false)
EffectsBase.modifiersMap.put(effectBase.getIDString(), new HashSet<>());
EffectsBase.modifiersMap.get(effectBase.getIDString()).add(abstractEffectModifier);
}
}
} catch (Exception e) {
Logger.error(e);
}
}
private static AbstractEffectModifier getCombinedModifiers(AbstractEffectModifier abstractEffectModifier, ResultSet rs, EffectsBase effectBase, mbEnums.ModType modifier) throws SQLException {
switch (modifier) {
case AdjustAboveDmgCap:
abstractEffectModifier = new AdjustAboveDmgCapEffectModifier(rs);
break;
case Ambidexterity:
abstractEffectModifier = new AmbidexterityEffectModifier(rs);
break;
case AnimOverride:
break;
case ArmorPiercing:
abstractEffectModifier = new ArmorPiercingEffectModifier(rs);
break;
case AttackDelay:
abstractEffectModifier = new AttackDelayEffectModifier(rs);
break;
case Attr:
abstractEffectModifier = new AttributeEffectModifier(rs);
break;
case BlackMantle:
abstractEffectModifier = new BlackMantleEffectModifier(rs);
break;
case BladeTrails:
abstractEffectModifier = new BladeTrailsEffectModifier(rs);
break;
case Block:
abstractEffectModifier = new BlockEffectModifier(rs);
break;
case BlockedPowerType:
abstractEffectModifier = new BlockedPowerTypeEffectModifier(rs);
break;
case CannotAttack:
abstractEffectModifier = new CannotAttackEffectModifier(rs);
break;
case CannotCast:
abstractEffectModifier = new CannotCastEffectModifier(rs);
break;
case CannotMove:
abstractEffectModifier = new CannotMoveEffectModifier(rs);
break;
case CannotTrack:
abstractEffectModifier = new CannotTrackEffectModifier(rs);
break;
case Charmed:
abstractEffectModifier = new CharmedEffectModifier(rs);
break;
case ConstrainedAmbidexterity:
abstractEffectModifier = new ConstrainedAmbidexterityEffectModifier(rs);
break;
case DamageCap:
abstractEffectModifier = new DamageCapEffectModifier(rs);
break;
case DamageShield:
abstractEffectModifier = new DamageShieldEffectModifier(rs);
break;
case DCV:
abstractEffectModifier = new DCVEffectModifier(rs);
break;
case Dodge:
abstractEffectModifier = new DodgeEffectModifier(rs);
break;
case DR:
abstractEffectModifier = new DREffectModifier(rs);
break;
case Durability:
abstractEffectModifier = new DurabilityEffectModifier(rs);
break;
case ExclusiveDamageCap:
abstractEffectModifier = new ExclusiveDamageCapEffectModifier(rs);
break;
case Fade:
abstractEffectModifier = new FadeEffectModifier(rs);
break;
case Fly:
abstractEffectModifier = new FlyEffectModifier(rs);
break;
case Health:
abstractEffectModifier = new HealthEffectModifier(rs);
break;
case HealthFull:
abstractEffectModifier = new HealthFullEffectModifier(rs);
break;
case HealthRecoverRate:
abstractEffectModifier = new HealthRecoverRateEffectModifier(rs);
break;
case IgnoreDamageCap:
abstractEffectModifier = new IgnoreDamageCapEffectModifier(rs);
break;
case IgnorePassiveDefense:
abstractEffectModifier = new IgnorePassiveDefenseEffectModifier(rs);
break;
case ImmuneTo:
abstractEffectModifier = new ImmuneToEffectModifier(rs);
break;
case ImmuneToAttack:
abstractEffectModifier = new ImmuneToAttackEffectModifier(rs);
break;
case ImmuneToPowers:
abstractEffectModifier = new ImmuneToPowersEffectModifier(rs);
break;
case Invisible:
abstractEffectModifier = new InvisibleEffectModifier(rs);
break;
case ItemName:
abstractEffectModifier = new ItemNameEffectModifier(rs);
if (((ItemNameEffectModifier) abstractEffectModifier).name.isEmpty())
break;
if (effectBase != null)
effectBase.setName((((ItemNameEffectModifier) abstractEffectModifier).name));
break;
case Mana:
abstractEffectModifier = new ManaEffectModifier(rs);
break;
case ManaFull:
abstractEffectModifier = new ManaFullEffectModifier(rs);
break;
case ManaRecoverRate:
abstractEffectModifier = new ManaRecoverRateEffectModifier(rs);
break;
case MaxDamage:
abstractEffectModifier = new MaxDamageEffectModifier(rs);
break;
case MeleeDamageModifier:
abstractEffectModifier = new MeleeDamageEffectModifier(rs);
break;
case MinDamage:
abstractEffectModifier = new MinDamageEffectModifier(rs);
break;
case NoMod:
abstractEffectModifier = new NoModEffectModifier(rs);
break;
case OCV:
abstractEffectModifier = new OCVEffectModifier(rs);
break;
case Parry:
abstractEffectModifier = new ParryEffectModifier(rs);
break;
case PassiveDefense:
abstractEffectModifier = new PassiveDefenseEffectModifier(rs);
break;
case PowerCost:
abstractEffectModifier = new PowerCostEffectModifier(rs);
break;
case PowerCostHealth:
abstractEffectModifier = new PowerCostHealthEffectModifier(rs);
break;
case PowerDamageModifier:
abstractEffectModifier = new PowerDamageEffectModifier(rs);
break;
case ProtectionFrom:
abstractEffectModifier = new ProtectionFromEffectModifier(rs);
break;
case Resistance:
abstractEffectModifier = new ResistanceEffectModifier(rs);
break;
case ScaleHeight:
abstractEffectModifier = new ScaleHeightEffectModifier(rs);
break;
case ScaleWidth:
abstractEffectModifier = new ScaleWidthEffectModifier(rs);
break;
case ScanRange:
abstractEffectModifier = new ScanRangeEffectModifier(rs);
break;
case SeeInvisible:
abstractEffectModifier = new SeeInvisibleEffectModifier(rs);
break;
case Silenced:
abstractEffectModifier = new SilencedEffectModifier(rs);
break;
case Skill:
abstractEffectModifier = new SkillEffectModifier(rs);
break;
case Slay:
abstractEffectModifier = new SlayEffectModifier(rs);
break;
case Speed:
abstractEffectModifier = new SpeedEffectModifier(rs);
break;
case SpireBlock:
abstractEffectModifier = new SpireBlockEffectModifier(rs);
break;
case Stamina:
abstractEffectModifier = new StaminaEffectModifier(rs);
break;
case StaminaFull:
abstractEffectModifier = new StaminaFullEffectModifier(rs);
break;
case StaminaRecoverRate:
abstractEffectModifier = new StaminaRecoverRateEffectModifier(rs);
break;
case Stunned:
abstractEffectModifier = new StunnedEffectModifier(rs);
break;
case Value:
abstractEffectModifier = new ValueEffectModifier(rs);
if (effectBase != null) {
ValueEffectModifier valueEffect = (ValueEffectModifier) abstractEffectModifier;
effectBase.setValue(valueEffect.minMod);
}
break;
case WeaponProc:
abstractEffectModifier = new WeaponProcEffectModifier(rs);
break;
case WeaponRange:
abstractEffectModifier = new WeaponRangeEffectModifier(rs);
break;
case WeaponSpeed:
abstractEffectModifier = new WeaponSpeedEffectModifier(rs);
break;
}
return abstractEffectModifier;
}
}
-16
View File
@@ -221,20 +221,4 @@ public class dbLootHandler extends dbHandlerBase {
return bootySets;
}
public void LOAD_ENCHANT_VALUES() {
try (Connection connection = DbManager.getConnection();
PreparedStatement preparedStatement = connection.prepareStatement("SELECT `IDString`, `minMod` FROM `static_power_effectmod` WHERE `modType` = ?")) {
preparedStatement.setString(1, "Value");
ResultSet rs = preparedStatement.executeQuery();
while (rs.next())
Item.addEnchantValue(rs.getString("IDString"), rs.getInt("minMod"));
} catch (SQLException e) {
Logger.error(e);
}
}
}
@@ -1,82 +0,0 @@
// • ▌ ▄ ·. ▄▄▄· ▄▄ • ▪ ▄▄· ▄▄▄▄· ▄▄▄· ▐▄▄▄ ▄▄▄ .
// ·██ ▐███▪▐█ ▀█ ▐█ ▀ ▪██ ▐█ ▌▪▐█ ▀█▪▐█ ▀█ •█▌ ▐█▐▌·
// ▐█ ▌▐▌▐█·▄█▀▀█ ▄█ ▀█▄▐█·██ ▄▄▐█▀▀█▄▄█▀▀█ ▐█▐ ▐▌▐▀▀▀
// ██ ██▌▐█▌▐█ ▪▐▌▐█▄▪▐█▐█▌▐███▌██▄▪▐█▐█ ▪▐▌██▐ █▌▐█▄▄▌
// ▀▀ █▪▀▀▀ ▀ ▀ ·▀▀▀▀ ▀▀▀·▀▀▀ ·▀▀▀▀ ▀ ▀ ▀▀ █▪ ▀▀▀
// Magicbane Emulator Project © 2013 - 2022
// www.magicbane.com
package engine.db.handlers;
import engine.gameManager.DbManager;
import engine.gameManager.PowersManager;
import engine.mbEnums;
import engine.objects.Mob;
import engine.powers.EffectsBase;
import org.pmw.tinylog.Logger;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.HashSet;
public class dbPowerHandler extends dbHandlerBase {
public dbPowerHandler() {
this.localClass = Mob.class;
this.localObjectType = mbEnums.GameObjectType.valueOf(this.localClass.getSimpleName());
}
public static void addAllSourceTypes() {
try (Connection connection = DbManager.getConnection();
PreparedStatement preparedStatement = connection.prepareStatement("SELECT * FROM static_power_sourcetype")) {
ResultSet rs = preparedStatement.executeQuery();
String IDString, source;
while (rs.next()) {
IDString = rs.getString("IDString");
int token = DbManager.hasher.SBStringHash(IDString);
source = rs.getString("source").replace("-", "").trim();
mbEnums.EffectSourceType effectSourceType = mbEnums.EffectSourceType.getEffectSourceType(source);
if (EffectsBase.effectSourceTypeMap.containsKey(token) == false)
EffectsBase.effectSourceTypeMap.put(token, new HashSet<>());
EffectsBase.effectSourceTypeMap.get(token).add(effectSourceType);
}
} catch (Exception e) {
Logger.error(e);
}
}
public static void addAllAnimationOverrides() {
try (Connection connection = DbManager.getConnection();
PreparedStatement preparedStatement = connection.prepareStatement("SELECT * FROM static_power_animation_override")) {
ResultSet rs = preparedStatement.executeQuery();
String IDString;
int animation;
while (rs.next()) {
IDString = rs.getString("IDString");
EffectsBase eb = PowersManager.getEffectByIDString(IDString);
if (eb != null)
IDString = eb.getIDString();
animation = rs.getInt("animation");
PowersManager.AnimationOverrides.put(IDString, animation);
}
} catch (Exception e) {
Logger.error(e);
}
}
}
+1 -1
View File
@@ -798,7 +798,7 @@ public enum BuildingManager {
// Attempt to write to database or delete the building
// if we are destroying it.
if (rank == -1)
if (rank < 0)
success = DbManager.BuildingQueries.DELETE_FROM_DATABASE(building);
else
success = DbManager.BuildingQueries.updateBuildingRank(building, rank);
+2 -2
View File
@@ -13,9 +13,9 @@ import engine.InterestManagement.WorldGrid;
import engine.db.archive.BaneRecord;
import engine.db.archive.PvpRecord;
import engine.mbEnums;
import engine.mbEnums.EffectSourceType;
import engine.mbEnums.GameObjectType;
import engine.mbEnums.ModType;
import engine.mbEnums.SourceType;
import engine.net.Dispatch;
import engine.net.MessageDispatcher;
import engine.net.client.ClientConnection;
@@ -94,7 +94,7 @@ public enum ChatManager {
PlayerBonuses bonus = pc.getBonuses();
if (bonus != null && bonus.getBool(ModType.Silenced, EffectSourceType.None)) {
if (bonus != null && bonus.getBool(ModType.Silenced, SourceType.None)) {
ChatManager.chatSayError(pc, SILENCED);
return true;
}
+7 -7
View File
@@ -67,7 +67,7 @@ public enum CombatManager {
case PlayerCharacter:
case Mob:
PlayerBonuses bonuses = ((AbstractCharacter) target).getBonuses();
if (bonuses != null && bonuses.getBool(mbEnums.ModType.ImmuneToAttack, mbEnums.EffectSourceType.None))
if (bonuses != null && bonuses.getBool(mbEnums.ModType.ImmuneToAttack, mbEnums.SourceType.None))
return;
break;
case NPC:
@@ -143,7 +143,7 @@ public enum CombatManager {
if (weapon != null) {
if (bonus != null)
rangeMod += bonus.getFloatPercentAll(mbEnums.ModType.WeaponRange, mbEnums.EffectSourceType.None);
rangeMod += bonus.getFloatPercentAll(mbEnums.ModType.WeaponRange, mbEnums.SourceType.None);
attackRange += weapon.template.item_weapon_max_range * rangeMod;
}
@@ -204,11 +204,11 @@ public enum CombatManager {
float wepSpeed = (int) (weapon.template.item_weapon_wepspeed);
if (weapon.getBonusPercent(mbEnums.ModType.WeaponSpeed, mbEnums.EffectSourceType.None) != 0f) //add weapon speed bonus
wepSpeed *= (1 + weapon.getBonus(mbEnums.ModType.WeaponSpeed, mbEnums.EffectSourceType.None));
if (weapon.getBonusPercent(mbEnums.ModType.WeaponSpeed, mbEnums.SourceType.None) != 0f) //add weapon speed bonus
wepSpeed *= (1 + weapon.getBonus(mbEnums.ModType.WeaponSpeed, mbEnums.SourceType.None));
if (attacker.getBonuses() != null && attacker.getBonuses().getFloatPercentAll(mbEnums.ModType.AttackDelay, mbEnums.EffectSourceType.None) != 0f) //add effects speed bonus
wepSpeed *= (1 + attacker.getBonuses().getFloatPercentAll(mbEnums.ModType.AttackDelay, mbEnums.EffectSourceType.None));
if (attacker.getBonuses() != null && attacker.getBonuses().getFloatPercentAll(mbEnums.ModType.AttackDelay, mbEnums.SourceType.None) != 0f) //add effects speed bonus
wepSpeed *= (1 + attacker.getBonuses().getFloatPercentAll(mbEnums.ModType.AttackDelay, mbEnums.SourceType.None));
if (wepSpeed < 10)
wepSpeed = 10; //Old was 10, but it can be reached lower with legit buffs,effects.
@@ -641,7 +641,7 @@ public enum CombatManager {
float damage;
float min = 40;
float max = 60;
float dmgMultiplier = 1 + agent.getBonuses().getFloatPercentAll(mbEnums.ModType.MeleeDamageModifier, mbEnums.EffectSourceType.None);
float dmgMultiplier = 1 + agent.getBonuses().getFloatPercentAll(mbEnums.ModType.MeleeDamageModifier, mbEnums.SourceType.None);
double minDmg = getMinDmg(min, agent);
double maxDmg = getMaxDmg(max, agent);
dmgMultiplier += agent.getLevel() * 0.1f;
+10
View File
@@ -11,6 +11,9 @@ package engine.gameManager;
import engine.mbEnums;
import engine.server.login.LoginServer;
import engine.server.world.WorldServer;
import engine.wpak.EffectsParser;
import engine.wpak.PowerActionParser;
import engine.wpak.PowersParser;
import org.pmw.tinylog.Logger;
import java.io.BufferedReader;
@@ -164,6 +167,13 @@ public enum ConfigManager {
Logger.info("Compiling regex");
regex.put(MB_LOGIN_FNAME_REGEX, Pattern.compile(MB_LOGIN_FNAME_REGEX.getValue()));
Logger.info("Loading WPAK data");
//EffectsParser.parseWpakFile();
//PowersParser.parseWpakFile();
//PowerActionParser.parseWpakFile();
return true;
}
-2
View File
@@ -69,8 +69,6 @@ public enum DbManager {
public static final dbBlueprintHandler BlueprintQueries = new dbBlueprintHandler();
public static final dbShrineHandler ShrineQueries = new dbShrineHandler();
public static final dbRunegateHandler RunegateQueries = new dbRunegateHandler();
public static final dbPowerHandler PowerQueries = new dbPowerHandler();
public static final dbPetitionHandler PetitionQueries = new dbPetitionHandler();
private static final EnumMap<GameObjectType, ConcurrentHashMap<Integer, AbstractGameObject>> objectCache = new EnumMap<>(GameObjectType.class);
public static Hasher hasher;
+2 -2
View File
@@ -265,12 +265,12 @@ public enum ForgeManager implements Runnable {
// Assign a prefix and suffix to this item if random rolled
if (workOrder.prefixToken == 0)
if (workOrder.prefixToken == 0 && workOrder.vendor.getItemModTable().contains((template.modTable)))
forgedItem.prefixToken = calcRandomMod(workOrder.vendor, mbEnums.ItemModType.PREFIX, template.modTable);
else
forgedItem.prefixToken = workOrder.prefixToken;
if (workOrder.suffixToken == 0)
if (workOrder.suffixToken == 0 && workOrder.vendor.getItemModTable().contains((template.modTable)))
forgedItem.suffixToken = calcRandomMod(workOrder.vendor, mbEnums.ItemModType.SUFFIX, template.modTable);
else
forgedItem.suffixToken = workOrder.suffixToken;
+3 -3
View File
@@ -14,9 +14,9 @@ import engine.math.Vector3f;
import engine.math.Vector3fImmutable;
import engine.mbEnums;
import engine.mbEnums.DispatchChannel;
import engine.mbEnums.EffectSourceType;
import engine.mbEnums.GameObjectType;
import engine.mbEnums.ModType;
import engine.mbEnums.SourceType;
import engine.net.client.ClientConnection;
import engine.net.client.msg.MoveToPointMsg;
import engine.net.client.msg.TeleportToPointMsg;
@@ -74,7 +74,7 @@ public enum MovementManager {
toMove.setIsCasting(false);
toMove.setItemCasting(false);
if (toMove.getBonuses().getBool(ModType.Stunned, EffectSourceType.None) || toMove.getBonuses().getBool(ModType.CannotMove, EffectSourceType.None)) {
if (toMove.getBonuses().getBool(ModType.Stunned, SourceType.None) || toMove.getBonuses().getBool(ModType.CannotMove, SourceType.None)) {
return;
}
@@ -390,7 +390,7 @@ public enum MovementManager {
//don't move if player is stunned or rooted
PlayerBonuses bonus = member.getBonuses();
if (bonus.getBool(ModType.Stunned, EffectSourceType.None) || bonus.getBool(ModType.CannotMove, EffectSourceType.None))
if (bonus.getBool(ModType.Stunned, SourceType.None) || bonus.getBool(ModType.CannotMove, SourceType.None))
continue;
member.update();
+159 -49
View File
@@ -10,8 +10,6 @@ package engine.gameManager;
import engine.InterestManagement.Terrain;
import engine.InterestManagement.WorldGrid;
import engine.db.handlers.dbEffectsBaseHandler;
import engine.db.handlers.dbPowerHandler;
import engine.db.handlers.dbSkillReqHandler;
import engine.job.AbstractJob;
import engine.job.AbstractScheduleJob;
@@ -29,8 +27,14 @@ import engine.net.client.ClientConnection;
import engine.net.client.msg.*;
import engine.objects.*;
import engine.powers.*;
import engine.powers.poweractions.AbstractPowerAction;
import engine.powers.poweractions.*;
import engine.server.MBServerStatics;
import engine.wpak.EffectsParser;
import engine.wpak.PowerActionParser;
import engine.wpak.PowersParser;
import engine.wpak.WpakPowerManager;
import engine.wpak.data.Effect;
import engine.wpak.data.PowerAction;
import org.pmw.tinylog.Logger;
import java.util.ArrayList;
@@ -53,7 +57,6 @@ public enum PowersManager {
public static HashMap<String, AbstractPowerAction> powerActionsByIDString = new HashMap<>();
public static HashMap<Integer, AbstractPowerAction> powerActionsByID = new HashMap<>();
public static HashMap<String, Integer> ActionTokenByIDString = new HashMap<>();
public static HashMap<String, Integer> AnimationOverrides = new HashMap<>();
public static HashMap<Integer, ArrayList<RunePowerEntry>> _allRunePowers;
public static HashMap<Integer, ArrayList<RuneSkillAdjustEntry>> _allRuneSkillAdjusts;
public static HashMap<String, HashMap<ResourceType, Integer>> _effect_costMaps = new HashMap<>();
@@ -112,33 +115,150 @@ public enum PowersManager {
return powerEntries;
}
// This pre-loads all powers and effects
public static void InitializePowers() {
public static void InitializeEffects(){
// Add EffectsBase
ArrayList<EffectsBase> ebList = dbEffectsBaseHandler.getAllEffectsBase();
ArrayList<EffectsBase> effectList = new ArrayList<>();
for (EffectsBase eb : ebList) {
PowersManager.effectsBaseByToken.put(eb.getToken(), eb);
PowersManager.effectsBaseByIDString.put(eb.getIDString(), eb);
for (Effect entry : WpakPowerManager.effect_data.values()) {
EffectsBase effectBase = new EffectsBase(entry);
effectList.add(effectBase);
PowersManager.effectsBaseByToken.put(effectBase.getToken(), effectBase);
PowersManager.effectsBaseByIDString.put(effectBase.getIDString(), effectBase);
}
}
// Add Fail Conditions
EffectsBase.getFailConditions(PowersManager.effectsBaseByIDString);
// Add Modifiers to Effects
dbEffectsBaseHandler.cacheAllEffectModifiers();
// Add Source Types to Effects
dbPowerHandler.addAllSourceTypes();
dbPowerHandler.addAllAnimationOverrides();
public static void InitializePowerActions(){
// Add PowerActions
AbstractPowerAction.getAllPowerActions(PowersManager.powerActionsByIDString, PowersManager.powerActionsByID, PowersManager.effectsBaseByIDString);
//AbstractPowerAction.getAllPowerActions(PowersManager.powerActionsByIDString, PowersManager.powerActionsByID, PowersManager.effectsBaseByIDString);
// Load valid Item Flags
// AbstractPowerAction.loadValidItemFlags(PowersManager.powerActionsByIDString);
HashMap<String, EffectsBase> effects = PowersManager.effectsBaseByIDString;
for (PowerAction powerAction : WpakPowerManager.power_actions.values()) {
AbstractPowerAction apa;
String type = powerAction.action_type;
String IDString = powerAction.action_id;
int token = DbManager.hasher.SBStringHash(IDString);
//cache token, used for applying effects.
PowersManager.ActionTokenByIDString.put(IDString, token);
apa = null;
switch (type) {
default:
Logger.error("valid type not found for poweraction of ID" + IDString);
break;
case "ApplyEffect":
apa = new ApplyEffectPowerAction(powerAction, effects);
break;
case "ApplyEffects":
apa = new ApplyEffectsPowerAction(powerAction, effects);
break;
case "DeferredPower":
apa = new DeferredPowerPowerAction(powerAction, effects);
break;
case "DamageOverTime":
apa = new DamageOverTimePowerAction(powerAction, effects);
break;
case "Peek":
apa = new PeekPowerAction(powerAction);
break;
case "Charm":
apa = new CharmPowerAction(powerAction);
break;
case "Fear":
apa = new FearPowerAction(powerAction);
break;
case "Confusion":
apa = new ConfusionPowerAction(powerAction);
break;
case "RemoveEffect":
apa = new RemoveEffectPowerAction(powerAction);
break;
case "Track":
apa = new TrackPowerAction(powerAction, effects);
break;
case "DirectDamage":
apa = new DirectDamagePowerAction(powerAction, effects);
break;
case "Transform":
apa = new TransformPowerAction(powerAction, effects);
break;
case "CreateMob":
apa = new CreateMobPowerAction(powerAction);
break;
case "Invis":
apa = new InvisPowerAction(powerAction, effects);
break;
case "ClearNearbyAggro":
apa = new ClearNearbyAggroPowerAction(powerAction);
break;
case "MobRecall":
apa = new MobRecallPowerAction(powerAction);
break;
case "SetItemFlag":
apa = new SetItemFlagPowerAction(powerAction);
break;
case "SimpleDamage":
apa = new SimpleDamagePowerAction(powerAction);
break;
case "TransferStatOT":
apa = new TransferStatOTPowerAction(powerAction, effects);
break;
case "TransferStat":
apa = new TransferStatPowerAction(powerAction, effects);
break;
case "Teleport":
apa = new TeleportPowerAction(powerAction);
break;
case "TreeChoke":
apa = new TreeChokePowerAction(powerAction);
break;
case "Block":
apa = new BlockPowerAction(powerAction);
break;
case "Resurrect":
apa = new ResurrectPowerAction(powerAction);
break;
case "ClearAggro":
apa = new ClearAggroPowerAction(powerAction);
break;
case "ClaimMine":
apa = new ClaimMinePowerAction(powerAction);
break;
case "Recall":
apa = new RecallPowerAction(powerAction);
break;
case "SpireDisable":
apa = new SpireDisablePowerAction(powerAction);
break;
case "Steal":
apa = new StealPowerAction(powerAction);
break;
case "Summon":
apa = new SummonPowerAction(powerAction);
break;
case "RunegateTeleport":
apa = new RunegateTeleportPowerAction(powerAction);
break;
case "OpenGate":
apa = new OpenGatePowerAction(powerAction);
break;
}
PowersManager.powerActionsByIDString.put(IDString, apa);
}
}
// This pre-loads all powers and effects
public static void InitializePowers() {
EffectsParser.parseWpakFile();
PowersParser.parseWpakFile();
PowerActionParser.parseWpakFile();
//Initialize Effects Data
InitializeEffects();
//Initialize Power Actions
InitializePowerActions();
// get all PowersBase
ArrayList<PowersBase> pbList = dbSkillReqHandler.getAllPowersBase();
@@ -159,16 +279,6 @@ public enum PowersManager {
}
public static EffectsBase setEffectToken(int ID, int token) {
for (EffectsBase eb : PowersManager.effectsBaseByIDString.values()) {
if (eb.getUUID() == ID) {
eb.setToken(token);
return eb;
}
}
return null;
}
public static void usePower(final PerformActionMsg msg, ClientConnection origin,
boolean sendCastToSelf) {
@@ -348,8 +458,8 @@ public enum PowersManager {
// verify player is not stunned or prohibited from casting
PlayerBonuses bonus = playerCharacter.getBonuses();
EffectSourceType sourceType = EffectSourceType.getEffectSourceType(pb.getCategory());
if (bonus != null && (bonus.getBool(ModType.Stunned, EffectSourceType.None) || bonus.getBool(ModType.CannotCast, EffectSourceType.None) || bonus.getBool(ModType.BlockedPowerType, sourceType)))
SourceType sourceType = SourceType.GetSourceType(pb.getCategory());
if (bonus != null && (bonus.getBool(ModType.Stunned, SourceType.None) || bonus.getBool(ModType.CannotCast, SourceType.None) || bonus.getBool(ModType.BlockedPowerType, sourceType)))
return true;
// if moving make sure spell valid for movement
@@ -485,7 +595,7 @@ public enum PowersManager {
cost = 0;
if (bonus != null)
cost *= (1 + bonus.getFloatPercentAll(ModType.PowerCost, EffectSourceType.None));
cost *= (1 + bonus.getFloatPercentAll(ModType.PowerCost, SourceType.None));
if (playerCharacter.getAltitude() > 0)
cost *= 1.5f;
@@ -631,8 +741,8 @@ public enum PowersManager {
// verify player is in correct mode (combat/nonCombat)
// verify player is not stunned or prohibited from casting
PlayerBonuses bonus = caster.getBonuses();
EffectSourceType sourceType = EffectSourceType.getEffectSourceType(pb.getCategory());
if (bonus != null && (bonus.getBool(ModType.Stunned, EffectSourceType.None) || bonus.getBool(ModType.CannotCast, EffectSourceType.None) || bonus.getBool(ModType.BlockedPowerType, sourceType)))
SourceType sourceType = SourceType.GetSourceType(pb.getCategory());
if (bonus != null && (bonus.getBool(ModType.Stunned, SourceType.None) || bonus.getBool(ModType.CannotCast, SourceType.None) || bonus.getBool(ModType.BlockedPowerType, sourceType)))
return true;
// if moving make sure spell valid for movement
@@ -792,10 +902,10 @@ public enum PowersManager {
PlayerBonuses bonus = playerCharacter.getBonuses();
if (bonus != null) {
if (bonus.getBool(ModType.Stunned, EffectSourceType.None))
if (bonus.getBool(ModType.Stunned, SourceType.None))
return;
EffectSourceType sourceType = EffectSourceType.getEffectSourceType(pb.getCategory());
SourceType sourceType = SourceType.GetSourceType(pb.getCategory());
if (bonus.getBool(ModType.BlockedPowerType, sourceType)) {
finishRecycleTime(msg.getPowerUsedID(), playerCharacter, true);
return;
@@ -957,7 +1067,7 @@ public enum PowersManager {
// if (!stackType.equals("IgnoreStack")) {
if (target.getEffects().containsKey(stackType)) {
// remove any existing power that overrides
Effect ef = target.getEffects().get(stackType);
engine.objects.Effect ef = target.getEffects().get(stackType);
AbstractEffectJob effect = null;
if (ef != null) {
JobContainer jc = ef.getJobContainer();
@@ -1065,9 +1175,9 @@ public enum PowersManager {
// verify player is not stunned or power type is blocked
PlayerBonuses bonus = caster.getBonuses();
if (bonus != null) {
if (bonus.getBool(ModType.Stunned, EffectSourceType.None))
if (bonus.getBool(ModType.Stunned, SourceType.None))
return;
EffectSourceType sourceType = EffectSourceType.getEffectSourceType(pb.getCategory());
SourceType sourceType = SourceType.GetSourceType(pb.getCategory());
if (bonus.getBool(ModType.BlockedPowerType, sourceType))
return;
}
@@ -1129,7 +1239,7 @@ public enum PowersManager {
// if (!stackType.equals("IgnoreStack")) {
if (target.getEffects().containsKey(stackType)) {
// remove any existing power that overrides
Effect ef = target.getEffects().get(stackType);
engine.objects.Effect ef = target.getEffects().get(stackType);
AbstractEffectJob effect = null;
if (ef != null) {
JobContainer jc = ef.getJobContainer();
@@ -1443,7 +1553,7 @@ public enum PowersManager {
stackType = (stackType.equals("IgnoreStack")) ? Integer.toString(ab.getUUID()) : stackType;
if (target.getEffects().containsKey(stackType)) {
// remove any existing power that overrides
Effect ef = target.getEffects().get(stackType);
engine.objects.Effect ef = target.getEffects().get(stackType);
AbstractEffectJob effect = null;
if (ef != null) {
JobContainer jc = ef.getJobContainer();
@@ -1700,7 +1810,7 @@ public enum PowersManager {
PlayerCharacter pcc = (PlayerCharacter) awo;
PlayerBonuses bonuses = pcc.getBonuses();
if (bonuses != null && bonuses.getBool(ModType.ImmuneToPowers, EffectSourceType.None)) {
if (bonuses != null && bonuses.getBool(ModType.ImmuneToPowers, SourceType.None)) {
awolist.remove();
continue;
}
@@ -1850,7 +1960,7 @@ public enum PowersManager {
// Remove players who are in safe mode
PlayerCharacter pcc = (PlayerCharacter) awo;
PlayerBonuses bonuses = pcc.getBonuses();
if (bonuses != null && bonuses.getBool(ModType.ImmuneToPowers, EffectSourceType.None)) {
if (bonuses != null && bonuses.getBool(ModType.ImmuneToPowers, SourceType.None)) {
awolist.remove();
continue;
}
@@ -1890,7 +2000,7 @@ public enum PowersManager {
stackType = (stackType.equals("IgnoreStack")) ? Integer
.toString(toRemove.getUUID()) : stackType;
if (fromChant) {
Effect eff = awo.getEffects().get(stackType);
engine.objects.Effect eff = awo.getEffects().get(stackType);
if (eff != null)
eff.cancelJob(true);
} else
+2 -2
View File
@@ -11,9 +11,9 @@ package engine.jobs;
import engine.gameManager.PowersManager;
import engine.gameManager.SessionManager;
import engine.mbEnums.EffectSourceType;
import engine.mbEnums.GameObjectType;
import engine.mbEnums.ModType;
import engine.mbEnums.SourceType;
import engine.objects.AbstractCharacter;
import engine.objects.AbstractWorldObject;
import engine.objects.PlayerBonuses;
@@ -52,7 +52,7 @@ public class ChantJob extends AbstractEffectJob {
PowersManager.finishEffectTime(this.source, this.target, this.action, this.trains);
if (AbstractWorldObject.IsAbstractCharacter(source))
((AbstractCharacter) source).cancelLastChant();
} else if (bonuses != null && bonuses.getBool(ModType.Silenced, EffectSourceType.None)) {
} else if (bonuses != null && bonuses.getBool(ModType.Silenced, SourceType.None)) {
PowersManager.finishEffectTime(this.source, this.target, this.action, this.trains);
if (AbstractWorldObject.IsAbstractCharacter(source))
((AbstractCharacter) source).cancelLastChant();
+2 -2
View File
@@ -12,8 +12,8 @@ package engine.jobs;
import engine.gameManager.PowersManager;
import engine.job.AbstractScheduleJob;
import engine.job.JobContainer;
import engine.mbEnums.EffectSourceType;
import engine.mbEnums.ModType;
import engine.mbEnums.SourceType;
import engine.net.client.msg.ErrorPopupMsg;
import engine.objects.PlayerCharacter;
@@ -55,7 +55,7 @@ public class FinishSummonsJob extends AbstractScheduleJob {
return;
}
if (this.target.getBonuses() != null && this.target.getBonuses().getBool(ModType.BlockedPowerType, EffectSourceType.Summon)) {
if (this.target.getBonuses() != null && this.target.getBonuses().getBool(ModType.BlockedPowerType, SourceType.SUMMON)) {
ErrorPopupMsg.sendErrorMsg(this.target, "You have been blocked from receiving summons!");
ErrorPopupMsg.sendErrorMsg(this.source, "Target is blocked from receiving summons!");
return;
+1
View File
@@ -14,6 +14,7 @@ import engine.job.AbstractScheduleJob;
import engine.net.client.msg.PerformActionMsg;
import engine.objects.PlayerCharacter;
import engine.powers.PowersBase;
import engine.wpak.data.Power;
public class UsePowerJob extends AbstractScheduleJob {
+44
View File
@@ -0,0 +1,44 @@
// ·. · · · · .
// · ·
// · ·
//
// · · ·
// Magicbane Emulator Project © 2013 - 2022
// www.magicbane.com
package engine.jobs;
import engine.gameManager.PowersManager;
import engine.job.AbstractScheduleJob;
import engine.net.client.msg.PerformActionMsg;
import engine.objects.AbstractWorldObject;
import engine.objects.PlayerCharacter;
import engine.powers.PowersBase;
import engine.wpak.WpakPowerManager;
import engine.wpak.data.Power;
public class WpakUsePowerJob extends AbstractScheduleJob {
private final PlayerCharacter pc;
private final PerformActionMsg msg;
private AbstractWorldObject target;
public WpakUsePowerJob(PlayerCharacter pc, PerformActionMsg msg, AbstractWorldObject tar) {
super();
this.pc = pc;
this.msg = msg;
this.target = tar;
}
@Override
protected void doJob() {
WpakPowerManager.finishUsePower(this.msg, this.pc,this.target);
}
@Override
protected void _cancelJob() {
//cast stopped early, reset recycle timer
PowersManager.finishRecycleTime(this.msg, this.pc, true);
}
}
+2 -1
View File
@@ -135,7 +135,8 @@ public class WorkOrder implements Delayed {
if (!workOrder.vendor.charItemManager.hasRoomInventory(template.item_wt))
return 30; //30: That person cannot carry that item
if (!workOrder.vendor.getItemModTable().contains((template.modTable)))
if ((workOrder.prefixToken != 0 || workOrder.suffixToken != 0) &&
!workOrder.vendor.getItemModTable().contains((template.modTable)))
return 59; //59: This hireling does not have this formula
if (!Warehouse.calcCostOverrun(workOrder).isEmpty())
+229 -2
View File
@@ -861,6 +861,176 @@ public class mbEnums {
}
}
public enum SourceType {
None,
Abjuration,
Acid,
AntiSiege,
Archery,
Axe,
Bardsong,
Beastcraft,
Benediction,
BladeWeaving,
Bleeding,
Blind,
Block,
Bloodcraft,
Bow,
Buff,
Channeling,
Charm,
Cold,
COLD,
Constitution,
Corruption,
Crossbow,
Crushing,
Dagger,
DaggerMastery,
DeBuff,
Dexterity,
Disease,
Dodge,
Dragon,
Drain,
Earth,
Effect,
Exorcism,
Fear,
Fire,
FIRE,
Fly,
Giant,
GreatAxeMastery,
GreatSwordMastery,
Hammer,
Heal,
Healing,
Holy,
HOLY,
ImmuneToAttack,
ImmuneToPowers,
Intelligence,
Invisible,
Lightning,
LIGHTNING,
Liturgy,
Magic,
MAGIC,
Mental,
MENTAL,
NatureLore,
Necromancy,
Parry,
Piercing,
Poison,
POISON,
PoleArm,
Powerblock,
Rat,
ResistDeBuff,
Restoration,
Root,
Shadowmastery,
Siege,
Slashing,
Snare,
Sorcery,
Spear,
SpearMastery,
Spirit,
Staff,
Stormcalling,
Strength,
Stun,
Summon,
Sword,
SwordMastery,
Thaumaturgy,
Theurgy,
Transform,
UnarmedCombat,
UnarmedCombatMastery,
Unholy,
UNHOLY,
Unknown,
Warding,
Warlockry,
WayoftheGaana,
WearArmorHeavy,
WearArmorLight,
WearArmorMedium,
Wereform,
Athletics,
AxeMastery,
Bargaining,
BladeMastery,
FlameCalling,
GreatHammerMastery,
HammerMastery,
Leadership,
PoleArmMastery,
Running,
StaffMastery,
Throwing,
Toughness,
WayoftheWolf,
WayoftheRat,
WayoftheBear,
Orthanatos,
SunDancing,
//Power categories.
AE,
AEDAMAGE,
BEHAVIOR,
BLESSING,
BOONCLASS,
BOONRACE,
BREAKFLY,
BUFF,
CHANT,
DAMAGE,
DEBUFF,
DISPEL,
FLIGHT,
GROUPBUFF,
GROUPHEAL,
HEAL,
INVIS,
MOVE,
RECALL,
SPECIAL,
SPIREDISABLE,
SPIREPROOFTELEPORT,
STANCE,
STUN,
SUMMON,
TELEPORT,
THIEF,
TRACK,
TRANSFORM,
VAMPDRAIN,
WEAPON,
Wizardry;
public static SourceType GetSourceType(String modName) {
SourceType returnMod;
if (modName.isEmpty())
return SourceType.None;
try {
returnMod = SourceType.valueOf(modName.replace(",", ""));
} catch (Exception e) {
Logger.error(modName);
Logger.error(e);
return SourceType.None;
}
return returnMod;
}
}
public enum EffectSourceType {
None,
AttackSpeedBuff,
@@ -920,7 +1090,7 @@ public class mbEnums {
WereformSPRecBuff,
WereformStrBuff;
public static EffectSourceType getEffectSourceType(String modName) {
public static EffectSourceType GetEffectSourceType(String modName) {
EffectSourceType returnMod;
if (modName.isEmpty())
return EffectSourceType.None;
@@ -2562,7 +2732,7 @@ public class mbEnums {
DIAMOND(1580010, 1540225085, -1730704107, 2000, 20),
GALVOR(1580017, -1683992404, -1596311545, 2000, 5),
IRON(1580002, -1673518119, 2504297, 2000, 20),
LUMBER(1580004, 1628412684, -1603256692, 10000, 100),
LUMBER(1580004, -1628412684, -1603256692, 10000, 100),
MANDRAKE(1580007, 1519910613, 1191391799, 1000, 10),
MITHRIL(1580021, 626743397, -1761257186, 500, 5),
OAK(1580005, -1653034775, 74767, 3000, 30),
@@ -2852,5 +3022,62 @@ public class mbEnums {
PREFIX,
SUFFIX;
}
public enum PowerType {
None,
SPELL,
SKILL;
}
public enum CostType {
NONE,
HEALTH,
MANA,
STAMINA;
}
public enum AreaType {
NONE,
SPHERE,
POINTBLANK,
LINE,
CONE,
WALL;
}
public enum ExcludeType {
NONE,
CASTER,
GROUP,
GUILD,
NATION,
PLAYERS,
ALLBUTGROUP,
ALLBUTPETS;
}
public enum CastingModeType {
NONE,
COMBAT,
NONCOMBAT,
BOTH;
}
public enum TargetSelectType {
NONE,
CLICK,
GROUP,
GUILD,
NEARBYMOBS,
NAME;
}
public enum CategoryToPowerType {
None,
GreaterThanOrEqualTo,
GreaterThan,
Always
}
}
+1 -1
View File
@@ -938,7 +938,7 @@ public class MobAI {
if (mob.isSit() && mob.getTimeStamp("HEALTHRECOVERED") < System.currentTimeMillis() + 3000)
if (mob.getHealth() < mob.getHealthMax()) {
float recoveredHealth = mob.getHealthMax() * ((1 + mob.getBonuses().getFloatPercentAll(mbEnums.ModType.HealthRecoverRate, mbEnums.EffectSourceType.None)) * 0.01f);
float recoveredHealth = mob.getHealthMax() * ((1 + mob.getBonuses().getFloatPercentAll(mbEnums.ModType.HealthRecoverRate, mbEnums.SourceType.None)) * 0.01f);
mob.setHealth(mob.getHealth() + recoveredHealth);
mob.getTimestamps().put("HEALTHRECOVERED", System.currentTimeMillis());
@@ -12,9 +12,9 @@ package engine.mobileAI.utilities;
import engine.gameManager.MovementManager;
import engine.math.Vector3fImmutable;
import engine.mbEnums;
import engine.mbEnums.EffectSourceType;
import engine.mbEnums.GameObjectType;
import engine.mbEnums.ModType;
import engine.mbEnums.SourceType;
import engine.mobileAI.Threads.MobAIThread;
import engine.net.client.msg.MoveToPointMsg;
import engine.objects.*;
@@ -169,7 +169,7 @@ public class MovementUtilities {
if (agent.getMobBase() != null && agent.getMobBase().getFlags().contains(mbEnums.MobFlagType.SENTINEL))
return false;
return (agent.isAlive() && !agent.getBonuses().getBool(ModType.Stunned, EffectSourceType.None) && !agent.getBonuses().getBool(ModType.CannotMove, EffectSourceType.None));
return (agent.isAlive() && !agent.getBonuses().getBool(ModType.Stunned, SourceType.None) && !agent.getBonuses().getBool(ModType.CannotMove, SourceType.None));
}
public static Vector3fImmutable randomPatrolLocation(Mob agent, Vector3fImmutable center, float radius) {
@@ -58,7 +58,7 @@ public class RecvSummonsMsgHandler extends AbstractClientMsgHandler {
return true;
}
if (playerCharacter.getBonuses() != null && playerCharacter.getBonuses().getBool(mbEnums.ModType.BlockedPowerType, mbEnums.EffectSourceType.Summon)) {
if (playerCharacter.getBonuses() != null && playerCharacter.getBonuses().getBool(mbEnums.ModType.BlockedPowerType, mbEnums.SourceType.SUMMON)) {
ErrorPopupMsg.sendErrorMsg(playerCharacter, "You have been blocked from receiving summons!");
ErrorPopupMsg.sendErrorMsg(source, "Target is blocked from receiving summons!");
playerCharacter.removeSummoner(source.getObjectUUID());
@@ -89,7 +89,7 @@ public class RepairMsgHandler extends AbstractClientMsgHandler {
//account for durability modifications
float durMod = toRepair.getBonusPercent(mbEnums.ModType.Durability, mbEnums.EffectSourceType.None);
float durMod = toRepair.getBonusPercent(mbEnums.ModType.Durability, mbEnums.SourceType.None);
max *= (1 + (durMod * 0.01f));
if (dur >= max || dur < 1) {
@@ -86,15 +86,15 @@ public class TrackWindowMsgHandler extends AbstractClientMsgHandler {
if (ablist == null)
return true;
TrackPowerAction tpa = null;
TrackPowerAction trackPowerAction = null;
for (ActionsBase ab : ablist) {
AbstractPowerAction apa = ab.getPowerAction();
if (apa != null && apa instanceof TrackPowerAction)
tpa = (TrackPowerAction) apa;
trackPowerAction = (TrackPowerAction) apa;
}
if (tpa == null)
if (trackPowerAction == null)
return true;
// Check powers for normal users
@@ -111,16 +111,16 @@ public class TrackWindowMsgHandler extends AbstractClientMsgHandler {
int mask = 0;
if (pb.targetPlayer())
if (tpa.trackVampire()) // track vampires
if (trackPowerAction.powerAction.trackEntry.filter.equals(mbEnums.MonsterType.Vampire)) // track vampires
mask = MBServerStatics.MASK_PLAYER | MBServerStatics.MASK_UNDEAD;
else
// track all players
mask = MBServerStatics.MASK_PLAYER;
else if (pb.targetCorpse()) // track corpses
mask = MBServerStatics.MASK_CORPSE;
else if (tpa.trackNPC()) // Track NPCs
else if (trackPowerAction.powerAction.trackEntry.filter.equals(mbEnums.MonsterType.NPC)) // Track NPCs
mask = MBServerStatics.MASK_NPC;
else if (tpa.trackUndead()) // Track Undead
else if (trackPowerAction.powerAction.trackEntry.filter.equals(mbEnums.MonsterType.Undead)) // Track Undead
mask = MBServerStatics.MASK_MOB | MBServerStatics.MASK_UNDEAD;
else
// Track All
@@ -148,7 +148,7 @@ public class TrackWindowMsgHandler extends AbstractClientMsgHandler {
else if (awo.getObjectType().equals(mbEnums.GameObjectType.PlayerCharacter)) {
PlayerBonuses bonus = ((PlayerCharacter) awo).getBonuses();
if (bonus != null && bonus.getBool(mbEnums.ModType.CannotTrack, mbEnums.EffectSourceType.None))
if (bonus != null && bonus.getBool(mbEnums.ModType.CannotTrack, mbEnums.SourceType.None))
it.remove();
}
}
+30 -30
View File
@@ -527,7 +527,7 @@ public abstract class AbstractCharacter extends AbstractWorldObject {
boolean canFly = false;
PlayerBonuses bonus = flyer.getBonuses();
if (bonus != null && !bonus.getBool(ModType.NoMod, EffectSourceType.Flight) && bonus.getBool(ModType.Fly, EffectSourceType.None) && flyer.isAlive())
if (bonus != null && !bonus.getBool(ModType.NoMod, SourceType.Fly) && bonus.getBool(ModType.Fly, SourceType.None) && flyer.isAlive())
canFly = true;
return canFly;
@@ -613,10 +613,10 @@ public abstract class AbstractCharacter extends AbstractWorldObject {
if (abstractCharacter.bonuses != null) {
// add any bonuses
defense += (short) abstractCharacter.bonuses.getFloat(ModType.DCV, EffectSourceType.None);
defense += (short) abstractCharacter.bonuses.getFloat(ModType.DCV, SourceType.None);
// Finally multiply any percent modifiers. DO THIS LAST!
float pos_Bonus = abstractCharacter.bonuses.getFloatPercentPositive(ModType.DCV, EffectSourceType.None);
float pos_Bonus = abstractCharacter.bonuses.getFloatPercentPositive(ModType.DCV, SourceType.None);
defense = (short) (defense * (1 + pos_Bonus));
//Lucky rune applies next
@@ -625,7 +625,7 @@ public abstract class AbstractCharacter extends AbstractWorldObject {
//and negative percent modifiers
//already done...
float neg_Bonus = abstractCharacter.bonuses.getFloatPercentNegative(ModType.DCV, EffectSourceType.None);
float neg_Bonus = abstractCharacter.bonuses.getFloatPercentNegative(ModType.DCV, SourceType.None);
defense = (short) (defense * (1 + neg_Bonus));
} else
@@ -728,7 +728,7 @@ public abstract class AbstractCharacter extends AbstractWorldObject {
abstractCharacter.rangeHandTwo = weapon.template.item_weapon_max_range * (1 + (abstractCharacter.statStrBase / 600));
if (abstractCharacter.bonuses != null) {
float range_bonus = 1 + abstractCharacter.bonuses.getFloatPercentAll(ModType.WeaponRange, EffectSourceType.None);
float range_bonus = 1 + abstractCharacter.bonuses.getFloatPercentAll(ModType.WeaponRange, SourceType.None);
if (mainHand)
abstractCharacter.rangeHandOne *= range_bonus;
@@ -772,10 +772,10 @@ public abstract class AbstractCharacter extends AbstractWorldObject {
// add in any bonuses to atr
if (abstractCharacter.bonuses != null) {
// Add any base bonuses
atr += abstractCharacter.bonuses.getFloat(ModType.OCV, EffectSourceType.None);
atr += abstractCharacter.bonuses.getFloat(ModType.OCV, SourceType.None);
// Finally use any multipliers. DO THIS LAST!
float pos_Bonus = (1 + abstractCharacter.bonuses.getFloatPercentPositive(ModType.OCV, EffectSourceType.None));
float pos_Bonus = (1 + abstractCharacter.bonuses.getFloatPercentPositive(ModType.OCV, SourceType.None));
atr *= pos_Bonus;
// next precise
@@ -783,7 +783,7 @@ public abstract class AbstractCharacter extends AbstractWorldObject {
// atr *= (1 + ((float) this.bonuses.getShort("rune.Attack") / 100));
//and negative percent modifiers
float neg_Bonus = abstractCharacter.bonuses.getFloatPercentNegative(ModType.OCV, EffectSourceType.None);
float neg_Bonus = abstractCharacter.bonuses.getFloatPercentNegative(ModType.OCV, SourceType.None);
atr *= (1 + neg_Bonus);
}
@@ -803,7 +803,7 @@ public abstract class AbstractCharacter extends AbstractWorldObject {
else
speed = 20f; //unarmed attack speed
if (weapon != null)
speed *= (1 + abstractCharacter.bonuses.getFloatPercentAll(ModType.WeaponSpeed, EffectSourceType.None));
speed *= (1 + abstractCharacter.bonuses.getFloatPercentAll(ModType.WeaponSpeed, SourceType.None));
PlayerBonuses bonuses = abstractCharacter.bonuses;
if (bonuses != null) {
@@ -823,7 +823,7 @@ public abstract class AbstractCharacter extends AbstractWorldObject {
speed *= (1 + bonuses.bonusFloats.get(mod));
}
}
//speed *= (1 + abstractCharacter.bonuses.getFloatPercentAll(ModType.AttackDelay, EffectSourceType.None));
//speed *= (1 + abstractCharacter.bonuses.getFloatPercentAll(ModType.AttackDelay, SourceType.None));
if (speed < 10)
speed = 10;
@@ -832,22 +832,22 @@ public abstract class AbstractCharacter extends AbstractWorldObject {
if (weapon != null) {
// Add any base bonuses
min += weapon.getBonus(ModType.MinDamage, EffectSourceType.None);
max += weapon.getBonus(ModType.MaxDamage, EffectSourceType.None);
min += weapon.getBonus(ModType.MinDamage, SourceType.None);
max += weapon.getBonus(ModType.MaxDamage, SourceType.None);
min += weapon.getBonus(ModType.MeleeDamageModifier, EffectSourceType.None);
max += weapon.getBonus(ModType.MeleeDamageModifier, EffectSourceType.None);
min += weapon.getBonus(ModType.MeleeDamageModifier, SourceType.None);
max += weapon.getBonus(ModType.MeleeDamageModifier, SourceType.None);
// Finally use any multipliers. DO THIS LAST!
float percentMinDamage = 1;
float percentMaxDamage = 1;
percentMinDamage += weapon.getBonusPercent(ModType.MinDamage, EffectSourceType.None);
percentMinDamage += weapon.getBonusPercent(ModType.MeleeDamageModifier, EffectSourceType.None);
percentMinDamage += weapon.getBonusPercent(ModType.MinDamage, SourceType.None);
percentMinDamage += weapon.getBonusPercent(ModType.MeleeDamageModifier, SourceType.None);
percentMaxDamage += weapon.getBonusPercent(ModType.MaxDamage, EffectSourceType.None);
percentMaxDamage += weapon.getBonusPercent(ModType.MeleeDamageModifier, EffectSourceType.None);
percentMaxDamage += weapon.getBonusPercent(ModType.MaxDamage, SourceType.None);
percentMaxDamage += weapon.getBonusPercent(ModType.MeleeDamageModifier, SourceType.None);
min *= percentMinDamage;
@@ -884,21 +884,21 @@ public abstract class AbstractCharacter extends AbstractWorldObject {
// add in any bonuses to damage
if (abstractCharacter.bonuses != null) {
// Add any base bonuses
minDamage += abstractCharacter.bonuses.getFloat(ModType.MinDamage, EffectSourceType.None);
maxDamage += abstractCharacter.bonuses.getFloat(ModType.MaxDamage, EffectSourceType.None);
minDamage += abstractCharacter.bonuses.getFloat(ModType.MinDamage, SourceType.None);
maxDamage += abstractCharacter.bonuses.getFloat(ModType.MaxDamage, SourceType.None);
minDamage += abstractCharacter.bonuses.getFloat(ModType.MeleeDamageModifier, EffectSourceType.None);
maxDamage += abstractCharacter.bonuses.getFloat(ModType.MeleeDamageModifier, EffectSourceType.None);
minDamage += abstractCharacter.bonuses.getFloat(ModType.MeleeDamageModifier, SourceType.None);
maxDamage += abstractCharacter.bonuses.getFloat(ModType.MeleeDamageModifier, SourceType.None);
// Finally use any multipliers. DO THIS LAST!
float percentMinDamage = 1;
float percentMaxDamage = 1;
percentMinDamage += abstractCharacter.bonuses.getFloatPercentAll(ModType.MinDamage, EffectSourceType.None);
percentMinDamage += abstractCharacter.bonuses.getFloatPercentAll(ModType.MeleeDamageModifier, EffectSourceType.None);
percentMinDamage += abstractCharacter.bonuses.getFloatPercentAll(ModType.MinDamage, SourceType.None);
percentMinDamage += abstractCharacter.bonuses.getFloatPercentAll(ModType.MeleeDamageModifier, SourceType.None);
percentMaxDamage += abstractCharacter.bonuses.getFloatPercentAll(ModType.MaxDamage, EffectSourceType.None);
percentMaxDamage += abstractCharacter.bonuses.getFloatPercentAll(ModType.MeleeDamageModifier, EffectSourceType.None);
percentMaxDamage += abstractCharacter.bonuses.getFloatPercentAll(ModType.MaxDamage, SourceType.None);
percentMaxDamage += abstractCharacter.bonuses.getFloatPercentAll(ModType.MeleeDamageModifier, SourceType.None);
minDamage *= percentMinDamage;
maxDamage *= percentMaxDamage;
@@ -947,8 +947,8 @@ public abstract class AbstractCharacter extends AbstractWorldObject {
//apply item defense bonuses
if (shield != null) {
def += shield.getBonus(ModType.DR, EffectSourceType.None);
def *= (1 + shield.getBonusPercent(ModType.DR, EffectSourceType.None));
def += shield.getBonus(ModType.DR, SourceType.None);
def *= (1 + shield.getBonusPercent(ModType.DR, SourceType.None));
}
@@ -991,8 +991,8 @@ public abstract class AbstractCharacter extends AbstractWorldObject {
//apply item defense bonuses
if (armor != null) {
def += armor.getBonus(ModType.DR, EffectSourceType.None);
def *= (1 + armor.getBonusPercent(ModType.DR, EffectSourceType.None));
def += armor.getBonus(ModType.DR, SourceType.None);
def *= (1 + armor.getBonusPercent(ModType.DR, SourceType.None));
}
return (def * (1 + ((int) armorSkill.getModifiedAmount() / 50f)));
@@ -14,9 +14,9 @@ import engine.gameManager.DispatchManager;
import engine.gameManager.ZoneManager;
import engine.math.Vector3fImmutable;
import engine.mbEnums;
import engine.mbEnums.EffectSourceType;
import engine.mbEnums.GameObjectType;
import engine.mbEnums.ModType;
import engine.mbEnums.SourceType;
import engine.mobileAI.Threads.MobAIThread;
import engine.net.Dispatch;
import engine.net.client.msg.PetMsg;
@@ -141,7 +141,7 @@ public abstract class AbstractIntelligenceAgent extends AbstractCharacter {
float ret = MobAIThread.AI_BASE_AGGRO_RANGE;
if (this.bonuses != null)
ret *= (1 + this.bonuses.getFloatPercentAll(ModType.ScanRange, EffectSourceType.None));
ret *= (1 + this.bonuses.getFloatPercentAll(ModType.ScanRange, SourceType.None));
return ret;
}
+1 -1
View File
@@ -375,7 +375,7 @@ public abstract class AbstractWorldObject extends AbstractGameObject {
if (eff == null) {
continue;
}
if (eff.containsSource(source) && trains >= eff.getTrains()) {
if (eff.getEffectsBase().effectSources.contains(source) && trains >= eff.getTrains()) {
if (removeAll) {
//remove all effects of source type
if (eff.cancel()) {
+1 -1
View File
@@ -561,7 +561,7 @@ public class Building extends AbstractWorldObject {
BuildingManager.setRank(barracksBuilding, -1);
}
// If the tree is R8 and deranking, we need to update it's
// If the tree is R8 and deranking, we need to update the
// mesh along with buildings losing their health bonus
if (this.rank == 8) {
+7 -7
View File
@@ -11,8 +11,8 @@ package engine.objects;
import engine.gameManager.DbManager;
import engine.mbEnums;
import engine.mbEnums.EffectSourceType;
import engine.mbEnums.ModType;
import engine.mbEnums.SourceType;
import engine.net.ByteBufferWriter;
import engine.server.MBServerStatics;
import org.pmw.tinylog.Logger;
@@ -306,12 +306,12 @@ public class CharacterSkill extends AbstractGameObject {
PlayerBonuses bonus = ac.getBonuses();
if (bonus == null)
return atr;
atr += bonus.getFloat(ModType.OCV, EffectSourceType.None);
float pos_Bonus = bonus.getFloatPercentPositive(ModType.OCV, EffectSourceType.None);
atr += bonus.getFloat(ModType.OCV, SourceType.None);
float pos_Bonus = bonus.getFloatPercentPositive(ModType.OCV, SourceType.None);
atr *= (1 + pos_Bonus);
//rUNES will already be applied
// atr *= (1 + ((float)bonus.getShort("rune.Attack") / 100)); //precise
float neg_Bonus = bonus.getFloatPercentNegative(ModType.OCV, EffectSourceType.None);
float neg_Bonus = bonus.getFloatPercentNegative(ModType.OCV, SourceType.None);
atr *= (1 + neg_Bonus);
return atr;
}
@@ -462,7 +462,7 @@ public class CharacterSkill extends AbstractGameObject {
}
float bonus = 0f;
EffectSourceType sourceType = EffectSourceType.getEffectSourceType(sb.getNameNoSpace());
SourceType sourceType = SourceType.GetSourceType(sb.getNameNoSpace());
if (pc.getBonuses() != null) {
//Get bonuses from runes
bonus = pc.getBonuses().getSkillBonus(sb.sourceType);
@@ -1103,7 +1103,7 @@ public class CharacterSkill extends AbstractGameObject {
statMod = 600f;
}
base += CharacterSkill.baseSkillValues[(int) statMod];
EffectSourceType sourceType = EffectSourceType.getEffectSourceType(this.skillsBase.getNameNoSpace());
SourceType sourceType = SourceType.GetSourceType(this.skillsBase.getNameNoSpace());
//Get any rune, effect and item bonus
@@ -1217,7 +1217,7 @@ public class CharacterSkill extends AbstractGameObject {
return 0;
float bonus = 0f;
EffectSourceType sourceType = EffectSourceType.getEffectSourceType(this.skillsBase.getNameNoSpace());
SourceType sourceType = SourceType.GetSourceType(this.skillsBase.getNameNoSpace());
if (CharacterSkill.GetOwner(this).getBonuses() != null) {
//Get bonuses from runes
bonus = CharacterSkill.GetOwner(this).getBonuses().getSkillBonus(this.skillsBase.sourceType);
+23 -2
View File
@@ -41,6 +41,7 @@ import java.util.HashSet;
import java.util.Iterator;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ThreadLocalRandom;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.concurrent.locks.ReentrantReadWriteLock;
public class City extends AbstractWorldObject {
@@ -80,6 +81,7 @@ public class City extends AbstractWorldObject {
private String hash;
public Warehouse warehouse;
public Realm realm;
public AtomicBoolean isDestroyed = new AtomicBoolean(false);
/**
* ResultSet Constructor
@@ -306,6 +308,21 @@ public class City extends AbstractWorldObject {
if (city.parentZone == null)
continue;
// Can't teleport to something without a tree
if (city.getTOL() == null)
continue;
// No abandoned cities
if (city.getTOL().getGuild().isEmptyGuild())
continue;
// No destroyed cities
if (city.getTOL().getRank() == -1)
continue;
//can't repledge to a guild you're already part of
if (repledge && city.getGuild().equals(playerCharacter.guild))
@@ -1102,17 +1119,21 @@ public class City extends AbstractWorldObject {
public final void destroy() {
if (this.isDestroyed.compareAndSet(false, true)) {
Thread destroyCityThread = new Thread(new DestroyCityThread(this));
destroyCityThread.setName("destroyCity:" + this.getName());
destroyCityThread.setName("destroyCity:" + this.getParent().zoneName);
destroyCityThread.start();
} else
Logger.error("Attempt to destroy destroyed city");
}
public final void transfer(AbstractCharacter newOwner) {
Thread transferCityThread = new Thread(new TransferCityThread(this, newOwner));
transferCityThread.setName("TransferCity:" + this.getName());
transferCityThread.setName("TransferCity:" + this.getParent().zoneName);
transferCityThread.start();
}
-6
View File
@@ -433,12 +433,6 @@ public class Effect {
return duration;
}
public boolean containsSource(EffectSourceType source) {
if (this.eb != null)
return this.eb.containsSource(source);
return false;
}
public JobContainer getJobContainer() {
return this.jc;
}
+2 -2
View File
@@ -694,7 +694,7 @@ public class Item extends AbstractWorldObject {
this.bonuses.clear();
}
public float getBonus(ModType modType, EffectSourceType sourceType) {
public float getBonus(ModType modType, SourceType sourceType) {
int amount = 0;
for (AbstractEffectModifier modifier : this.getBonuses().keySet()) {
@@ -707,7 +707,7 @@ public class Item extends AbstractWorldObject {
return amount;
}
public float getBonusPercent(ModType modType, EffectSourceType sourceType) {
public float getBonusPercent(ModType modType, SourceType sourceType) {
int amount = 0;
for (AbstractEffectModifier modifier : this.getBonuses().keySet()) {
+1 -2
View File
@@ -220,8 +220,7 @@ public class Mine extends AbstractGameObject {
// Only inactive mines are returned.
for (Mine mine : Mine.mineMap.keySet()) {
if (mine.owningGuild.getObjectUUID() == guildID &&
mine.isActive == false)
if (mine.owningGuild.getObjectUUID() == guildID)
mineList.add(mine);
}
return mineList;
+18 -18
View File
@@ -708,19 +708,19 @@ public class Mob extends AbstractIntelligenceAgent implements Delayed {
// TODO modify for equipment
if (this.bonuses != null) {
// modify for effects
strVal += this.bonuses.getFloat(ModType.Attr, EffectSourceType.Strength);
dexVal += this.bonuses.getFloat(ModType.Attr, EffectSourceType.Dexterity);
conVal += this.bonuses.getFloat(ModType.Attr, EffectSourceType.Constitution);
intVal += this.bonuses.getFloat(ModType.Attr, EffectSourceType.Intelligence);
spiVal += this.bonuses.getFloat(ModType.Attr, EffectSourceType.Spirit);
strVal += this.bonuses.getFloat(ModType.Attr, SourceType.Strength);
dexVal += this.bonuses.getFloat(ModType.Attr, SourceType.Dexterity);
conVal += this.bonuses.getFloat(ModType.Attr, SourceType.Constitution);
intVal += this.bonuses.getFloat(ModType.Attr, SourceType.Intelligence);
spiVal += this.bonuses.getFloat(ModType.Attr, SourceType.Spirit);
// apply dex penalty for armor
// modify percent amounts. DO THIS LAST!
strVal *= (1 + this.bonuses.getFloatPercentAll(ModType.Attr, EffectSourceType.Strength));
dexVal *= (1 + this.bonuses.getFloatPercentAll(ModType.Attr, EffectSourceType.Dexterity));
conVal *= (1 + this.bonuses.getFloatPercentAll(ModType.Attr, EffectSourceType.Constitution));
intVal *= (1 + this.bonuses.getFloatPercentAll(ModType.Attr, EffectSourceType.Intelligence));
spiVal *= (1 + this.bonuses.getFloatPercentAll(ModType.Attr, EffectSourceType.Spirit));
strVal *= (1 + this.bonuses.getFloatPercentAll(ModType.Attr, SourceType.Strength));
dexVal *= (1 + this.bonuses.getFloatPercentAll(ModType.Attr, SourceType.Dexterity));
conVal *= (1 + this.bonuses.getFloatPercentAll(ModType.Attr, SourceType.Constitution));
intVal *= (1 + this.bonuses.getFloatPercentAll(ModType.Attr, SourceType.Intelligence));
spiVal *= (1 + this.bonuses.getFloatPercentAll(ModType.Attr, SourceType.Spirit));
}
// Set current stats
@@ -737,7 +737,7 @@ public class Mob extends AbstractIntelligenceAgent implements Delayed {
float bonus = 1;
if (this.bonuses != null)
// get rune and effect bonuses
bonus *= (1 + this.bonuses.getFloatPercentAll(ModType.Speed, EffectSourceType.None));
bonus *= (1 + this.bonuses.getFloatPercentAll(ModType.Speed, SourceType.None));
if (this.isPlayerGuard())
switch (this.mobBase.getLoadID()) {
@@ -834,7 +834,7 @@ public class Mob extends AbstractIntelligenceAgent implements Delayed {
if (!this.isMoving())
return;
if (this.isAlive() == false || this.getBonuses().getBool(ModType.Stunned, EffectSourceType.None) || this.getBonuses().getBool(ModType.CannotMove, EffectSourceType.None)) {
if (this.isAlive() == false || this.getBonuses().getBool(ModType.Stunned, SourceType.None) || this.getBonuses().getBool(ModType.CannotMove, SourceType.None)) {
//Target is stunned or rooted. Don't move
this.stopMovement(this.getMovementLoc());
@@ -1070,15 +1070,15 @@ public class Mob extends AbstractIntelligenceAgent implements Delayed {
// Apply any bonuses from runes and effects
if (this.bonuses != null) {
h += this.bonuses.getFloat(ModType.HealthFull, EffectSourceType.None);
m += this.bonuses.getFloat(ModType.ManaFull, EffectSourceType.None);
s += this.bonuses.getFloat(ModType.StaminaFull, EffectSourceType.None);
h += this.bonuses.getFloat(ModType.HealthFull, SourceType.None);
m += this.bonuses.getFloat(ModType.ManaFull, SourceType.None);
s += this.bonuses.getFloat(ModType.StaminaFull, SourceType.None);
//apply effects percent modifiers. DO THIS LAST!
h *= (1 + this.bonuses.getFloatPercentAll(ModType.HealthFull, EffectSourceType.None));
m *= (1 + this.bonuses.getFloatPercentAll(ModType.ManaFull, EffectSourceType.None));
s *= (1 + this.bonuses.getFloatPercentAll(ModType.StaminaFull, EffectSourceType.None));
h *= (1 + this.bonuses.getFloatPercentAll(ModType.HealthFull, SourceType.None));
m *= (1 + this.bonuses.getFloatPercentAll(ModType.ManaFull, SourceType.None));
s *= (1 + this.bonuses.getFloatPercentAll(ModType.StaminaFull, SourceType.None));
}
// Set max health, mana and stamina
+21 -21
View File
@@ -13,8 +13,8 @@ import engine.gameManager.ChatManager;
import engine.gameManager.ConfigManager;
import engine.gameManager.PowersManager;
import engine.mbEnums;
import engine.mbEnums.EffectSourceType;
import engine.mbEnums.ModType;
import engine.mbEnums.SourceType;
import engine.powers.DamageShield;
import engine.powers.EffectsBase;
import engine.powers.effectmodifiers.AbstractEffectModifier;
@@ -30,9 +30,9 @@ public class PlayerBonuses {
ConcurrentHashMap<AbstractEffectModifier, Float> bonusFloats = new ConcurrentHashMap<>();
private ConcurrentHashMap<AbstractEffectModifier, DamageShield> bonusDamageShields = new ConcurrentHashMap<>();
private ConcurrentHashMap<AbstractEffectModifier, String> bonusStrings = new ConcurrentHashMap<>();
private ConcurrentHashMap<ModType, HashSet<EffectSourceType>> bonusLists = new ConcurrentHashMap<>();
private ConcurrentHashMap<ModType, HashMap<EffectSourceType, Boolean>> bonusBools = new ConcurrentHashMap<>();
private ConcurrentHashMap<EffectSourceType, Float> skillBonuses = new ConcurrentHashMap<>();
private ConcurrentHashMap<ModType, HashSet<SourceType>> bonusLists = new ConcurrentHashMap<>();
private ConcurrentHashMap<ModType, HashMap<SourceType, Boolean>> bonusBools = new ConcurrentHashMap<>();
private ConcurrentHashMap<SourceType, Float> skillBonuses = new ConcurrentHashMap<>();
private ConcurrentHashMap<ModType, Float> regens = new ConcurrentHashMap<>();
//If active == 0 then all gets come from the A list and all puts go to the B list
@@ -229,7 +229,7 @@ public class PlayerBonuses {
//Update seeInvis if needed
float seeInvis = this.getFloat(ModType.SeeInvisible, EffectSourceType.None);
float seeInvis = this.getFloat(ModType.SeeInvisible, SourceType.None);
if (pc.getSeeInvis() < seeInvis)
pc.setSeeInvis((short) seeInvis);
@@ -254,7 +254,7 @@ public class PlayerBonuses {
this.bonusStrings.remove(mod);
}
public void setList(ModType mod, HashSet<EffectSourceType> val) {
public void setList(ModType mod, HashSet<SourceType> val) {
if (!val.equals(null))
this.bonusLists.put(mod, val);
else
@@ -281,7 +281,7 @@ public class PlayerBonuses {
}
public boolean getBool(ModType modType, EffectSourceType sourceType) {
public boolean getBool(ModType modType, SourceType sourceType) {
if (this.bonusBools.containsKey(modType) == false)
return false;
@@ -293,7 +293,7 @@ public class PlayerBonuses {
}
public float getSkillBonus(EffectSourceType sourceType) {
public float getSkillBonus(SourceType sourceType) {
if (this.skillBonuses.containsKey(sourceType) == false)
return 0;
@@ -301,7 +301,7 @@ public class PlayerBonuses {
}
public float getFloat(ModType modType, EffectSourceType sourceType) {
public float getFloat(ModType modType, SourceType sourceType) {
float amount = 0;
for (AbstractEffectModifier mod : this.bonusFloats.keySet()) {
if (mod.getPercentMod() != 0)
@@ -317,7 +317,7 @@ public class PlayerBonuses {
return amount;
}
public float getFloatPercentPositive(ModType modType, EffectSourceType sourceType) {
public float getFloatPercentPositive(ModType modType, SourceType sourceType) {
float amount = 0;
for (AbstractEffectModifier mod : this.bonusFloats.keySet()) {
@@ -340,7 +340,7 @@ public class PlayerBonuses {
return amount;
}
public float getFloatPercentAll(ModType modType, EffectSourceType sourceType) {
public float getFloatPercentAll(ModType modType, SourceType sourceType) {
float amount = 0;
for (AbstractEffectModifier mod : this.bonusFloats.keySet()) {
@@ -365,7 +365,7 @@ public class PlayerBonuses {
}
public float getFloatPercentNullZero(ModType modType, EffectSourceType sourceType) {
public float getFloatPercentNullZero(ModType modType, SourceType sourceType) {
float amount = 0;
for (AbstractEffectModifier mod : this.bonusFloats.keySet()) {
@@ -382,7 +382,7 @@ public class PlayerBonuses {
return amount;
}
public float getFloatPercentNegative(ModType modType, EffectSourceType sourceType) {
public float getFloatPercentNegative(ModType modType, SourceType sourceType) {
float amount = 0;
for (AbstractEffectModifier mod : this.bonusFloats.keySet()) {
@@ -404,7 +404,7 @@ public class PlayerBonuses {
}
public HashSet<EffectSourceType> getList(ModType modType) {
public HashSet<SourceType> getList(ModType modType) {
if (this.bonusLists.containsKey(modType))
return this.bonusLists.get(modType);
else
@@ -442,7 +442,7 @@ public class PlayerBonuses {
for (ModType modType : this.bonusBools.keySet()) {
for (EffectSourceType sourceType : this.bonusBools.get(modType).keySet()) {
for (SourceType sourceType : this.bonusBools.get(modType).keySet()) {
ChatManager.chatSystemInfo(pc, modType.name() + "-" + sourceType.name() + " = " + this.bonusBools.get(modType).get(sourceType));
}
}
@@ -452,19 +452,19 @@ public class PlayerBonuses {
if (modType.equals(ModType.StaminaRecoverRate) || modType.equals(ModType.HealthRecoverRate) || modType.equals(ModType.ManaRecoverRate))
ChatManager.chatSystemInfo(pc, modType.name() + " = " + this.getRegen(modType));
else
for (EffectSourceType sourceType : EffectSourceType.values()) {
for (SourceType sourceType : SourceType.values()) {
float amount = this.getFloat(modType, sourceType);
float percentAmount = this.getFloatPercentPositive(modType, sourceType);
float percentAmountNegative = this.getFloatPercentNegative(modType, sourceType);
if (amount != 0)
ChatManager.chatSystemInfo(pc, modType.name() + "-" + (sourceType.equals(EffectSourceType.None) == false ? sourceType.name() : "") + " = " + amount);
ChatManager.chatSystemInfo(pc, modType.name() + "-" + (sourceType.equals(SourceType.None) == false ? sourceType.name() : "") + " = " + amount);
if (percentAmount != 0)
ChatManager.chatSystemInfo(pc, "Percent : " + modType.name() + "-" + (sourceType.equals(EffectSourceType.None) == false ? sourceType.name() : "") + " = " + percentAmount);
ChatManager.chatSystemInfo(pc, "Percent : " + modType.name() + "-" + (sourceType.equals(SourceType.None) == false ? sourceType.name() : "") + " = " + percentAmount);
if (percentAmountNegative != 0)
ChatManager.chatSystemInfo(pc, "Negative Percent : " + modType.name() + "-" + (sourceType.equals(EffectSourceType.None) == false ? sourceType.name() : "") + " = " + percentAmountNegative);
ChatManager.chatSystemInfo(pc, "Negative Percent : " + modType.name() + "-" + (sourceType.equals(SourceType.None) == false ? sourceType.name() : "") + " = " + percentAmountNegative);
}
}
@@ -472,11 +472,11 @@ public class PlayerBonuses {
}
public void setBool(ModType modType, EffectSourceType sourceType, boolean val) {
public void setBool(ModType modType, SourceType sourceType, boolean val) {
if (val == true) {
if (this.bonusBools.get(modType) == null) {
HashMap<EffectSourceType, Boolean> sourceMap = new HashMap<>();
HashMap<SourceType, Boolean> sourceMap = new HashMap<>();
this.bonusBools.put(modType, sourceMap);
}
+29 -29
View File
@@ -3093,7 +3093,7 @@ public class PlayerCharacter extends AbstractCharacter {
if (this.bonuses != null)
// get rune and effect bonuses
bonus += this.bonuses.getFloatPercentNullZero(ModType.Speed, EffectSourceType.None);
bonus += this.bonuses.getFloatPercentNullZero(ModType.Speed, SourceType.None);
// TODO get equip bonus
this.update();
@@ -3597,8 +3597,8 @@ public class PlayerCharacter extends AbstractCharacter {
//calculateModifiedStats();
//update hide and seeInvis levels
if (this.bonuses != null) {
this.hidden = (int) bonuses.getFloat(ModType.Invisible, EffectSourceType.None);
this.seeInvis = (int) bonuses.getFloat(ModType.SeeInvisible, EffectSourceType.None);
this.hidden = (int) bonuses.getFloat(ModType.Invisible, SourceType.None);
this.seeInvis = (int) bonuses.getFloat(ModType.SeeInvisible, SourceType.None);
} else {
this.hidden = (byte) 0;
this.seeInvis = (byte) 0;
@@ -3666,21 +3666,21 @@ public class PlayerCharacter extends AbstractCharacter {
// TODO modify for equipment
if (this.bonuses != null) {
// modify for effects
strVal += Math.round(this.bonuses.getFloat(ModType.Attr, EffectSourceType.Strength));
dexVal += Math.round(this.bonuses.getFloat(ModType.Attr, EffectSourceType.Dexterity));
conVal += Math.round(this.bonuses.getFloat(ModType.Attr, EffectSourceType.Constitution));
intVal += Math.round(this.bonuses.getFloat(ModType.Attr, EffectSourceType.Intelligence));
spiVal += Math.round(this.bonuses.getFloat(ModType.Attr, EffectSourceType.Spirit));
strVal += Math.round(this.bonuses.getFloat(ModType.Attr, SourceType.Strength));
dexVal += Math.round(this.bonuses.getFloat(ModType.Attr, SourceType.Dexterity));
conVal += Math.round(this.bonuses.getFloat(ModType.Attr, SourceType.Constitution));
intVal += Math.round(this.bonuses.getFloat(ModType.Attr, SourceType.Intelligence));
spiVal += Math.round(this.bonuses.getFloat(ModType.Attr, SourceType.Spirit));
// apply dex penalty for armor
dexVal *= this.dexPenalty;
// modify percent amounts. DO THIS LAST!
strVal *= (1 + this.bonuses.getFloatPercentAll(ModType.Attr, EffectSourceType.Strength));
dexVal *= (1 + this.bonuses.getFloatPercentAll(ModType.Attr, EffectSourceType.Dexterity));
conVal *= (1 + this.bonuses.getFloatPercentAll(ModType.Attr, EffectSourceType.Constitution));
intVal *= (1 + this.bonuses.getFloatPercentAll(ModType.Attr, EffectSourceType.Intelligence));
spiVal *= (1 + this.bonuses.getFloatPercentAll(ModType.Attr, EffectSourceType.Spirit));
strVal *= (1 + this.bonuses.getFloatPercentAll(ModType.Attr, SourceType.Strength));
dexVal *= (1 + this.bonuses.getFloatPercentAll(ModType.Attr, SourceType.Dexterity));
conVal *= (1 + this.bonuses.getFloatPercentAll(ModType.Attr, SourceType.Constitution));
intVal *= (1 + this.bonuses.getFloatPercentAll(ModType.Attr, SourceType.Intelligence));
spiVal *= (1 + this.bonuses.getFloatPercentAll(ModType.Attr, SourceType.Spirit));
} else
// apply dex penalty for armor
@@ -3776,24 +3776,24 @@ public class PlayerCharacter extends AbstractCharacter {
wbOff = off.template;
//set block if block found
this.bonuses.setBool(ModType.Block, EffectSourceType.None, false);
this.bonuses.setBool(ModType.Block, SourceType.None, false);
if (this.baseClass != null && (this.baseClass.getObjectUUID() == 2500 || this.baseClass.getObjectUUID() == 2501))
if (off != null && off.template != null && ItemManager.isShield(off))
this.bonuses.setBool(ModType.Block, EffectSourceType.None, true);
this.bonuses.setBool(ModType.Block, SourceType.None, true);
//set dodge if rogue
if (this.baseClass != null && this.baseClass.getObjectUUID() == 2502)
this.bonuses.setBool(ModType.Dodge, EffectSourceType.None, true);
this.bonuses.setBool(ModType.Dodge, SourceType.None, true);
else
this.bonuses.setBool(ModType.Dodge, EffectSourceType.None, false);
this.bonuses.setBool(ModType.Dodge, SourceType.None, false);
//set parry if fighter or thief and no invalid weapon found
this.bonuses.setBool(ModType.Parry, EffectSourceType.None, false);
this.bonuses.setBool(ModType.Parry, SourceType.None, false);
if ((this.baseClass != null && this.baseClass.getObjectUUID() == 2500)
|| (this.promotionClass != null && this.promotionClass.getObjectUUID() == 2520))
if (wbMain == null || wbMain.item_weapon_max_range < MBServerStatics.RANGED_WEAPON_RANGE)
if (wbOff == null || wbOff.item_weapon_max_range < MBServerStatics.RANGED_WEAPON_RANGE)
this.bonuses.setBool(ModType.Parry, EffectSourceType.None, true);
this.bonuses.setBool(ModType.Parry, SourceType.None, true);
}
@@ -3892,13 +3892,13 @@ public class PlayerCharacter extends AbstractCharacter {
//apply effects
h += this.bonuses.getFloat(ModType.HealthFull, EffectSourceType.None);
m += this.bonuses.getFloat(ModType.ManaFull, EffectSourceType.None);
s += this.bonuses.getFloat(ModType.StaminaFull, EffectSourceType.None);
h += this.bonuses.getFloat(ModType.HealthFull, SourceType.None);
m += this.bonuses.getFloat(ModType.ManaFull, SourceType.None);
s += this.bonuses.getFloat(ModType.StaminaFull, SourceType.None);
h *= (1 + this.bonuses.getFloatPercentAll(ModType.HealthFull, EffectSourceType.None));
m *= (1 + this.bonuses.getFloatPercentAll(ModType.ManaFull, EffectSourceType.None));
s *= (1 + this.bonuses.getFloatPercentAll(ModType.StaminaFull, EffectSourceType.None));
h *= (1 + this.bonuses.getFloatPercentAll(ModType.HealthFull, SourceType.None));
m *= (1 + this.bonuses.getFloatPercentAll(ModType.ManaFull, SourceType.None));
s *= (1 + this.bonuses.getFloatPercentAll(ModType.StaminaFull, SourceType.None));
}
@@ -3933,11 +3933,11 @@ public class PlayerCharacter extends AbstractCharacter {
ModType modType = ModType.GetModType(type);
// must be allowed to use this passive
if (!this.bonuses.getBool(modType, EffectSourceType.None))
if (!this.bonuses.getBool(modType, SourceType.None))
return 0f;
// must not be stunned
if (this.bonuses.getBool(ModType.Stunned, EffectSourceType.None))
if (this.bonuses.getBool(ModType.Stunned, SourceType.None))
return 0f;
// Get base skill amount
@@ -3949,7 +3949,7 @@ public class PlayerCharacter extends AbstractCharacter {
amount = sk.getModifiedAmount();
// Add bonuses
amount += this.bonuses.getFloat(modType, EffectSourceType.None);
amount += this.bonuses.getFloat(modType, SourceType.None);
// Add item bonuses and return
if (type.equals(ModType.Dodge) && !fromCombat)
@@ -4383,7 +4383,7 @@ public class PlayerCharacter extends AbstractCharacter {
Vector3fImmutable newLoc = this.getMovementLoc();
if (this.isAlive() == false || this.getBonuses().getBool(ModType.Stunned, EffectSourceType.None) || this.getBonuses().getBool(ModType.CannotMove, EffectSourceType.None)) {
if (this.isAlive() == false || this.getBonuses().getBool(ModType.Stunned, SourceType.None) || this.getBonuses().getBool(ModType.CannotMove, SourceType.None)) {
//Target is stunned or rooted. Don't move
this.stopMovement(newLoc);
return;
+30 -30
View File
@@ -12,8 +12,8 @@ package engine.objects;
import engine.gameManager.ChatManager;
import engine.gameManager.DbManager;
import engine.mbEnums;
import engine.mbEnums.EffectSourceType;
import engine.mbEnums.ModType;
import engine.mbEnums.SourceType;
import engine.server.MBServerStatics;
import org.pmw.tinylog.Logger;
@@ -105,7 +105,7 @@ public class Resists {
PlayerBonuses bonus = target.getBonuses();
//see if there is a fortitude
float damageCap = bonus.getFloatPercentAll(ModType.DamageCap, EffectSourceType.None);
float damageCap = bonus.getFloatPercentAll(ModType.DamageCap, SourceType.None);
if (damageCap == 0f || type == mbEnums.DamageType.HEALING)
return damage;
@@ -117,7 +117,7 @@ public class Resists {
//let's see if valid damagetype to apply it
boolean exclusive;
HashSet<EffectSourceType> forts = bonus.getList(ModType.IgnoreDamageCap);
HashSet<SourceType> forts = bonus.getList(ModType.IgnoreDamageCap);
if (forts == null) {
exclusive = true;
forts = bonus.getList(ModType.ExclusiveDamageCap);
@@ -126,15 +126,15 @@ public class Resists {
if (forts == null || !isValidDamageCapType(forts, type, exclusive))
return damage;
float adjustedDamage = bonus.getFloatPercentAll(ModType.AdjustAboveDmgCap, EffectSourceType.None);
float adjustedDamage = bonus.getFloatPercentAll(ModType.AdjustAboveDmgCap, SourceType.None);
//Adjust damage down and return new amount
float aadc = 1 + adjustedDamage;
return capFire * aadc;
}
//Test if Damagetype is valid for foritude
private static boolean isValidDamageCapType(HashSet<EffectSourceType> forts, mbEnums.DamageType damageType, boolean exclusive) {
for (EffectSourceType fort : forts) {
private static boolean isValidDamageCapType(HashSet<SourceType> forts, mbEnums.DamageType damageType, boolean exclusive) {
for (SourceType fort : forts) {
mbEnums.DamageType dt = mbEnums.DamageType.getDamageType(fort.name());
if (dt.equals(mbEnums.DamageType.NONE))
@@ -327,7 +327,7 @@ public class Resists {
damage = handleFortitude(target, type, damage);
//calculate armor piercing
float ap = source.getBonuses().getFloatPercentAll(ModType.ArmorPiercing, EffectSourceType.None);
float ap = source.getBonuses().getFloatPercentAll(ModType.ArmorPiercing, SourceType.None);
float damageAfterResists = damage * (1 - (this.getResist(type, trains) * 0.01f) + ap);
//check to see if any damage absorbers should cancel
@@ -346,41 +346,41 @@ public class Resists {
if (rb != null) {
// Handle immunities
if (rb.getBool(ModType.ImmuneTo, EffectSourceType.Stun))
if (rb.getBool(ModType.ImmuneTo, SourceType.Stun))
this.immuneTo.put(mbEnums.DamageType.STUN, true);
if (rb.getBool(ModType.ImmuneTo, EffectSourceType.Blind))
if (rb.getBool(ModType.ImmuneTo, SourceType.Blind))
this.immuneTo.put(mbEnums.DamageType.BLINDNESS, true);
if (rb.getBool(ModType.ImmuneToAttack, EffectSourceType.None))
if (rb.getBool(ModType.ImmuneToAttack, SourceType.None))
this.immuneTo.put(mbEnums.DamageType.ATTACK, true);
if (rb.getBool(ModType.ImmuneToPowers, EffectSourceType.None))
if (rb.getBool(ModType.ImmuneToPowers, SourceType.None))
this.immuneTo.put(mbEnums.DamageType.POWERS, true);
if (rb.getBool(ModType.ImmuneTo, EffectSourceType.Powerblock))
if (rb.getBool(ModType.ImmuneTo, SourceType.Powerblock))
this.immuneTo.put(mbEnums.DamageType.POWERINHIBITOR, true);
if (rb.getBool(ModType.ImmuneTo, EffectSourceType.DeBuff))
if (rb.getBool(ModType.ImmuneTo, SourceType.DeBuff))
this.immuneTo.put(mbEnums.DamageType.DEBUFF, true);
if (rb.getBool(ModType.ImmuneTo, EffectSourceType.Fear))
if (rb.getBool(ModType.ImmuneTo, SourceType.Fear))
this.immuneTo.put(mbEnums.DamageType.FEAR, true);
if (rb.getBool(ModType.ImmuneTo, EffectSourceType.Charm))
if (rb.getBool(ModType.ImmuneTo, SourceType.Charm))
this.immuneTo.put(mbEnums.DamageType.CHARM, true);
if (rb.getBool(ModType.ImmuneTo, EffectSourceType.Root))
if (rb.getBool(ModType.ImmuneTo, SourceType.Root))
this.immuneTo.put(mbEnums.DamageType.ROOT, true);
if (rb.getBool(ModType.ImmuneTo, EffectSourceType.Snare))
if (rb.getBool(ModType.ImmuneTo, SourceType.Snare))
this.immuneTo.put(mbEnums.DamageType.SNARE, true);
// Handle resists
slash += rb.getFloat(ModType.Resistance, EffectSourceType.Slashing);
crush += rb.getFloat(ModType.Resistance, EffectSourceType.Crushing);
pierce += rb.getFloat(ModType.Resistance, EffectSourceType.Piercing);
magic += rb.getFloat(ModType.Resistance, EffectSourceType.Magic);
bleed += rb.getFloat(ModType.Resistance, EffectSourceType.Bleeding);
poison += rb.getFloat(ModType.Resistance, EffectSourceType.Poison);
mental += rb.getFloat(ModType.Resistance, EffectSourceType.Mental);
holy += rb.getFloat(ModType.Resistance, EffectSourceType.Holy);
unholy += rb.getFloat(ModType.Resistance, EffectSourceType.Unholy);
lightning += rb.getFloat(ModType.Resistance, EffectSourceType.Lightning);
fire += rb.getFloat(ModType.Resistance, EffectSourceType.Fire);
cold += rb.getFloat(ModType.Resistance, EffectSourceType.Cold);
healing += rb.getFloat(ModType.Resistance, EffectSourceType.Heal); // DamageType.Healing.name());
slash += rb.getFloat(ModType.Resistance, SourceType.Slashing);
crush += rb.getFloat(ModType.Resistance, SourceType.Crushing);
pierce += rb.getFloat(ModType.Resistance, SourceType.Piercing);
magic += rb.getFloat(ModType.Resistance, SourceType.Magic);
bleed += rb.getFloat(ModType.Resistance, SourceType.Bleeding);
poison += rb.getFloat(ModType.Resistance, SourceType.Poison);
mental += rb.getFloat(ModType.Resistance, SourceType.Mental);
holy += rb.getFloat(ModType.Resistance, SourceType.Holy);
unholy += rb.getFloat(ModType.Resistance, SourceType.Unholy);
lightning += rb.getFloat(ModType.Resistance, SourceType.Lightning);
fire += rb.getFloat(ModType.Resistance, SourceType.Fire);
cold += rb.getFloat(ModType.Resistance, SourceType.Cold);
healing += rb.getFloat(ModType.Resistance, SourceType.Healing); // DamageType.Healing.name());
}
+4 -4
View File
@@ -10,7 +10,7 @@
package engine.objects;
import engine.gameManager.DbManager;
import engine.mbEnums.EffectSourceType;
import engine.mbEnums.SourceType;
import engine.server.MBServerStatics;
import java.sql.ResultSet;
@@ -33,7 +33,7 @@ public class SkillsBase extends AbstractGameObject {
private final short conMod;
private final short intMod;
private final short spiMod;
public EffectSourceType sourceType;
public SourceType sourceType;
/**
* No Table ID Constructor
@@ -43,7 +43,7 @@ public class SkillsBase extends AbstractGameObject {
super();
this.name = name;
this.nameNoSpace = name.replace(" ", "");
this.sourceType = EffectSourceType.getEffectSourceType(this.nameNoSpace.replace(",", ""));
this.sourceType = SourceType.GetSourceType(this.nameNoSpace.replace(",", ""));
this.description = description;
this.token = token;
this.strMod = strMod;
@@ -79,7 +79,7 @@ public class SkillsBase extends AbstractGameObject {
this.name = rs.getString("name");
this.nameNoSpace = name.replace(" ", "");
this.description = rs.getString("description");
this.sourceType = EffectSourceType.getEffectSourceType(this.nameNoSpace.replace("-", "").replace("\"", "").replace(",", ""));
this.sourceType = SourceType.GetSourceType(this.nameNoSpace.replace("-", "").replace("\"", "").replace(",", ""));
this.token = rs.getInt("token");
this.strMod = rs.getShort("strMod");
this.dexMod = rs.getShort("dexMod");
+5 -8
View File
@@ -12,13 +12,10 @@ package engine.powers;
import engine.gameManager.DbManager;
import engine.gameManager.PowersManager;
import engine.mbEnums;
import engine.mbEnums.EffectSourceType;
import engine.mbEnums.ModType;
import engine.mbEnums.SourceType;
import engine.mbEnums.StackType;
import engine.objects.AbstractCharacter;
import engine.objects.AbstractWorldObject;
import engine.objects.PlayerBonuses;
import engine.objects.Runegate;
import engine.objects.*;
import engine.powers.poweractions.AbstractPowerAction;
import org.pmw.tinylog.Logger;
@@ -252,10 +249,10 @@ public class ActionsBase {
PlayerBonuses bonus = pcTarget.getBonuses();
if(vampDrain)
return bonus.getBool(ModType.BlockedPowerType, EffectSourceType.VAMPDRAIN);
return bonus.getBool(ModType.BlockedPowerType, SourceType.VAMPDRAIN);
if ((this.stackType.equals("Flight") && bonus.getBool(ModType.NoMod, EffectSourceType.Fly)) ||
(this.stackType.equals("Track") && bonus.getBool(ModType.CannotTrack, EffectSourceType.None))) {
if ((this.stackType.equals("Flight") && bonus.getBool(ModType.NoMod, SourceType.Fly)) ||
(this.stackType.equals("Track") && bonus.getBool(ModType.CannotTrack, SourceType.None))) {
return true;
}
+365 -211
View File
@@ -9,7 +9,6 @@
package engine.powers;
import engine.gameManager.DbManager;
import engine.gameManager.DispatchManager;
import engine.gameManager.PowersManager;
import engine.job.JobContainer;
@@ -24,65 +23,58 @@ import engine.mbEnums.PowerFailCondition;
import engine.net.Dispatch;
import engine.net.client.ClientConnection;
import engine.net.client.msg.ApplyEffectMsg;
import engine.objects.AbstractCharacter;
import engine.objects.AbstractWorldObject;
import engine.objects.Effect;
import engine.objects.PlayerCharacter;
import engine.powers.effectmodifiers.AbstractEffectModifier;
import engine.objects.*;
import engine.powers.effectmodifiers.*;
import engine.server.MBServerStatics;
import engine.util.Hasher;
import engine.wpak.data.ConditionEntry;
import engine.wpak.data.Effect;
import engine.wpak.data.ModifierEntry;
import org.pmw.tinylog.Logger;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.concurrent.ConcurrentHashMap;
public class EffectsBase {
public static HashMap<Integer, HashSet<EffectSourceType>> effectSourceTypeMap = new HashMap<>();
public static HashMap<String, HashSet<AbstractEffectModifier>> modifiersMap = new HashMap<>();
public static HashMap<String, HashMap<String, ArrayList<String>>> OldEffectsMap = new HashMap<>();
public static HashMap<String, HashMap<String, ArrayList<String>>> NewEffectsMap = new HashMap<>();
public static HashMap<String, HashMap<String, ArrayList<String>>> ChangedEffectsMap = new HashMap<>();
public static HashMap<String, HashSet<PowerFailCondition>> EffectFailConditions = new HashMap<>();
public static HashMap<Integer, HashSet<mbEnums.DamageType>> EffectDamageTypes = new HashMap<>();
public static HashSet<AbstractEffectModifier> DefaultModifiers = new HashSet<>();
private static ConcurrentHashMap<String, String> itemEffectsByName = new ConcurrentHashMap<>(MBServerStatics.CHM_INIT_CAP, MBServerStatics.CHM_LOAD, MBServerStatics.CHM_THREAD_LOW);
private static int NewID = 3000;
private int UUID;
private String IDString;
// private String name;
private int token;
private float amount;
private float amountRamp;
private static final ConcurrentHashMap<String, String> itemEffectsByName = new ConcurrentHashMap<>(MBServerStatics.CHM_INIT_CAP, MBServerStatics.CHM_LOAD, MBServerStatics.CHM_THREAD_LOW);
public static int NewID = 3000;
public int UUID;
public String IDString;
// public String name;
public int token;
public float amount;
public float amountRamp;
// flags
private boolean isItemEffect;
private boolean isSpireEffect;
private boolean ignoreMod;
private boolean dontSave;
private boolean cancelOnAttack = false;
private boolean cancelOnAttackSwing = false;
private boolean cancelOnCast = false;
private boolean cancelOnCastSpell = false;
private boolean cancelOnEquipChange = false;
private boolean cancelOnLogout = false;
private boolean cancelOnMove = false;
private boolean cancelOnNewCharm = false;
private boolean cancelOnSit = false;
private boolean cancelOnTakeDamage = false;
private boolean cancelOnTerritoryClaim = false;
private boolean cancelOnUnEquip = false;
private boolean useRampAdd;
private boolean isPrefix = false; //used by items
private boolean isSuffix = false; //used by items
private String name = "";
private float value = 0;
public boolean isItemEffect;
public boolean isSpireEffect;
public boolean ignoreNoMod;
public boolean dontSave;
public boolean cancelOnAttack = false;
public boolean cancelOnAttackSwing = false;
public boolean cancelOnCast = false;
public boolean cancelOnCastSpell = false;
public boolean cancelOnEquipChange = false;
public boolean cancelOnLogout = false;
public boolean cancelOnMove = false;
public boolean cancelOnNewCharm = false;
public boolean cancelOnSit = false;
public boolean cancelOnTakeDamage = false;
public boolean cancelOnTerritoryClaim = false;
public boolean cancelOnUnEquip = false;
public boolean useRampAdd;
public boolean isPrefix = false; //used by items
public boolean isSuffix = false; //used by items
public String name = "";
public float value = 0;
private ConcurrentHashMap<mbEnums.ResourceType, Integer> resourceCosts = new ConcurrentHashMap<>();
private ConcurrentHashMap<String, Boolean> sourceTypes = new ConcurrentHashMap<>(MBServerStatics.CHM_INIT_CAP, MBServerStatics.CHM_LOAD, MBServerStatics.CHM_THREAD_LOW);
//loaded values from parser
public HashSet<EffectSourceType> effectSources = new HashSet<>();
public HashSet<AbstractEffectModifier> effectModifiers = new HashSet<>();
public HashSet<PowerFailCondition> effectFailCondition = new HashSet<>();
public HashSet<mbEnums.DamageType> effectDamageTypes = new HashSet<>();
/**
* No Table ID Constructor
@@ -91,6 +83,110 @@ public class EffectsBase {
}
/**
* EffectEntry Constructor
*/
public EffectsBase(Effect entry) {
this.IDString = entry.effect_id;
this.name = entry.effect_name;
this.token = Hasher.SBStringHash(entry.effect_name);
//override tokens for some effects like Safemode that use the Action Token instead of the effect Token,
switch (this.IDString) {
case "INVIS-D":
this.token = -1661751254;
break;
case "SafeMode":
this.token = -1661750486;
break;
}
this.isItemEffect = entry.isItemEffect;
this.isSpireEffect = entry.isSpireEffect;
this.ignoreNoMod = entry.ignoreNoMod;
this.dontSave = entry.dontSave;
if (this.IDString.startsWith("PRE-"))
this.isPrefix = true;
else if (this.IDString.startsWith("SUF-"))
this.isSuffix = true;
//load effect modifiers
for (ModifierEntry mod : entry.mods)
this.effectModifiers.add(getCombinedModifiers(null, mod, this, mod.type));
//load sources
for (String source : entry.sources)
this.effectSources.add(EffectSourceType.GetEffectSourceType(source));
//load fail conditions
for (ConditionEntry condition : entry.conditions) {
PowerFailCondition failCondition = PowerFailCondition.valueOf(condition.condition);
this.effectFailCondition.add(failCondition);
loadFailConditions(failCondition, this, condition);
//add all damage types
if(!condition.damageTypes.isEmpty())
this.effectDamageTypes.addAll(condition.damageTypes);
}
}
public static void loadFailConditions(PowerFailCondition failCondition, EffectsBase eb, ConditionEntry entry) {
if (failCondition == null || eb == null) {
return;
}
switch (failCondition) {
case TakeDamage:
eb.cancelOnTakeDamage = true;
eb.amount = entry.arg;
eb.amountRamp = (float) entry.curveType.getValue();
eb.useRampAdd = (float) entry.curveType.getValue() != 0;
break;
case Attack:
eb.cancelOnAttack = true;
break;
case AttackSwing:
eb.cancelOnAttackSwing = true;
break;
case Cast:
eb.cancelOnCast = true;
break;
case CastSpell:
eb.cancelOnCastSpell = true;
break;
case EquipChange:
eb.cancelOnEquipChange = true;
break;
case Logout:
eb.cancelOnLogout = true;
break;
case Move:
eb.cancelOnMove = true;
break;
case NewCharm:
eb.cancelOnNewCharm = true;
break;
case Sit:
eb.cancelOnSit = true;
break;
case TerritoryClaim:
eb.cancelOnTerritoryClaim = true;
break;
case UnEquip:
eb.cancelOnUnEquip = true;
break;
}
}
public EffectsBase(EffectsBase copyEffect, int newToken, String IDString) {
UUID = NewID++;
@@ -102,7 +198,7 @@ public class EffectsBase {
int flags = 0;
this.isItemEffect = ((flags & 1) != 0) ? true : false;
this.isSpireEffect = ((flags & 2) != 0) ? true : false;
this.ignoreMod = ((flags & 4) != 0) ? true : false;
this.ignoreNoMod = ((flags & 4) != 0) ? true : false;
this.dontSave = ((flags & 8) != 0) ? true : false;
if (this.IDString.startsWith("PRE-"))
@@ -117,7 +213,7 @@ public class EffectsBase {
this.amountRamp = copyEffect.amountRamp;
this.isItemEffect = copyEffect.isItemEffect;
this.isSpireEffect = copyEffect.isSpireEffect;
this.ignoreMod = copyEffect.ignoreMod;
this.ignoreNoMod = copyEffect.ignoreNoMod;
this.dontSave = copyEffect.dontSave;
this.cancelOnAttack = copyEffect.cancelOnAttack;
this.cancelOnAttackSwing = copyEffect.cancelOnAttackSwing;
@@ -163,7 +259,7 @@ public class EffectsBase {
int flags = rs.getInt("flags");
this.isItemEffect = ((flags & 1) != 0) ? true : false;
this.isSpireEffect = ((flags & 2) != 0) ? true : false;
this.ignoreMod = ((flags & 4) != 0) ? true : false;
this.ignoreNoMod = ((flags & 4) != 0) ? true : false;
this.dontSave = ((flags & 8) != 0) ? true : false;
if (this.IDString.startsWith("PRE-"))
@@ -173,113 +269,6 @@ public class EffectsBase {
// getFailConditions();
}
public static void getFailConditions(HashMap<String, EffectsBase> effects) {
try (Connection connection = DbManager.getConnection();
PreparedStatement preparedStatement = connection.prepareStatement("SELECT * FROM static_power_failcondition WHERE powerOrEffect = 'Effect';")) {
ResultSet rs = preparedStatement.executeQuery();
PowerFailCondition failCondition = null;
while (rs.next()) {
String fail = rs.getString("type");
String IDString = rs.getString("IDString");
failCondition = PowerFailCondition.valueOf(fail);
if (failCondition == null) {
Logger.error("Couldn't Find FailCondition " + fail + " for " + IDString);
continue;
}
if (EffectsBase.EffectFailConditions.get(IDString) == null) {
EffectsBase.EffectFailConditions.put(IDString, new HashSet<>());
}
EffectsBase.EffectFailConditions.get(IDString).add(failCondition);
EffectsBase eb = effects.get(IDString);
switch (failCondition) {
case TakeDamage:
// dont go any further.
if (eb == null)
break;
eb.cancelOnTakeDamage = true;
eb.amount = rs.getFloat("amount");
eb.amountRamp = rs.getFloat("ramp");
eb.useRampAdd = rs.getBoolean("UseAddFormula");
String damageType1 = rs.getString("damageType1");
String damageType2 = rs.getString("damageType2");
String damageType3 = rs.getString("damageType3");
if (damageType1.isEmpty() && damageType2.isEmpty() && damageType3.isEmpty())
break;
if (!EffectsBase.EffectDamageTypes.containsKey(eb.getToken()))
EffectsBase.EffectDamageTypes.put(eb.getToken(), new HashSet<>());
mbEnums.DamageType dt = mbEnums.DamageType.getDamageType(damageType1);
if (dt != null)
EffectsBase.EffectDamageTypes.get(eb.token).add(dt);
dt = mbEnums.DamageType.getDamageType(damageType2);
if (dt != null)
EffectsBase.EffectDamageTypes.get(eb.token).add(dt);
dt = mbEnums.DamageType.getDamageType(damageType3);
if (dt != null)
EffectsBase.EffectDamageTypes.get(eb.token).add(dt);
break;
case Attack:
eb.cancelOnAttack = true;
break;
case AttackSwing:
eb.cancelOnAttackSwing = true;
break;
case Cast:
eb.cancelOnCast = true;
break;
case CastSpell:
eb.cancelOnCastSpell = true;
break;
case EquipChange:
eb.cancelOnEquipChange = true;
break;
case Logout:
eb.cancelOnLogout = true;
break;
case Move:
eb.cancelOnMove = true;
break;
case NewCharm:
eb.cancelOnNewCharm = true;
break;
case Sit:
eb.cancelOnSit = true;
break;
case TerritoryClaim:
eb.cancelOnTerritoryClaim = true;
break;
case UnEquip:
eb.cancelOnUnEquip = true;
break;
}
}
rs.close();
} catch (Exception e) {
Logger.error(e);
}
}
public static String getItemEffectsByName(String string) {
if (EffectsBase.itemEffectsByName.containsKey(string))
return EffectsBase.itemEffectsByName.get(string);
@@ -303,14 +292,12 @@ public class EffectsBase {
public boolean damageTypeSpecific() {
return EffectsBase.EffectDamageTypes.containsKey(this.token);
return !this.effectDamageTypes.isEmpty();
}
public boolean containsDamageType(mbEnums.DamageType dt) {
if (!EffectsBase.EffectDamageTypes.containsKey(this.token))
return false;
return EffectsBase.EffectDamageTypes.get(this.token).contains(dt);
return this.effectDamageTypes.contains(dt);
}
public int getUUID() {
@@ -330,32 +317,8 @@ public class EffectsBase {
this.token = token;
}
public ConcurrentHashMap<String, Boolean> getSourceTypes() {
return this.sourceTypes;
}
public HashSet<AbstractEffectModifier> getModifiers() {
if (EffectsBase.modifiersMap.containsKey(this.IDString) == false)
return EffectsBase.DefaultModifiers;
return EffectsBase.modifiersMap.get(this.IDString);
}
public boolean isItemEffect() {
return this.isItemEffect;
}
public boolean isSpireEffect() {
return this.isSpireEffect;
}
public boolean ignoreMod() {
return this.ignoreMod;
}
public boolean dontSave() {
return this.dontSave;
return this.effectModifiers;
}
public boolean isPrefix() {
@@ -404,7 +367,7 @@ public class EffectsBase {
float duration = ab.getDurationInSeconds(trains);
if (pb.getToken() == 1672601862) {
Effect eff = awo.getEffects().get("DeathShroud");
engine.objects.Effect eff = awo.getEffects().get("DeathShroud");
if (eff != null) {
@@ -639,13 +602,6 @@ public class EffectsBase {
}
}
public boolean containsSource(EffectSourceType sourceType) {
if (EffectsBase.effectSourceTypeMap.containsKey(this.token) == false)
return false;
return EffectsBase.effectSourceTypeMap.get(this.token).contains(sourceType);
}
public boolean cancelOnAttack() {
return this.cancelOnAttack;
}
@@ -694,16 +650,6 @@ public class EffectsBase {
return this.cancelOnUnEquip;
}
public String getDamageTypes() {
String text = "";
if (!EffectsBase.EffectDamageTypes.containsKey(this.token))
return text;
for (mbEnums.DamageType type : EffectsBase.EffectDamageTypes.get(this.token)) {
text += type.name() + ' ';
}
return text;
}
public String getName() {
return name;
@@ -713,12 +659,220 @@ public class EffectsBase {
this.name = name;
}
public float getValue() {
return value;
public static AbstractEffectModifier getCombinedModifiers(AbstractEffectModifier abstractEffectModifier, ModifierEntry rs, EffectsBase effectBase, mbEnums.ModType modifier){
switch (modifier) {
case AdjustAboveDmgCap:
abstractEffectModifier = new AdjustAboveDmgCapEffectModifier(rs);
break;
case Ambidexterity:
abstractEffectModifier = new AmbidexterityEffectModifier(rs);
break;
case AnimOverride:
break;
case ArmorPiercing:
abstractEffectModifier = new ArmorPiercingEffectModifier(rs);
break;
case AttackDelay:
abstractEffectModifier = new AttackDelayEffectModifier(rs);
break;
case Attr:
abstractEffectModifier = new AttributeEffectModifier(rs);
break;
case BlackMantle:
abstractEffectModifier = new BlackMantleEffectModifier(rs);
break;
case BladeTrails:
abstractEffectModifier = new BladeTrailsEffectModifier(rs);
break;
case Block:
abstractEffectModifier = new BlockEffectModifier(rs);
break;
case BlockedPowerType:
abstractEffectModifier = new BlockedPowerTypeEffectModifier(rs);
break;
case CannotAttack:
abstractEffectModifier = new CannotAttackEffectModifier(rs);
break;
case CannotCast:
abstractEffectModifier = new CannotCastEffectModifier(rs);
break;
case CannotMove:
abstractEffectModifier = new CannotMoveEffectModifier(rs);
break;
case CannotTrack:
abstractEffectModifier = new CannotTrackEffectModifier(rs);
break;
case Charmed:
abstractEffectModifier = new CharmedEffectModifier(rs);
break;
case ConstrainedAmbidexterity:
abstractEffectModifier = new ConstrainedAmbidexterityEffectModifier(rs);
break;
case DamageCap:
abstractEffectModifier = new DamageCapEffectModifier(rs);
break;
case DamageShield:
abstractEffectModifier = new DamageShieldEffectModifier(rs);
break;
case DCV:
abstractEffectModifier = new DCVEffectModifier(rs);
break;
case Dodge:
abstractEffectModifier = new DodgeEffectModifier(rs);
break;
case DR:
abstractEffectModifier = new DREffectModifier(rs);
break;
case Durability:
abstractEffectModifier = new DurabilityEffectModifier(rs);
break;
case ExclusiveDamageCap:
abstractEffectModifier = new ExclusiveDamageCapEffectModifier(rs);
break;
case Fade:
abstractEffectModifier = new FadeEffectModifier(rs);
break;
case Fly:
abstractEffectModifier = new FlyEffectModifier(rs);
break;
case Health:
abstractEffectModifier = new HealthEffectModifier(rs);
break;
case HealthFull:
abstractEffectModifier = new HealthFullEffectModifier(rs);
break;
case HealthRecoverRate:
abstractEffectModifier = new HealthRecoverRateEffectModifier(rs);
break;
case IgnoreDamageCap:
abstractEffectModifier = new IgnoreDamageCapEffectModifier(rs);
break;
case IgnorePassiveDefense:
abstractEffectModifier = new IgnorePassiveDefenseEffectModifier(rs);
break;
case ImmuneTo:
abstractEffectModifier = new ImmuneToEffectModifier(rs);
break;
case ImmuneToAttack:
abstractEffectModifier = new ImmuneToAttackEffectModifier(rs);
break;
case ImmuneToPowers:
abstractEffectModifier = new ImmuneToPowersEffectModifier(rs);
break;
case Invisible:
abstractEffectModifier = new InvisibleEffectModifier(rs);
break;
case ItemName:
abstractEffectModifier = new ItemNameEffectModifier(rs);
if (((ItemNameEffectModifier) abstractEffectModifier).name.isEmpty())
break;
if (effectBase != null)
effectBase.setName((((ItemNameEffectModifier) abstractEffectModifier).name));
break;
case Mana:
abstractEffectModifier = new ManaEffectModifier(rs);
break;
case ManaFull:
abstractEffectModifier = new ManaFullEffectModifier(rs);
break;
case ManaRecoverRate:
abstractEffectModifier = new ManaRecoverRateEffectModifier(rs);
break;
case MaxDamage:
abstractEffectModifier = new MaxDamageEffectModifier(rs);
break;
case MeleeDamageModifier:
abstractEffectModifier = new MeleeDamageEffectModifier(rs);
break;
case MinDamage:
abstractEffectModifier = new MinDamageEffectModifier(rs);
break;
case NoMod:
abstractEffectModifier = new NoModEffectModifier(rs);
break;
case OCV:
abstractEffectModifier = new OCVEffectModifier(rs);
break;
case Parry:
abstractEffectModifier = new ParryEffectModifier(rs);
break;
case PassiveDefense:
abstractEffectModifier = new PassiveDefenseEffectModifier(rs);
break;
case PowerCost:
abstractEffectModifier = new PowerCostEffectModifier(rs);
break;
case PowerCostHealth:
abstractEffectModifier = new PowerCostHealthEffectModifier(rs);
break;
case PowerDamageModifier:
abstractEffectModifier = new PowerDamageEffectModifier(rs);
break;
case ProtectionFrom:
abstractEffectModifier = new ProtectionFromEffectModifier(rs);
break;
case Resistance:
abstractEffectModifier = new ResistanceEffectModifier(rs);
break;
case ScaleHeight:
abstractEffectModifier = new ScaleHeightEffectModifier(rs);
break;
case ScaleWidth:
abstractEffectModifier = new ScaleWidthEffectModifier(rs);
break;
case ScanRange:
abstractEffectModifier = new ScanRangeEffectModifier(rs);
break;
case SeeInvisible:
abstractEffectModifier = new SeeInvisibleEffectModifier(rs);
break;
case Silenced:
abstractEffectModifier = new SilencedEffectModifier(rs);
break;
case Skill:
abstractEffectModifier = new SkillEffectModifier(rs);
break;
case Slay:
abstractEffectModifier = new SlayEffectModifier(rs);
break;
case Speed:
abstractEffectModifier = new SpeedEffectModifier(rs);
break;
case SpireBlock:
abstractEffectModifier = new SpireBlockEffectModifier(rs);
break;
case Stamina:
abstractEffectModifier = new StaminaEffectModifier(rs);
break;
case StaminaFull:
abstractEffectModifier = new StaminaFullEffectModifier(rs);
break;
case StaminaRecoverRate:
abstractEffectModifier = new StaminaRecoverRateEffectModifier(rs);
break;
case Stunned:
abstractEffectModifier = new StunnedEffectModifier(rs);
break;
case Value:
abstractEffectModifier = new ValueEffectModifier(rs);
if (effectBase != null) {
ValueEffectModifier valueEffect = (ValueEffectModifier) abstractEffectModifier;
effectBase.value = valueEffect.minMod;
Item.addEnchantValue(effectBase.getIDString(), (int)valueEffect.minMod);
}
break;
case WeaponProc:
abstractEffectModifier = new WeaponProcEffectModifier(rs);
break;
case WeaponRange:
abstractEffectModifier = new WeaponRangeEffectModifier(rs);
break;
case WeaponSpeed:
abstractEffectModifier = new WeaponSpeedEffectModifier(rs);
break;
public void setValue(float Value) {
this.value = Value;
}
return abstractEffectModifier;
}
}
@@ -10,13 +10,14 @@
package engine.powers.effectmodifiers;
import engine.jobs.AbstractEffectJob;
import engine.mbEnums.EffectSourceType;
import engine.mbEnums.ModType;
import engine.mbEnums.SourceType;
import engine.objects.AbstractCharacter;
import engine.objects.AbstractWorldObject;
import engine.objects.Building;
import engine.objects.Item;
import engine.powers.EffectsBase;
import engine.wpak.data.ModifierEntry;
import java.sql.ResultSet;
import java.sql.SQLException;
@@ -25,7 +26,7 @@ import java.sql.SQLException;
public abstract class AbstractEffectModifier {
public float minMod;
public EffectSourceType sourceType;
public SourceType sourceType;
public ModType modType;
protected EffectsBase parent;
protected int UUID;
@@ -39,22 +40,24 @@ public abstract class AbstractEffectModifier {
protected String string1;
protected String string2;
public AbstractEffectModifier(ResultSet rs) throws SQLException {
public AbstractEffectModifier(ResultSet rs){
this.UUID = rs.getInt("ID");
this.IDString = rs.getString("IDString");
this.effectType = rs.getString("modType");
this.modType = ModType.GetModType(this.effectType);
this.type = rs.getString("type").replace("\"", "");
this.sourceType = EffectSourceType.getEffectSourceType(this.type.replace(" ", "").replace("-", ""));
this.minMod = rs.getFloat("minMod");
this.maxMod = rs.getFloat("maxMod");
this.percentMod = rs.getFloat("percentMod");
this.ramp = rs.getFloat("ramp");
this.useRampAdd = (rs.getInt("useRampAdd") == 1) ? true : false;
}
public AbstractEffectModifier(ModifierEntry mod) {
this.string1 = rs.getString("string1");
this.string2 = rs.getString("string2");
this.IDString = mod.type.name();
this.effectType = mod.type.name();
this.modType = mod.type;
this.type = mod.type.name().replace("\"", "");
this.sourceType = SourceType.GetSourceType(this.type.replace(" ", "").replace("-", ""));
this.minMod = mod.min;
this.maxMod = mod.max;
this.percentMod = mod.value;
this.ramp = (float)mod.compoundCurveType.getValue();
this.useRampAdd = (float)mod.compoundCurveType.getValue() != 0;
this.string1 = mod.arg1;
this.string2 = mod.arg2;
}
@@ -11,6 +11,7 @@ package engine.powers.effectmodifiers;
import engine.jobs.AbstractEffectJob;
import engine.objects.*;
import engine.wpak.data.ModifierEntry;
import java.sql.ResultSet;
import java.sql.SQLException;
@@ -18,7 +19,7 @@ import java.sql.SQLException;
public class AdjustAboveDmgCapEffectModifier extends AbstractEffectModifier {
public AdjustAboveDmgCapEffectModifier(ResultSet rs) throws SQLException {
public AdjustAboveDmgCapEffectModifier(ModifierEntry rs){
super(rs);
}
@@ -10,9 +10,10 @@
package engine.powers.effectmodifiers;
import engine.jobs.AbstractEffectJob;
import engine.mbEnums.EffectSourceType;
import engine.mbEnums.ModType;
import engine.mbEnums.SourceType;
import engine.objects.*;
import engine.wpak.data.ModifierEntry;
import java.sql.ResultSet;
import java.sql.SQLException;
@@ -20,7 +21,7 @@ import java.sql.SQLException;
public class AmbidexterityEffectModifier extends AbstractEffectModifier {
public AmbidexterityEffectModifier(ResultSet rs) throws SQLException {
public AmbidexterityEffectModifier(ModifierEntry rs) {
super(rs);
}
@@ -32,7 +33,7 @@ public class AmbidexterityEffectModifier extends AbstractEffectModifier {
@Override
public void applyBonus(AbstractCharacter ac, int trains) {
PlayerBonuses bonus = ac.getBonuses();
bonus.setBool(ModType.Ambidexterity, EffectSourceType.None, true);
bonus.setBool(ModType.Ambidexterity, SourceType.None, true);
}
@Override
@@ -11,6 +11,7 @@ package engine.powers.effectmodifiers;
import engine.jobs.AbstractEffectJob;
import engine.objects.*;
import engine.wpak.data.ModifierEntry;
import java.sql.ResultSet;
import java.sql.SQLException;
@@ -18,7 +19,7 @@ import java.sql.SQLException;
public class ArmorPiercingEffectModifier extends AbstractEffectModifier {
public ArmorPiercingEffectModifier(ResultSet rs) throws SQLException {
public ArmorPiercingEffectModifier(ModifierEntry rs){
super(rs);
}
@@ -11,6 +11,7 @@ package engine.powers.effectmodifiers;
import engine.jobs.AbstractEffectJob;
import engine.objects.*;
import engine.wpak.data.ModifierEntry;
import java.sql.ResultSet;
import java.sql.SQLException;
@@ -21,6 +22,9 @@ public class AttackDelayEffectModifier extends AbstractEffectModifier {
public AttackDelayEffectModifier(ResultSet rs) throws SQLException {
super(rs);
}
public AttackDelayEffectModifier(ModifierEntry rs){
super(rs);
}
@Override
protected void _applyEffectModifier(AbstractCharacter source, AbstractWorldObject awo, int trains, AbstractEffectJob effect) {
@@ -11,6 +11,7 @@ package engine.powers.effectmodifiers;
import engine.jobs.AbstractEffectJob;
import engine.objects.*;
import engine.wpak.data.ModifierEntry;
import java.sql.ResultSet;
import java.sql.SQLException;
@@ -22,6 +23,10 @@ public class AttributeEffectModifier extends AbstractEffectModifier {
super(rs);
}
public AttributeEffectModifier(ModifierEntry rs) {
super(rs);
}
@Override
protected void _applyEffectModifier(AbstractCharacter source, AbstractWorldObject awo, int trains, AbstractEffectJob effect) {
@@ -10,9 +10,11 @@
package engine.powers.effectmodifiers;
import engine.jobs.AbstractEffectJob;
import engine.mbEnums.EffectSourceType;
import engine.mbEnums.ModType;
import engine.mbEnums.SourceType;
import engine.objects.*;
import engine.wpak.data.ModifierEntry;
import engine.wpak.data.ModifierEntry;
import org.pmw.tinylog.Logger;
import java.sql.ResultSet;
@@ -25,6 +27,10 @@ public class BlackMantleEffectModifier extends AbstractEffectModifier {
super(rs);
}
public BlackMantleEffectModifier(ModifierEntry rs) {
super(rs);
}
@Override
protected void _applyEffectModifier(AbstractCharacter source, AbstractWorldObject awo, int trains, AbstractEffectJob effect) {
@@ -33,7 +39,7 @@ public class BlackMantleEffectModifier extends AbstractEffectModifier {
@Override
public void applyBonus(AbstractCharacter ac, int trains) {
PlayerBonuses bonus = ac.getBonuses();
EffectSourceType sourceType = EffectSourceType.valueOf(this.type);
SourceType sourceType = SourceType.valueOf(this.type);
if (sourceType == null) {
Logger.error("Bad Source Type for " + this.type);
@@ -14,6 +14,7 @@ import engine.objects.AbstractCharacter;
import engine.objects.AbstractWorldObject;
import engine.objects.Building;
import engine.objects.Item;
import engine.wpak.data.ModifierEntry;
import java.sql.ResultSet;
import java.sql.SQLException;
@@ -24,6 +25,10 @@ public class BladeTrailsEffectModifier extends AbstractEffectModifier {
super(rs);
}
public BladeTrailsEffectModifier(ModifierEntry rs) {
super(rs);
}
@Override
protected void _applyEffectModifier(AbstractCharacter source, AbstractWorldObject awo, int trains, AbstractEffectJob effect) {
@@ -11,6 +11,7 @@ package engine.powers.effectmodifiers;
import engine.jobs.AbstractEffectJob;
import engine.objects.*;
import engine.wpak.data.ModifierEntry;
import java.sql.ResultSet;
import java.sql.SQLException;
@@ -22,6 +23,10 @@ public class BlockEffectModifier extends AbstractEffectModifier {
super(rs);
}
public BlockEffectModifier(ModifierEntry rs) {
super(rs);
}
@Override
protected void _applyEffectModifier(AbstractCharacter source, AbstractWorldObject awo, int trains, AbstractEffectJob effect) {
@@ -12,6 +12,7 @@ package engine.powers.effectmodifiers;
import engine.jobs.AbstractEffectJob;
import engine.mbEnums.ModType;
import engine.objects.*;
import engine.wpak.data.ModifierEntry;
import java.sql.ResultSet;
import java.sql.SQLException;
@@ -24,6 +25,10 @@ public class BlockedPowerTypeEffectModifier extends AbstractEffectModifier {
super(rs);
}
public BlockedPowerTypeEffectModifier(ModifierEntry rs) {
super(rs);
}
@Override
protected void _applyEffectModifier(AbstractCharacter source, AbstractWorldObject awo, int trains, AbstractEffectJob effect) {
@@ -40,7 +45,7 @@ public class BlockedPowerTypeEffectModifier extends AbstractEffectModifier {
ModType toBlock = ModType.None;
switch (this.sourceType) {
case Invisibility:
case Invisible:
toBlock = ModType.Invisible;
break;
}
@@ -11,6 +11,7 @@ package engine.powers.effectmodifiers;
import engine.jobs.AbstractEffectJob;
import engine.objects.*;
import engine.wpak.data.ModifierEntry;
import java.sql.ResultSet;
import java.sql.SQLException;
@@ -22,6 +23,10 @@ public class CannotAttackEffectModifier extends AbstractEffectModifier {
super(rs);
}
public CannotAttackEffectModifier(ModifierEntry rs) {
super(rs);
}
@Override
protected void _applyEffectModifier(AbstractCharacter source, AbstractWorldObject awo, int trains, AbstractEffectJob effect) {
@@ -12,6 +12,7 @@ package engine.powers.effectmodifiers;
import engine.jobs.AbstractEffectJob;
import engine.mbEnums;
import engine.objects.*;
import engine.wpak.data.ModifierEntry;
import java.sql.ResultSet;
import java.sql.SQLException;
@@ -23,6 +24,10 @@ public class CannotCastEffectModifier extends AbstractEffectModifier {
super(rs);
}
public CannotCastEffectModifier(ModifierEntry rs) {
super(rs);
}
@Override
protected void _applyEffectModifier(AbstractCharacter source, AbstractWorldObject awo, int trains, AbstractEffectJob effect) {
@@ -11,6 +11,7 @@ package engine.powers.effectmodifiers;
import engine.jobs.AbstractEffectJob;
import engine.objects.*;
import engine.wpak.data.ModifierEntry;
import java.sql.ResultSet;
import java.sql.SQLException;
@@ -22,6 +23,10 @@ public class CannotMoveEffectModifier extends AbstractEffectModifier {
super(rs);
}
public CannotMoveEffectModifier(ModifierEntry rs) {
super(rs);
}
@Override
protected void _applyEffectModifier(AbstractCharacter source, AbstractWorldObject awo, int trains, AbstractEffectJob effect) {
@@ -11,6 +11,7 @@ package engine.powers.effectmodifiers;
import engine.jobs.AbstractEffectJob;
import engine.objects.*;
import engine.wpak.data.ModifierEntry;
import java.sql.ResultSet;
import java.sql.SQLException;
@@ -22,6 +23,10 @@ public class CannotTrackEffectModifier extends AbstractEffectModifier {
super(rs);
}
public CannotTrackEffectModifier(ModifierEntry rs) {
super(rs);
}
@Override
protected void _applyEffectModifier(AbstractCharacter source, AbstractWorldObject awo, int trains, AbstractEffectJob effect) {
@@ -14,6 +14,7 @@ import engine.objects.AbstractCharacter;
import engine.objects.AbstractWorldObject;
import engine.objects.Building;
import engine.objects.Item;
import engine.wpak.data.ModifierEntry;
import java.sql.ResultSet;
import java.sql.SQLException;
@@ -24,6 +25,10 @@ public class CharmedEffectModifier extends AbstractEffectModifier {
super(rs);
}
public CharmedEffectModifier(ModifierEntry rs) {
super(rs);
}
@Override
protected void _applyEffectModifier(AbstractCharacter source, AbstractWorldObject awo, int trains, AbstractEffectJob effect) {
@@ -11,6 +11,7 @@ package engine.powers.effectmodifiers;
import engine.jobs.AbstractEffectJob;
import engine.objects.*;
import engine.wpak.data.ModifierEntry;
import java.sql.ResultSet;
import java.sql.SQLException;
@@ -22,6 +23,10 @@ public class ConstrainedAmbidexterityEffectModifier extends AbstractEffectModifi
super(rs);
}
public ConstrainedAmbidexterityEffectModifier(ModifierEntry rs) {
super(rs);
}
@Override
protected void _applyEffectModifier(AbstractCharacter source, AbstractWorldObject awo, int trains, AbstractEffectJob effect) {
@@ -11,6 +11,7 @@ package engine.powers.effectmodifiers;
import engine.jobs.AbstractEffectJob;
import engine.objects.*;
import engine.wpak.data.ModifierEntry;
import java.sql.ResultSet;
import java.sql.SQLException;
@@ -22,6 +23,10 @@ public class DCVEffectModifier extends AbstractEffectModifier {
super(rs);
}
public DCVEffectModifier(ModifierEntry rs) {
super(rs);
}
@Override
protected void _applyEffectModifier(AbstractCharacter source, AbstractWorldObject awo, int trains, AbstractEffectJob effect) {
@@ -14,6 +14,7 @@ import engine.objects.AbstractCharacter;
import engine.objects.AbstractWorldObject;
import engine.objects.Building;
import engine.objects.Item;
import engine.wpak.data.ModifierEntry;
import java.sql.ResultSet;
import java.sql.SQLException;
@@ -24,6 +25,10 @@ public class DREffectModifier extends AbstractEffectModifier {
super(rs);
}
public DREffectModifier(ModifierEntry rs) {
super(rs);
}
@Override
protected void _applyEffectModifier(AbstractCharacter source, AbstractWorldObject awo, int trains, AbstractEffectJob effect) {
@@ -11,6 +11,7 @@ package engine.powers.effectmodifiers;
import engine.jobs.AbstractEffectJob;
import engine.objects.*;
import engine.wpak.data.ModifierEntry;
import java.sql.ResultSet;
import java.sql.SQLException;
@@ -22,6 +23,10 @@ public class DamageCapEffectModifier extends AbstractEffectModifier {
super(rs);
}
public DamageCapEffectModifier(ModifierEntry rs) {
super(rs);
}
@Override
protected void _applyEffectModifier(AbstractCharacter source, AbstractWorldObject awo, int trains, AbstractEffectJob effect) {
@@ -13,6 +13,7 @@ import engine.jobs.AbstractEffectJob;
import engine.mbEnums;
import engine.objects.*;
import engine.powers.DamageShield;
import engine.wpak.data.ModifierEntry;
import java.sql.ResultSet;
import java.sql.SQLException;
@@ -24,6 +25,10 @@ public class DamageShieldEffectModifier extends AbstractEffectModifier {
super(rs);
}
public DamageShieldEffectModifier(ModifierEntry rs) {
super(rs);
}
@Override
protected void _applyEffectModifier(AbstractCharacter source, AbstractWorldObject awo, int trains, AbstractEffectJob effect) {
@@ -11,6 +11,7 @@ package engine.powers.effectmodifiers;
import engine.jobs.AbstractEffectJob;
import engine.objects.*;
import engine.wpak.data.ModifierEntry;
import java.sql.ResultSet;
import java.sql.SQLException;
@@ -22,6 +23,10 @@ public class DodgeEffectModifier extends AbstractEffectModifier {
super(rs);
}
public DodgeEffectModifier(ModifierEntry rs) {
super(rs);
}
@Override
protected void _applyEffectModifier(AbstractCharacter source, AbstractWorldObject awo, int trains, AbstractEffectJob effect) {
@@ -14,6 +14,7 @@ import engine.objects.AbstractCharacter;
import engine.objects.AbstractWorldObject;
import engine.objects.Building;
import engine.objects.Item;
import engine.wpak.data.ModifierEntry;
import java.sql.ResultSet;
import java.sql.SQLException;
@@ -24,6 +25,10 @@ public class DurabilityEffectModifier extends AbstractEffectModifier {
super(rs);
}
public DurabilityEffectModifier(ModifierEntry rs) {
super(rs);
}
@Override
protected void _applyEffectModifier(AbstractCharacter source, AbstractWorldObject awo, int trains, AbstractEffectJob effect) {
@@ -11,6 +11,7 @@ package engine.powers.effectmodifiers;
import engine.jobs.AbstractEffectJob;
import engine.objects.*;
import engine.wpak.data.ModifierEntry;
import java.sql.ResultSet;
import java.sql.SQLException;
@@ -22,6 +23,10 @@ public class ExclusiveDamageCapEffectModifier extends AbstractEffectModifier {
super(rs);
}
public ExclusiveDamageCapEffectModifier(ModifierEntry rs) {
super(rs);
}
@Override
protected void _applyEffectModifier(AbstractCharacter source, AbstractWorldObject awo, int trains, AbstractEffectJob effect) {
@@ -14,6 +14,7 @@ import engine.objects.AbstractCharacter;
import engine.objects.AbstractWorldObject;
import engine.objects.Building;
import engine.objects.Item;
import engine.wpak.data.ModifierEntry;
import java.sql.ResultSet;
import java.sql.SQLException;
@@ -24,6 +25,10 @@ public class FadeEffectModifier extends AbstractEffectModifier {
super(rs);
}
public FadeEffectModifier(ModifierEntry rs) {
super(rs);
}
@Override
protected void _applyEffectModifier(AbstractCharacter source, AbstractWorldObject awo, int trains, AbstractEffectJob effect) {
@@ -11,6 +11,7 @@ package engine.powers.effectmodifiers;
import engine.jobs.AbstractEffectJob;
import engine.objects.*;
import engine.wpak.data.ModifierEntry;
import java.sql.ResultSet;
import java.sql.SQLException;
@@ -21,6 +22,10 @@ public class FlyEffectModifier extends AbstractEffectModifier {
super(rs);
}
public FlyEffectModifier(ModifierEntry rs) {
super(rs);
}
@Override
protected void _applyEffectModifier(AbstractCharacter source, AbstractWorldObject awo, int trains, AbstractEffectJob effect) {
@@ -13,13 +13,14 @@ import engine.gameManager.DispatchManager;
import engine.jobs.AbstractEffectJob;
import engine.jobs.DamageOverTimeJob;
import engine.mbEnums;
import engine.mbEnums.EffectSourceType;
import engine.mbEnums.GameObjectType;
import engine.mbEnums.ModType;
import engine.mbEnums.SourceType;
import engine.net.AbstractNetMsg;
import engine.net.client.msg.ModifyHealthKillMsg;
import engine.net.client.msg.ModifyHealthMsg;
import engine.objects.*;
import engine.wpak.data.ModifierEntry;
import org.pmw.tinylog.Logger;
import java.sql.ResultSet;
@@ -41,6 +42,10 @@ public class HealthEffectModifier extends AbstractEffectModifier {
}
}
public HealthEffectModifier(ModifierEntry rs) {
super(rs);
}
public static float getMinDamage(float baseMin, float intelligence, float spirit, float focus) {
float min = baseMin * (((float) Math.pow(intelligence, 0.75f) * 0.0311f) + (0.02f * (int) focus) + ((float) Math.pow(spirit, 0.75f) * 0.0416f));
return (float) ((int) (min + 0.5f)); //round to nearest whole number
@@ -154,7 +159,7 @@ public class HealthEffectModifier extends AbstractEffectModifier {
// Apply any power effect modifiers (such as stances)
if (bonus != null)
modAmount *= (1 + (bonus.getFloatPercentAll(ModType.PowerDamageModifier, EffectSourceType.None)));
modAmount *= (1 + (bonus.getFloatPercentAll(ModType.PowerDamageModifier, SourceType.None)));
}
if (modAmount == 0f)
return;
@@ -193,7 +198,7 @@ public class HealthEffectModifier extends AbstractEffectModifier {
}*/
PlayerBonuses bonus = ac.getBonuses();
if (!skipImmune && bonus.getFloat(ModType.BlackMantle, EffectSourceType.Heal) >= trains) {
if (!skipImmune && bonus.getFloat(ModType.BlackMantle, SourceType.Heal) >= trains) {
ModifyHealthMsg mhm = new ModifyHealthMsg(source, ac, 0f, 0f, 0f, powerID, powerName, trains, effectID);
mhm.setUnknown03(5); //set target is immune
DispatchManager.sendToAllInRange(ac, mhm);
@@ -11,6 +11,7 @@ package engine.powers.effectmodifiers;
import engine.jobs.AbstractEffectJob;
import engine.objects.*;
import engine.wpak.data.ModifierEntry;
import java.sql.ResultSet;
import java.sql.SQLException;
@@ -21,6 +22,10 @@ public class HealthFullEffectModifier extends AbstractEffectModifier {
super(rs);
}
public HealthFullEffectModifier(ModifierEntry rs) {
super(rs);
}
@Override
protected void _applyEffectModifier(AbstractCharacter source, AbstractWorldObject awo, int trains, AbstractEffectJob effect) {
@@ -11,6 +11,7 @@ package engine.powers.effectmodifiers;
import engine.jobs.AbstractEffectJob;
import engine.objects.*;
import engine.wpak.data.ModifierEntry;
import java.sql.ResultSet;
import java.sql.SQLException;
@@ -21,6 +22,10 @@ public class HealthRecoverRateEffectModifier extends AbstractEffectModifier {
super(rs);
}
public HealthRecoverRateEffectModifier(ModifierEntry rs) {
super(rs);
}
@Override
protected void _applyEffectModifier(AbstractCharacter source, AbstractWorldObject awo, int trains, AbstractEffectJob effect) {
@@ -11,6 +11,7 @@ package engine.powers.effectmodifiers;
import engine.jobs.AbstractEffectJob;
import engine.objects.*;
import engine.wpak.data.ModifierEntry;
import java.sql.ResultSet;
import java.sql.SQLException;
@@ -22,6 +23,10 @@ public class IgnoreDamageCapEffectModifier extends AbstractEffectModifier {
super(rs);
}
public IgnoreDamageCapEffectModifier(ModifierEntry rs) {
super(rs);
}
@Override
protected void _applyEffectModifier(AbstractCharacter source, AbstractWorldObject awo, int trains, AbstractEffectJob effect) {
@@ -11,6 +11,7 @@ package engine.powers.effectmodifiers;
import engine.jobs.AbstractEffectJob;
import engine.objects.*;
import engine.wpak.data.ModifierEntry;
import java.sql.ResultSet;
import java.sql.SQLException;
@@ -21,6 +22,10 @@ public class IgnorePassiveDefenseEffectModifier extends AbstractEffectModifier {
super(rs);
}
public IgnorePassiveDefenseEffectModifier(ModifierEntry rs) {
super(rs);
}
@Override
protected void _applyEffectModifier(AbstractCharacter source, AbstractWorldObject awo, int trains, AbstractEffectJob effect) {
@@ -11,6 +11,7 @@ package engine.powers.effectmodifiers;
import engine.jobs.AbstractEffectJob;
import engine.objects.*;
import engine.wpak.data.ModifierEntry;
import java.sql.ResultSet;
import java.sql.SQLException;
@@ -21,6 +22,10 @@ public class ImmuneToAttackEffectModifier extends AbstractEffectModifier {
super(rs);
}
public ImmuneToAttackEffectModifier(ModifierEntry rs) {
super(rs);
}
@Override
protected void _applyEffectModifier(AbstractCharacter source, AbstractWorldObject awo, int trains, AbstractEffectJob effect) {
@@ -11,6 +11,7 @@ package engine.powers.effectmodifiers;
import engine.jobs.AbstractEffectJob;
import engine.objects.*;
import engine.wpak.data.ModifierEntry;
import java.sql.ResultSet;
import java.sql.SQLException;
@@ -21,6 +22,10 @@ public class ImmuneToEffectModifier extends AbstractEffectModifier {
super(rs);
}
public ImmuneToEffectModifier(ModifierEntry rs) {
super(rs);
}
@Override
protected void _applyEffectModifier(AbstractCharacter source, AbstractWorldObject awo, int trains, AbstractEffectJob effect) {
@@ -11,6 +11,7 @@ package engine.powers.effectmodifiers;
import engine.jobs.AbstractEffectJob;
import engine.objects.*;
import engine.wpak.data.ModifierEntry;
import java.sql.ResultSet;
import java.sql.SQLException;
@@ -21,6 +22,10 @@ public class ImmuneToPowersEffectModifier extends AbstractEffectModifier {
super(rs);
}
public ImmuneToPowersEffectModifier(ModifierEntry rs) {
super(rs);
}
@Override
protected void _applyEffectModifier(AbstractCharacter source, AbstractWorldObject awo, int trains, AbstractEffectJob effect) {
@@ -16,6 +16,7 @@ import engine.net.client.ClientConnection;
import engine.objects.*;
import engine.powers.ActionsBase;
import engine.powers.PowersBase;
import engine.wpak.data.ModifierEntry;
import org.pmw.tinylog.Logger;
import java.sql.ResultSet;
@@ -27,6 +28,10 @@ public class InvisibleEffectModifier extends AbstractEffectModifier {
super(rs);
}
public InvisibleEffectModifier(ModifierEntry rs) {
super(rs);
}
@Override
protected void _applyEffectModifier(AbstractCharacter source, AbstractWorldObject awo, int trains, AbstractEffectJob effect) {
@@ -15,6 +15,7 @@ import engine.objects.AbstractWorldObject;
import engine.objects.Building;
import engine.objects.Item;
import engine.powers.EffectsBase;
import engine.wpak.data.ModifierEntry;
import java.sql.ResultSet;
import java.sql.SQLException;
@@ -122,6 +123,10 @@ public class ItemNameEffectModifier extends AbstractEffectModifier {
EffectsBase.addItemEffectsByName(n, IDString);
}
public ItemNameEffectModifier(ModifierEntry rs) {
super(rs);
}
public String getName() {
return this.name;
}
@@ -13,14 +13,15 @@ import engine.gameManager.DispatchManager;
import engine.jobs.AbstractEffectJob;
import engine.jobs.DamageOverTimeJob;
import engine.mbEnums;
import engine.mbEnums.EffectSourceType;
import engine.mbEnums.ModType;
import engine.mbEnums.SourceType;
import engine.net.client.msg.ModifyHealthMsg;
import engine.objects.*;
import engine.powers.ActionsBase;
import engine.powers.poweractions.AbstractPowerAction;
import engine.powers.poweractions.DamageOverTimePowerAction;
import engine.powers.poweractions.DirectDamagePowerAction;
import engine.wpak.data.ModifierEntry;
import org.pmw.tinylog.Logger;
import java.sql.ResultSet;
@@ -43,6 +44,10 @@ public class ManaEffectModifier extends AbstractEffectModifier {
}
}
public ManaEffectModifier(ModifierEntry rs) {
super(rs);
}
@Override
protected void _applyEffectModifier(AbstractCharacter source, AbstractWorldObject awo, int trains, AbstractEffectJob effect) {
if (awo == null) {
@@ -114,7 +119,7 @@ public class ManaEffectModifier extends AbstractEffectModifier {
// Apply any power effect modifiers (such as stances)
if (bonus != null)
modAmount *= (1 + bonus.getFloatPercentAll(ModType.PowerDamageModifier, EffectSourceType.None));
modAmount *= (1 + bonus.getFloatPercentAll(ModType.PowerDamageModifier, SourceType.None));
}
if (modAmount == 0f)
return;
@@ -142,7 +147,7 @@ public class ManaEffectModifier extends AbstractEffectModifier {
}
}
PlayerBonuses bonus = ac.getBonuses();
if (!skipImmune && bonus.getFloat(ModType.BlackMantle, EffectSourceType.Heal) >= trains) {
if (!skipImmune && bonus.getFloat(ModType.BlackMantle, SourceType.Heal) >= trains) {
ModifyHealthMsg mhm = new ModifyHealthMsg(source, ac, 0f, 0f, 0f, powerID, powerName, trains, effectID);
mhm.setUnknown03(5); //set target is immune
DispatchManager.sendToAllInRange(ac, mhm);
@@ -11,6 +11,7 @@ package engine.powers.effectmodifiers;
import engine.jobs.AbstractEffectJob;
import engine.objects.*;
import engine.wpak.data.ModifierEntry;
import java.sql.ResultSet;
import java.sql.SQLException;
@@ -21,6 +22,10 @@ public class ManaFullEffectModifier extends AbstractEffectModifier {
super(rs);
}
public ManaFullEffectModifier(ModifierEntry rs) {
super(rs);
}
@Override
protected void _applyEffectModifier(AbstractCharacter source, AbstractWorldObject awo, int trains, AbstractEffectJob effect) {
@@ -11,6 +11,7 @@ package engine.powers.effectmodifiers;
import engine.jobs.AbstractEffectJob;
import engine.objects.*;
import engine.wpak.data.ModifierEntry;
import java.sql.ResultSet;
import java.sql.SQLException;
@@ -21,6 +22,10 @@ public class ManaRecoverRateEffectModifier extends AbstractEffectModifier {
super(rs);
}
public ManaRecoverRateEffectModifier(ModifierEntry rs) {
super(rs);
}
@Override
protected void _applyEffectModifier(AbstractCharacter source, AbstractWorldObject awo, int trains, AbstractEffectJob effect) {
@@ -14,6 +14,7 @@ import engine.objects.AbstractCharacter;
import engine.objects.AbstractWorldObject;
import engine.objects.Building;
import engine.objects.Item;
import engine.wpak.data.ModifierEntry;
import java.sql.ResultSet;
import java.sql.SQLException;
@@ -24,6 +25,10 @@ public class MaxDamageEffectModifier extends AbstractEffectModifier {
super(rs);
}
public MaxDamageEffectModifier(ModifierEntry rs) {
super(rs);
}
@Override
protected void _applyEffectModifier(AbstractCharacter source, AbstractWorldObject awo, int trains, AbstractEffectJob effect) {
@@ -11,6 +11,7 @@ package engine.powers.effectmodifiers;
import engine.jobs.AbstractEffectJob;
import engine.objects.*;
import engine.wpak.data.ModifierEntry;
import java.sql.ResultSet;
import java.sql.SQLException;
@@ -21,6 +22,10 @@ public class MeleeDamageEffectModifier extends AbstractEffectModifier {
super(rs);
}
public MeleeDamageEffectModifier(ModifierEntry rs) {
super(rs);
}
@Override
protected void _applyEffectModifier(AbstractCharacter source, AbstractWorldObject awo, int trains, AbstractEffectJob effect) {
@@ -14,6 +14,7 @@ import engine.objects.AbstractCharacter;
import engine.objects.AbstractWorldObject;
import engine.objects.Building;
import engine.objects.Item;
import engine.wpak.data.ModifierEntry;
import java.sql.ResultSet;
import java.sql.SQLException;
@@ -24,6 +25,10 @@ public class MinDamageEffectModifier extends AbstractEffectModifier {
super(rs);
}
public MinDamageEffectModifier(ModifierEntry rs) {
super(rs);
}
@Override
protected void _applyEffectModifier(AbstractCharacter source, AbstractWorldObject awo, int trains, AbstractEffectJob effect) {
@@ -12,6 +12,7 @@ package engine.powers.effectmodifiers;
import engine.jobs.AbstractEffectJob;
import engine.mbEnums.GameObjectType;
import engine.objects.*;
import engine.wpak.data.ModifierEntry;
import java.sql.ResultSet;
import java.sql.SQLException;
@@ -22,6 +23,10 @@ public class NoModEffectModifier extends AbstractEffectModifier {
super(rs);
}
public NoModEffectModifier(ModifierEntry rs) {
super(rs);
}
@Override
protected void _applyEffectModifier(AbstractCharacter source, AbstractWorldObject awo, int trains, AbstractEffectJob effect) {
//TODO check if anything needs removed.
@@ -33,7 +38,7 @@ public class NoModEffectModifier extends AbstractEffectModifier {
bonus.setBool(this.modType, this.sourceType, true);
switch (this.sourceType) {
case Flight:
case Fly:
if (!ac.getObjectType().equals(GameObjectType.PlayerCharacter))
return;
PlayerCharacter flyer = (PlayerCharacter) ac;
@@ -11,6 +11,7 @@ package engine.powers.effectmodifiers;
import engine.jobs.AbstractEffectJob;
import engine.objects.*;
import engine.wpak.data.ModifierEntry;
import java.sql.ResultSet;
import java.sql.SQLException;
@@ -21,6 +22,10 @@ public class OCVEffectModifier extends AbstractEffectModifier {
super(rs);
}
public OCVEffectModifier(ModifierEntry rs) {
super(rs);
}
@Override
protected void _applyEffectModifier(AbstractCharacter source, AbstractWorldObject awo, int trains, AbstractEffectJob effect) {
@@ -11,6 +11,7 @@ package engine.powers.effectmodifiers;
import engine.jobs.AbstractEffectJob;
import engine.objects.*;
import engine.wpak.data.ModifierEntry;
import java.sql.ResultSet;
import java.sql.SQLException;
@@ -21,6 +22,10 @@ public class ParryEffectModifier extends AbstractEffectModifier {
super(rs);
}
public ParryEffectModifier(ModifierEntry rs) {
super(rs);
}
@Override
protected void _applyEffectModifier(AbstractCharacter source, AbstractWorldObject awo, int trains, AbstractEffectJob effect) {
@@ -11,6 +11,7 @@ package engine.powers.effectmodifiers;
import engine.jobs.AbstractEffectJob;
import engine.objects.*;
import engine.wpak.data.ModifierEntry;
import java.sql.ResultSet;
import java.sql.SQLException;
@@ -21,6 +22,10 @@ public class PassiveDefenseEffectModifier extends AbstractEffectModifier {
super(rs);
}
public PassiveDefenseEffectModifier(ModifierEntry rs) {
super(rs);
}
@Override
protected void _applyEffectModifier(AbstractCharacter source, AbstractWorldObject awo, int trains, AbstractEffectJob effect) {
@@ -11,6 +11,7 @@ package engine.powers.effectmodifiers;
import engine.jobs.AbstractEffectJob;
import engine.objects.*;
import engine.wpak.data.ModifierEntry;
import java.sql.ResultSet;
import java.sql.SQLException;
@@ -21,6 +22,10 @@ public class PowerCostEffectModifier extends AbstractEffectModifier {
super(rs);
}
public PowerCostEffectModifier(ModifierEntry rs) {
super(rs);
}
@Override
protected void _applyEffectModifier(AbstractCharacter source, AbstractWorldObject awo, int trains, AbstractEffectJob effect) {
@@ -14,6 +14,7 @@ import engine.objects.AbstractCharacter;
import engine.objects.AbstractWorldObject;
import engine.objects.Building;
import engine.objects.Item;
import engine.wpak.data.ModifierEntry;
import java.sql.ResultSet;
import java.sql.SQLException;
@@ -24,6 +25,10 @@ public class PowerCostHealthEffectModifier extends AbstractEffectModifier {
super(rs);
}
public PowerCostHealthEffectModifier(ModifierEntry rs) {
super(rs);
}
@Override
protected void _applyEffectModifier(AbstractCharacter source, AbstractWorldObject awo, int trains, AbstractEffectJob effect) {
@@ -11,6 +11,7 @@ package engine.powers.effectmodifiers;
import engine.jobs.AbstractEffectJob;
import engine.objects.*;
import engine.wpak.data.ModifierEntry;
import java.sql.ResultSet;
import java.sql.SQLException;
@@ -21,6 +22,10 @@ public class PowerDamageEffectModifier extends AbstractEffectModifier {
super(rs);
}
public PowerDamageEffectModifier(ModifierEntry rs) {
super(rs);
}
@Override
protected void _applyEffectModifier(AbstractCharacter source, AbstractWorldObject awo, int trains, AbstractEffectJob effect) {
@@ -11,6 +11,7 @@ package engine.powers.effectmodifiers;
import engine.jobs.AbstractEffectJob;
import engine.objects.*;
import engine.wpak.data.ModifierEntry;
import java.sql.ResultSet;
import java.sql.SQLException;
@@ -21,6 +22,10 @@ public class ProtectionFromEffectModifier extends AbstractEffectModifier {
super(rs);
}
public ProtectionFromEffectModifier(ModifierEntry rs) {
super(rs);
}
@Override
protected void _applyEffectModifier(AbstractCharacter source, AbstractWorldObject awo, int trains, AbstractEffectJob effect) {
@@ -11,6 +11,7 @@ package engine.powers.effectmodifiers;
import engine.jobs.AbstractEffectJob;
import engine.objects.*;
import engine.wpak.data.ModifierEntry;
import java.sql.ResultSet;
import java.sql.SQLException;
@@ -21,6 +22,10 @@ public class ResistanceEffectModifier extends AbstractEffectModifier {
super(rs);
}
public ResistanceEffectModifier(ModifierEntry rs) {
super(rs);
}
@Override
protected void _applyEffectModifier(AbstractCharacter source, AbstractWorldObject awo, int trains, AbstractEffectJob effect) {
@@ -14,6 +14,7 @@ import engine.objects.AbstractCharacter;
import engine.objects.AbstractWorldObject;
import engine.objects.Building;
import engine.objects.Item;
import engine.wpak.data.ModifierEntry;
import java.sql.ResultSet;
import java.sql.SQLException;
@@ -24,6 +25,10 @@ public class ScaleHeightEffectModifier extends AbstractEffectModifier {
super(rs);
}
public ScaleHeightEffectModifier(ModifierEntry rs) {
super(rs);
}
@Override
protected void _applyEffectModifier(AbstractCharacter source, AbstractWorldObject awo, int trains, AbstractEffectJob effect) {
@@ -14,6 +14,7 @@ import engine.objects.AbstractCharacter;
import engine.objects.AbstractWorldObject;
import engine.objects.Building;
import engine.objects.Item;
import engine.wpak.data.ModifierEntry;
import java.sql.ResultSet;
import java.sql.SQLException;
@@ -24,6 +25,10 @@ public class ScaleWidthEffectModifier extends AbstractEffectModifier {
super(rs);
}
public ScaleWidthEffectModifier(ModifierEntry rs) {
super(rs);
}
@Override
protected void _applyEffectModifier(AbstractCharacter source, AbstractWorldObject awo, int trains, AbstractEffectJob effect) {
@@ -11,6 +11,7 @@ package engine.powers.effectmodifiers;
import engine.jobs.AbstractEffectJob;
import engine.objects.*;
import engine.wpak.data.ModifierEntry;
import java.sql.ResultSet;
import java.sql.SQLException;
@@ -21,6 +22,10 @@ public class ScanRangeEffectModifier extends AbstractEffectModifier {
super(rs);
}
public ScanRangeEffectModifier(ModifierEntry rs) {
super(rs);
}
@Override
protected void _applyEffectModifier(AbstractCharacter source, AbstractWorldObject awo, int trains, AbstractEffectJob effect) {
@@ -11,6 +11,7 @@ package engine.powers.effectmodifiers;
import engine.jobs.AbstractEffectJob;
import engine.objects.*;
import engine.wpak.data.ModifierEntry;
import java.sql.ResultSet;
import java.sql.SQLException;
@@ -21,6 +22,10 @@ public class SeeInvisibleEffectModifier extends AbstractEffectModifier {
super(rs);
}
public SeeInvisibleEffectModifier(ModifierEntry rs) {
super(rs);
}
@Override
protected void _applyEffectModifier(AbstractCharacter source, AbstractWorldObject awo, int trains, AbstractEffectJob effect) {
@@ -11,6 +11,7 @@ package engine.powers.effectmodifiers;
import engine.jobs.AbstractEffectJob;
import engine.objects.*;
import engine.wpak.data.ModifierEntry;
import java.sql.ResultSet;
import java.sql.SQLException;
@@ -21,6 +22,10 @@ public class SilencedEffectModifier extends AbstractEffectModifier {
super(rs);
}
public SilencedEffectModifier(ModifierEntry rs) {
super(rs);
}
@Override
protected void _applyEffectModifier(AbstractCharacter source, AbstractWorldObject awo, int trains, AbstractEffectJob effect) {
@@ -11,6 +11,7 @@ package engine.powers.effectmodifiers;
import engine.jobs.AbstractEffectJob;
import engine.objects.*;
import engine.wpak.data.ModifierEntry;
import java.sql.ResultSet;
import java.sql.SQLException;
@@ -21,6 +22,10 @@ public class SkillEffectModifier extends AbstractEffectModifier {
super(rs);
}
public SkillEffectModifier(ModifierEntry rs) {
super(rs);
}
@Override
protected void _applyEffectModifier(AbstractCharacter source, AbstractWorldObject awo, int trains, AbstractEffectJob effect) {
@@ -11,6 +11,7 @@ package engine.powers.effectmodifiers;
import engine.jobs.AbstractEffectJob;
import engine.objects.*;
import engine.wpak.data.ModifierEntry;
import java.sql.ResultSet;
import java.sql.SQLException;
@@ -21,6 +22,10 @@ public class SlayEffectModifier extends AbstractEffectModifier {
super(rs);
}
public SlayEffectModifier(ModifierEntry rs) {
super(rs);
}
@Override
protected void _applyEffectModifier(AbstractCharacter source, AbstractWorldObject awo, int trains, AbstractEffectJob effect) {
@@ -11,6 +11,7 @@ package engine.powers.effectmodifiers;
import engine.jobs.AbstractEffectJob;
import engine.objects.*;
import engine.wpak.data.ModifierEntry;
import java.sql.ResultSet;
import java.sql.SQLException;
@@ -21,6 +22,10 @@ public class SpeedEffectModifier extends AbstractEffectModifier {
super(rs);
}
public SpeedEffectModifier(ModifierEntry rs) {
super(rs);
}
@Override
protected void _applyEffectModifier(AbstractCharacter source, AbstractWorldObject awo, int trains, AbstractEffectJob effect) {
//Logger.error(this.getSimpleClassName(), "Speed applied with " + trains + " trains");
@@ -11,6 +11,7 @@ package engine.powers.effectmodifiers;
import engine.jobs.AbstractEffectJob;
import engine.objects.*;
import engine.wpak.data.ModifierEntry;
import java.sql.ResultSet;
import java.sql.SQLException;
@@ -21,6 +22,10 @@ public class SpireBlockEffectModifier extends AbstractEffectModifier {
super(rs);
}
public SpireBlockEffectModifier(ModifierEntry rs) {
super(rs);
}
@Override
protected void _applyEffectModifier(AbstractCharacter source, AbstractWorldObject awo, int trains, AbstractEffectJob effect) {
@@ -13,14 +13,15 @@ import engine.gameManager.DispatchManager;
import engine.jobs.AbstractEffectJob;
import engine.jobs.DamageOverTimeJob;
import engine.mbEnums;
import engine.mbEnums.EffectSourceType;
import engine.mbEnums.ModType;
import engine.mbEnums.SourceType;
import engine.net.client.msg.ModifyHealthMsg;
import engine.objects.*;
import engine.powers.ActionsBase;
import engine.powers.poweractions.AbstractPowerAction;
import engine.powers.poweractions.DamageOverTimePowerAction;
import engine.powers.poweractions.DirectDamagePowerAction;
import engine.wpak.data.ModifierEntry;
import org.pmw.tinylog.Logger;
import java.sql.ResultSet;
@@ -43,6 +44,10 @@ public class StaminaEffectModifier extends AbstractEffectModifier {
}
}
public StaminaEffectModifier(ModifierEntry rs) {
super(rs);
}
@Override
protected void _applyEffectModifier(AbstractCharacter source, AbstractWorldObject awo, int trains, AbstractEffectJob effect) {
if (awo == null) {
@@ -112,7 +117,7 @@ public class StaminaEffectModifier extends AbstractEffectModifier {
// Apply any power effect modifiers (such as stances)
if (bonus != null)
modAmount *= (1 + (bonus.getFloatPercentAll(ModType.PowerDamageModifier, EffectSourceType.None)));
modAmount *= (1 + (bonus.getFloatPercentAll(ModType.PowerDamageModifier, SourceType.None)));
}
if (modAmount == 0f)
return;
@@ -140,7 +145,7 @@ public class StaminaEffectModifier extends AbstractEffectModifier {
}
}
PlayerBonuses bonus = ac.getBonuses();
if (!skipImmune && bonus.getFloat(ModType.BlackMantle, EffectSourceType.Heal) >= trains) {
if (!skipImmune && bonus.getFloat(ModType.BlackMantle, SourceType.Heal) >= trains) {
ModifyHealthMsg mhm = new ModifyHealthMsg(source, ac, 0f, 0f, 0f, powerID, powerName, trains, effectID);
mhm.setUnknown03(5); //set target is immune
DispatchManager.sendToAllInRange(ac, mhm);
@@ -11,6 +11,7 @@ package engine.powers.effectmodifiers;
import engine.jobs.AbstractEffectJob;
import engine.objects.*;
import engine.wpak.data.ModifierEntry;
import java.sql.ResultSet;
import java.sql.SQLException;
@@ -21,6 +22,10 @@ public class StaminaFullEffectModifier extends AbstractEffectModifier {
super(rs);
}
public StaminaFullEffectModifier(ModifierEntry rs) {
super(rs);
}
@Override
protected void _applyEffectModifier(AbstractCharacter source, AbstractWorldObject awo, int trains, AbstractEffectJob effect) {
@@ -11,6 +11,7 @@ package engine.powers.effectmodifiers;
import engine.jobs.AbstractEffectJob;
import engine.objects.*;
import engine.wpak.data.ModifierEntry;
import java.sql.ResultSet;
import java.sql.SQLException;
@@ -21,6 +22,10 @@ public class StaminaRecoverRateEffectModifier extends AbstractEffectModifier {
super(rs);
}
public StaminaRecoverRateEffectModifier(ModifierEntry rs) {
super(rs);
}
@Override
protected void _applyEffectModifier(AbstractCharacter source, AbstractWorldObject awo, int trains, AbstractEffectJob effect) {

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