mirror of
https://github.com/araxiaonline/mod-mythic-plus.git
synced 2026-06-13 03:02:24 -04:00
Compare commits
7 Commits
araxia-mai
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
565922c456 | ||
|
|
85b82d923e | ||
|
|
e53469c1ba | ||
|
|
33f4d3d7ff | ||
|
|
8ef539f817 | ||
|
|
d469f1c632 | ||
|
|
1cac20f7a5 |
339
README.md
339
README.md
@@ -0,0 +1,339 @@
|
||||
# Mythic Plus Module for AzerothCore
|
||||
📣 **long overdue update**: This has been a passion project and relaxing output of my time. I was laid off, had to get surgery, then get a real job again at a high demand start-up that has uses up all my programming energy.
|
||||
|
||||
I also took a pause on this to build out some new action based mechanics for encounters, really early days on that and experimental.
|
||||
|
||||
I expect to come back to working on this project in a few months when as I am really getting the itch to revisit and **finish this**.
|
||||
|
||||
So what does that mean?
|
||||
|
||||
**Do the boring stuff**:
|
||||
1. upgrade everything to latest version of npc bots and patch any problems.
|
||||
2. start a fresh version not modified version and install as well as script a custom installer for the sql needs.
|
||||
3. Write thorough docs on how to install this.
|
||||
|
||||
**Finish the content:**
|
||||
1. Finish the remaining NPC trainers for new leveling tradeskills and make them more accessible.
|
||||
2. Retool the items one final time simplifying the sprawl that happened while I iterated on item creator.
|
||||
3. Add in the legendary and ascendant paths I always intended to complete
|
||||
|
||||
That list seems short but it is not, low effort or small amount of time I assure you.
|
||||
|
||||
Once I have checked those off... I am going to call this done.
|
||||
|
||||
I will fix bugs and put into maintainer mode, so only upgrading from new patches down from acore trickerrer, as I can.
|
||||
|
||||
👊 If you want to help me accomplish this to make it happen faster and have some programming skills or cash for AI credits to generate code, please DM me on discord, I am in all the WoW channels.
|
||||
|
||||
Look forward to completing this project and giving it to the rest of my nostalgic gamers out there.
|
||||
|
||||
-- Volek
|
||||
|
||||
🚨 **This is not mythic like in retail.** 🚨
|
||||
|
||||
This module started with the intention of creating a retail-like mythic plus system but has evolved into something unique. Instead, think of it as an **expansion of existing Wrath to new end game conte r** that reuses much of the existing dungeons and creatures, overhauling them to much higher difficulties with new loot mechanics.
|
||||
|
||||
## Overview
|
||||
|
||||
The Mythic Plus module transforms existing World of Warcraft dungeons (Wrath of the Lich King to add additional endgame content) into challenging, scaled encounters with progressive difficulty levels, enhanced rewards, and unique gameplay mechanics to extend gameplay experience.
|
||||
|
||||
## Features
|
||||
|
||||
### Core Systems
|
||||
- **Progressive Difficulty Scaling**: Multiple tiers of difficulty that scale creature stats, abilities, and rewards
|
||||
- **Player Advancement System**: Custom advancements for mythic plus progression, completion times, and special challenges
|
||||
- **Voiced NPCs**: Enhanced immersion with voice acting for key NPCs and encounters
|
||||
- **Dynamic Loot System**: New loot mechanics with scaled rewards based on difficulty completed
|
||||
- **Death Penalty System**: Configurable death penalties that affect progression
|
||||
- **Time-Based Challenges**:
|
||||
- (In progress)
|
||||
|
||||
### Massive Content Expansion
|
||||
- **50,000+ New Items**: Completely new item database with scaled equipment for all difficulty tiers
|
||||
- **New Rare Materials**: Custom crafting materials and rare drops exclusive to mythic plus content
|
||||
- **Reworked Tier Gear**: All expansion tier sets completely reworked and rebalanced for mythic plus scaling
|
||||
- **Cross-Expansion Integration**: Unified progression system spanning Vanilla through Wrath
|
||||
|
||||
### Difficulty Tiers
|
||||
The module supports multiple difficulty levels with configurable scaling:
|
||||
|
||||
- **Mythic Dungeons**: Base enhanced difficulty with improved creature stats and new rare material drops
|
||||
- **Legendary Dungeons**: In progress
|
||||
- **Ascendant Dungeons**: In progress
|
||||
|
||||
### Per-Dungeon Customization
|
||||
- **Database-Driven Scaling**: Each dungeon can have unique scaling values configured through database tables
|
||||
- **Individual Encounter Tuning**: Specific creatures and bosses can have custom multipliers independent of global settings
|
||||
- **Dungeon-Specific Materials**: Unique rare materials and rewards exclusive to certain dungeons or difficulty combinations
|
||||
|
||||
### Creature Enhancements
|
||||
- **Health & Damage Scaling**: Configurable multipliers for different difficulty tiers
|
||||
|
||||
- **Voiced Encounters**: Important NPCs and bosses feature voice acting for enhanced immersion
|
||||
|
||||
- **Cross-Expansion Itemization**: Unified item progression that spans all supported expansions
|
||||
|
||||
## Installation
|
||||
|
||||
### Prerequisites
|
||||
-- Trickerer Acore or Azerothcore
|
||||
- MySQL database 8.4
|
||||
- C++ compiler with C++20 support
|
||||
- docker for most tested experience
|
||||
- companion lua scripts **more details coming here**
|
||||
|
||||
### Build Process
|
||||
|
||||
1. **Clone the repository** into your AzerothCore modules directory:
|
||||
```bash
|
||||
cd /path/to/azerothcore/modules
|
||||
git clone https://github.com/araxiaonline/mod-mythic-plus.git
|
||||
```
|
||||
|
||||
2. **Rebuild AzerothCore** with the module:
|
||||
```bash
|
||||
cd /path/to/azerothcore/build
|
||||
make -j$(nproc)
|
||||
```
|
||||
|
||||
3. **Install database changes**:
|
||||
Database changes will be installed using azerothcores built in script, if it does not you can use the following commands below:
|
||||
|
||||
```bash
|
||||
# Apply the SQL files from data/sql/ in the correct order
|
||||
# Note: This includes extensive item database additions (50,000+ items)
|
||||
# and achievement system integration
|
||||
mysql -u username -p acore_world < modules/mod-mythic-plus/data/sql/db-characters/*.sql
|
||||
mysql -u username -p acore_world < modules/mod-mythic-plus/data/sql/db-world/*.sql
|
||||
|
||||
# Verify the massive item additions were applied successfully
|
||||
# The module includes a complete item database overhaul
|
||||
```
|
||||
|
||||
### Configuration
|
||||
|
||||
1. **Copy the configuration file**:
|
||||
```bash
|
||||
cp modules/mod-mythic-plus/conf/mod-mythic-plus.conf.dist /path/to/azerothcore/etc/modules/mod-mythic-plus.conf
|
||||
```
|
||||
|
||||
2. **Edit the configuration file** to customize your settings:
|
||||
```bash
|
||||
nano /path/to/azerothcore/etc/modules/mod-mythic-plus.conf
|
||||
```
|
||||
|
||||
## Configuration Options
|
||||
|
||||
### Global Settings
|
||||
```ini
|
||||
# Enable/disable the entire Mythic Plus system
|
||||
MythicPlus.Enabled = 1
|
||||
|
||||
# Enable enhanced rewards system
|
||||
MythicPlus.EnableEnhancedRewards = 1
|
||||
|
||||
# Enable achievement system integration
|
||||
MythicPlus.EnableAchievementSystem = 1
|
||||
|
||||
# Enable death limit system for dungeons
|
||||
MythicPlus.EnableDeathLimits = 1
|
||||
```
|
||||
|
||||
### Difficulty Scaling
|
||||
```ini
|
||||
# Mythic tier creature scaling
|
||||
MythicPlus.Mythic.DungeonHealth = 1.5
|
||||
MythicPlus.Mythic.DungeonDmg = 1.25
|
||||
MythicPlus.Mythic.DungeonDmgSpell = 1.3
|
||||
MythicPlus.Mythic.DungeonArmor = 1.25
|
||||
MythicPlus.Mythic.DungeonXPGain = 1.5
|
||||
|
||||
# Legendary tier creature scaling
|
||||
MythicPlus.Legendary.DungeonHealth = 2.25
|
||||
MythicPlus.Legendary.DungeonDmg = 2.25
|
||||
MythicPlus.Legendary.DungeonDmgSpell = 2.75
|
||||
MythicPlus.Legendary.DungeonArmor = 3.25
|
||||
MythicPlus.Legendary.DungeonXPGain = 85
|
||||
|
||||
# Ascendant tier creature scaling
|
||||
MythicPlus.Ascendant.DungeonHealth = 3.25
|
||||
MythicPlus.Ascendant.DungeonDmg = 3.25
|
||||
MythicPlus.Ascendant.DungeonDmgSpell = 3.75
|
||||
MythicPlus.Ascendant.DungeonArmor = 3.25
|
||||
MythicPlus.Ascendant.DungeonXPGain = 87
|
||||
```
|
||||
|
||||
### Death Penalty Settings
|
||||
```ini
|
||||
# Death limits before failure
|
||||
MythicPlus.Death.DeathLimit = 5
|
||||
|
||||
# Enable/disable death penalties
|
||||
MythicPlus.EnableDeathDifficulties = 1
|
||||
|
||||
# Death penalty scaling
|
||||
MythicPlus.DisableDamageSpell = 1
|
||||
```
|
||||
|
||||
## Supported Dungeons
|
||||
|
||||
The module enhances dungeons from multiple expansions:
|
||||
|
||||
### Wrath of the Lich King
|
||||
- All major dungeons receive scaling enhancements
|
||||
- Heroic and normal modes both supported
|
||||
- Enhanced creature abilities and mechanics
|
||||
|
||||
###
|
||||
### Cross-Expansion Features
|
||||
- Unified scaling system across all supported content
|
||||
- Consistent reward progression regardless of original expansion
|
||||
- Balanced challenge curve from entry-level to extreme difficulti
|
||||
## Commands
|
||||
|
||||
### Player Commands
|
||||
- **`.mythicplus info`** - Display current dungeon difficulty and stats
|
||||
- **`.mythicplus status`** - Show personal mythic plus progression and achievements
|
||||
- **`.mythicplus materials`** - View collected rare materials and crafting components
|
||||
- **`.mythicplus tokens`** - Check endgame token balance and available exchanges
|
||||
- **`.mythicplus achievements`** - Display mythic plus specific achievement progress
|
||||
- **`.mythicplus reset`** - Reset personal statistics (if enabled)
|
||||
|
||||
### GM Commands
|
||||
- **`.mythicplus enable <level>`** - Set dungeon difficulty level
|
||||
- **`.mythicplus disable`** - Disable mythic plus for current dungeon
|
||||
- **`.mythicplus reload`** - Reload configuration without restart
|
||||
- **`.mythicplus debug <player>`** - Show debug information for specified player
|
||||
- **`.mythicplus scaling <dungeon_id> <multiplier>`** - Set custom scaling for specific dungeon
|
||||
- **`.mythicplus materials add <player> <material_id> <count>`** - Add rare materials to player
|
||||
- **`.mythicplus tokens grant <player> <token_type> <amount>`** - Grant endgame tokens
|
||||
|
||||
## Gameplay Mechanics
|
||||
|
||||
### Difficulty Progression
|
||||
1. **Entry Level**: Start with Mythic difficulty for enhanced challenge
|
||||
2. **Intermediate**: Progress to Legendary for significant stat increases
|
||||
3. **Advanced**: Attempt Ascendant level for extreme challenges
|
||||
4. **Mastery**: Custom difficulty configurations for server-specific content
|
||||
|
||||
### Death System
|
||||
- Players have limited deaths before dungeon failure
|
||||
- Death count affects final rewards and achievements
|
||||
- Configurable penalties including reduced experience or currency
|
||||
|
||||
### Reward Scaling
|
||||
- **50,000+ New Items**: Massive equipment database with items scaling from entry-level mythic to extreme ascendant tiers
|
||||
- **Rare Material System**: Exclusive crafting materials that drop only in mythic plus content, used for high-end crafting and upgrades
|
||||
- **Endgame Token Economy**: Multiple token types for different content tiers, exchangeable for premium rewards
|
||||
- **Reworked Tier Sets**: Complete overhaul of all expansion tier gear, rescaled and rebalanced for mythic plus progression
|
||||
- **Achievement Rewards**: Exclusive items, titles, and cosmetic rewards locked behind achievement completion
|
||||
- **Cross-Expansion Progression**: Items and materials from different expansions integrated into a unified progression system
|
||||
|
||||
## Customization
|
||||
|
||||
### Adding Custom Difficulties
|
||||
The module supports adding custom difficulty tiers by:
|
||||
1. Editing the configuration file to add new scaling values
|
||||
2. Updating database entries for custom creature stats
|
||||
3. Implementing custom reward tables for new difficulties
|
||||
|
||||
### Creature Modifications
|
||||
- Individual creature scaling can be customized per dungeon
|
||||
- Special abilities can be added or modified through database entries
|
||||
- Custom spell rotations and AI behaviors configurable
|
||||
|
||||
### Loot Customization
|
||||
- **50,000+ Item Integration**: Massive custom item database with proper scaling and progression
|
||||
- **Rare Material Drops**: Custom drop tables for exclusive mythic plus materials
|
||||
- **Endgame Token Distribution**: Configurable token rewards based on difficulty and performance
|
||||
- **Tier Set Reworks**: All expansion tier sets completely rebalanced with new set bonuses and scaling
|
||||
- **Per-Dungeon Loot Tables**: Each dungeon can have unique reward pools and exclusive items
|
||||
- **Achievement-Gated Rewards**: Special items and materials locked behind specific achievement completions
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
### Common Issues
|
||||
|
||||
**Module not loading**:
|
||||
- Verify the module was compiled correctly
|
||||
- Check server logs for compilation errors
|
||||
- Ensure all dependencies are met
|
||||
|
||||
**Database errors**:
|
||||
- Confirm all SQL files were applied in correct order
|
||||
- Verify database user has appropriate permissions
|
||||
- Check for conflicting modules or custom modifications
|
||||
|
||||
**Configuration not working**:
|
||||
- Verify configuration file is in correct location
|
||||
- Check file permissions and syntax
|
||||
- Use `.mythicplus reload` command after making changes
|
||||
|
||||
**Performance issues**:
|
||||
- Monitor server resources during high-difficulty encounters
|
||||
- Adjust scaling values if creatures are too powerful
|
||||
- Consider reducing concurrent mythic plus dungeons
|
||||
|
||||
### Debug Mode
|
||||
Enable debug logging by setting:
|
||||
```ini
|
||||
MythicPlus.DebugMode = 1
|
||||
```
|
||||
|
||||
This provides detailed information about:
|
||||
- Creature scaling calculations
|
||||
- Reward calculations
|
||||
- Player progression tracking
|
||||
- System performance metrics
|
||||
|
||||
## Contributing
|
||||
|
||||
### Development Setup
|
||||
1. Fork the repository
|
||||
2. Create a feature branch
|
||||
3. Make your changes following the existing code style
|
||||
4. Test thoroughly on a development server
|
||||
5. Submit a pull request with detailed description
|
||||
|
||||
### Code Standards
|
||||
- Follow AzerothCore coding conventions
|
||||
- Include appropriate comments and documentation
|
||||
- Test all changes across multiple difficulty levels
|
||||
- Ensure compatibility with other popular modules
|
||||
|
||||
### Bug Reports
|
||||
When reporting bugs, include:
|
||||
- AzerothCore version and commit hash
|
||||
- Module version/commit
|
||||
- Configuration file settings
|
||||
- Detailed reproduction steps
|
||||
- Server logs showing the issue
|
||||
|
||||
## Credits
|
||||
|
||||
**Development Team**: Araxia Online Development Team
|
||||
- **Lead Developer**: ben-of-codecraft
|
||||
- **Contributors**: james-huston
|
||||
|
||||
**Special Thanks**:
|
||||
- AzerothCore development team for the excellent foundation
|
||||
- Community members who provided testing and feedback
|
||||
- Original World of Warcraft developers for creating the content we enhance
|
||||
|
||||
## License
|
||||
|
||||
This project is licensed under the GPL-3.0 License - see the [LICENSE](LICENSE) file for details.
|
||||
|
||||
## Support
|
||||
|
||||
- **GitHub Issues**: Report bugs and request features
|
||||
- **Community Discord**: Join discussions and get help from other users
|
||||
- **Documentation**: Check the wiki for additional guides and tutorials
|
||||
|
||||
---
|
||||
|
||||
*Remember: This module significantly increases dungeon difficulty. Start with lower difficulties and work your way up to avoid frustration. The enhanced challenge is designed to provide engaging content for experienced players seeking greater difficulty than the original game provided.*
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -12,4 +12,4 @@ VALUES
|
||||
(150008, 150008, 1), (150008, 150019, 2), -- Arcane Fusion
|
||||
(150009, 150009, 1), (150009, 150020, 2), -- Dark Fusion
|
||||
(150010, 150010, 1), (150010, 150021, 2) -- Earth Fusion
|
||||
;
|
||||
;
|
||||
@@ -5,7 +5,7 @@ REPLACE INTO `creature_template` (`entry`, `difficulty_entry_1`, `difficulty_ent
|
||||
|
||||
DELETE FROM `creature_template_model` WHERE (`CreatureID` = 9500561);
|
||||
INSERT INTO `creature_template_model` (`CreatureID`, `Idx`, `CreatureDisplayID`, `DisplayScale`, `Probability`, `VerifiedBuild`) VALUES
|
||||
(9500561, 0, 25594, 1, 1, 12340);
|
||||
(9500561, 0, 9500561, 1, 1, 12340);
|
||||
|
||||
DELETE FROM `creature_equip_template` WHERE (`CreatureID` = 9500561);
|
||||
INSERT INTO `creature_equip_template` (`CreatureID`, `ID`, `ItemID1`, `ItemID2`, `ItemID3`, `VerifiedBuild`) VALUES
|
||||
@@ -127,28 +127,24 @@ VALUES (9500566, 0.35, 1.25, 0, 0);
|
||||
REPLACE INTO creature_model_info (DisplayID, BoundingRadius, CombatReach, Gender, DisplayID_Other_Gender)
|
||||
VALUES (9500567, 0.35, 1.25, 1, 0);
|
||||
|
||||
REPLACE INTO acore_world.creature_model_info (DisplayID, BoundingRadius, CombatReach, Gender, DisplayID_Other_Gender)
|
||||
VALUES (9500568, 0.35, 1.25, 1, 0);
|
||||
|
||||
|
||||
-- Supporting Cast Spawns
|
||||
-- Agatha
|
||||
DELETE FROM `creature` WHERE (`id1` = 9500567);
|
||||
INSERT INTO `creature` (`guid`, `id1`, `id2`, `id3`, `map`, `zoneId`, `areaId`, `spawnMask`, `phaseMask`, `equipment_id`, `position_x`, `position_y`, `position_z`, `orientation`, `spawntimesecs`, `wander_distance`, `currentwaypoint`, `curhealth`, `curmana`, `MovementType`, `npcflag`, `unit_flags`, `dynamicflags`, `ScriptName`, `VerifiedBuild`, `CreateObject`, `Comment`) VALUES
|
||||
(9101011, 9500567, 0, 0, 530, 0, 0, 1, 1, 0, -1990.6, 5214.14, -44.0752, 0.978763, 300, 0, 0, 1333900, 0, 0, 0, 0, 0, '', NULL, 0, NULL),
|
||||
(9101014, 9500567, 0, 0, 571, 0, 0, 1, 1, 0, 5804.06, 639.865, 609.886, 5.98164, 300, 0, 0, 1333900, 0, 0, 0, 0, 0, '', NULL, 0, NULL);
|
||||
(9001011, 9500567, 0, 0, 530, 0, 0, 1, 1, 0, -1990.6, 5214.14, -44.0752, 0.978763, 300, 0, 0, 1333900, 0, 0, 0, 0, 0, '', NULL, 0, NULL),
|
||||
(9001014, 9500567, 0, 0, 571, 0, 0, 1, 1, 0, 5804.06, 639.865, 609.886, 5.98164, 300, 0, 0, 1333900, 0, 0, 0, 0, 0, '', NULL, 0, NULL);
|
||||
|
||||
-- Vaeric
|
||||
DELETE FROM `creature` WHERE (`id1` = 9500566);
|
||||
INSERT INTO `creature` (`guid`, `id1`, `id2`, `id3`, `map`, `zoneId`, `areaId`, `spawnMask`, `phaseMask`, `equipment_id`, `position_x`, `position_y`, `position_z`, `orientation`, `spawntimesecs`, `wander_distance`, `currentwaypoint`, `curhealth`, `curmana`, `MovementType`, `npcflag`, `unit_flags`, `dynamicflags`, `ScriptName`, `VerifiedBuild`, `CreateObject`, `Comment`) VALUES
|
||||
(9101013, 9500566, 0, 0, 530, 0, 0, 1, 1, 1, -1989.96, 5225.28, -44.6008, 5.71627, 300, 0, 0, 1333900, 0, 0, 0, 0, 0, '', NULL, 0, NULL),
|
||||
(9101015, 9500566, 0, 0, 571, 0, 0, 1, 1, 1, 5826.64, 674.772, 609.885, 5.53385, 300, 0, 0, 1333900, 0, 0, 0, 0, 0, '', NULL, 0, NULL);
|
||||
(9001013, 9500566, 0, 0, 530, 0, 0, 1, 1, 1, -1989.96, 5225.28, -44.6008, 5.71627, 300, 0, 0, 1333900, 0, 0, 0, 0, 0, '', NULL, 0, NULL),
|
||||
(9001015, 9500566, 0, 0, 571, 0, 0, 1, 1, 1, 5826.64, 674.772, 609.885, 5.53385, 300, 0, 0, 1333900, 0, 0, 0, 0, 0, '', NULL, 0, NULL);
|
||||
|
||||
-- Slyvia
|
||||
DELETE FROM `creature` WHERE (`id1` = 9500568);
|
||||
INSERT INTO `creature` (`guid`, `id1`, `id2`, `id3`, `map`, `zoneId`, `areaId`, `spawnMask`, `phaseMask`, `equipment_id`, `position_x`, `position_y`, `position_z`, `orientation`, `spawntimesecs`, `wander_distance`, `currentwaypoint`, `curhealth`, `curmana`, `MovementType`, `npcflag`, `unit_flags`, `dynamicflags`, `ScriptName`, `VerifiedBuild`, `CreateObject`, `Comment`) VALUES
|
||||
(9101010, 9500568, 0, 0, 530, 0, 0, 1, 1, 1, -1994.38, 5219.83, -44.2111, 0.597826, 300, 0, 0, 1333900, 0, 0, 0, 0, 0, '', NULL, 0, NULL),
|
||||
(9101016, 9500568, 0, 0, 571, 0, 0, 1, 1, 1, 5831.89, 678.204, 609.885, 5.0846, 300, 0, 0, 1333900, 0, 0, 0, 0, 0, '', NULL, 0, NULL);
|
||||
(9001010, 9500568, 0, 0, 530, 0, 0, 1, 1, 1, -1994.38, 5219.83, -44.2111, 0.597826, 300, 0, 0, 1333900, 0, 0, 0, 0, 0, '', NULL, 0, NULL),
|
||||
(9001016, 9500568, 0, 0, 571, 0, 0, 1, 1, 1, 5831.89, 678.204, 609.885, 5.0846, 300, 0, 0, 1333900, 0, 0, 0, 0, 0, '', NULL, 0, NULL);
|
||||
|
||||
|
||||
-- Gossip Texts
|
||||
|
||||
6
data/sql/db-world/base/12_npcbot_wander_fix.sql
Normal file
6
data/sql/db-world/base/12_npcbot_wander_fix.sql
Normal file
@@ -0,0 +1,6 @@
|
||||
UPDATE creature_template_npcbot_wander_nodes
|
||||
SET maxlevel = 85
|
||||
WHERE maxlevel = 80;
|
||||
|
||||
|
||||
UPDATE battleground_template SET MaxLvl = 85 where MaxLvl = 80;
|
||||
@@ -1,11 +1,11 @@
|
||||
|
||||
-- Supporting Cast Environment items
|
||||
REPLACE INTO acore_world.gameobject (guid, id, map, zoneId, areaId, spawnMask, phaseMask, position_x, position_y, position_z, orientation, rotation0, rotation1, rotation2, rotation3, spawntimesecs, animprogress, state, ScriptName, VerifiedBuild, Comment) VALUES (8101043, 185002, 530, 0, 0, 1, 1, -1992.59, 5211.21, -44.239, 0.985043, -0, -0, -0.472849, -0.881143, 300, 0, 1, '', null, null);
|
||||
REPLACE INTO acore_world.gameobject (guid, id, map, zoneId, areaId, spawnMask, phaseMask, position_x, position_y, position_z, orientation, rotation0, rotation1, rotation2, rotation3, spawntimesecs, animprogress, state, ScriptName, VerifiedBuild, Comment) VALUES (8101046, 190213, 530, 0, 0, 1, 1, -1999.01, 5226.06, -44.2926, 5.86235, -0, -0, -0.20887, 0.977943, 300, 0, 1, '', null, null);
|
||||
REPLACE INTO acore_world.gameobject (guid, id, map, zoneId, areaId, spawnMask, phaseMask, position_x, position_y, position_z, orientation, rotation0, rotation1, rotation2, rotation3, spawntimesecs, animprogress, state, ScriptName, VerifiedBuild, Comment) VALUES (8101047, 182934, 530, 0, 0, 1, 1, -1992.11, 5207.81, -44.7864, 0.95047, -0, -0, -0.457548, -0.889185, 300, 0, 1, '', null, null);
|
||||
REPLACE INTO acore_world.gameobject (guid, id, map, zoneId, areaId, spawnMask, phaseMask, position_x, position_y, position_z, orientation, rotation0, rotation1, rotation2, rotation3, spawntimesecs, animprogress, state, ScriptName, VerifiedBuild, Comment) VALUES (8101050, 192935, 530, 0, 0, 1, 1, -1991.3, 5213.01, -44.0442, 1.02353, -0, -0, -0.489717, -0.871881, 300, 0, 1, '', null, null);
|
||||
REPLACE INTO acore_world.gameobject (guid, id, map, zoneId, areaId, spawnMask, phaseMask, position_x, position_y, position_z, orientation, rotation0, rotation1, rotation2, rotation3, spawntimesecs, animprogress, state, ScriptName, VerifiedBuild, Comment) VALUES (8101051, 194581, 530, 0, 0, 1, 1, -1993.03, 5220.23, -44.2068, 3.67347, -0, -0, -0.964847, 0.262813, 300, 0, 1, '', null, null);
|
||||
REPLACE INTO acore_world.gameobject (guid, id, map, zoneId, areaId, spawnMask, phaseMask, position_x, position_y, position_z, orientation, rotation0, rotation1, rotation2, rotation3, spawntimesecs, animprogress, state, ScriptName, VerifiedBuild, Comment) VALUES (8101052, 182483, 530, 0, 0, 1, 1, -1994.8, 5219.62, -44.2093, 0.71644, -0, -0, -0.350608, -0.936523, 300, 0, 1, '', null, null);
|
||||
REPLACE INTO acore_world.gameobject (guid, id, map, zoneId, areaId, spawnMask, phaseMask, position_x, position_y, position_z, orientation, rotation0, rotation1, rotation2, rotation3, spawntimesecs, animprogress, state, ScriptName, VerifiedBuild, Comment) VALUES (8101055, 179846, 530, 0, 0, 1, 1, -1986.62, 5222.6, -44.6557, 3.55485, -0, -0, -0.978728, 0.205163, 300, 0, 1, '', null, null);
|
||||
REPLACE INTO acore_world.gameobject (guid, id, map, zoneId, areaId, spawnMask, phaseMask, position_x, position_y, position_z, orientation, rotation0, rotation1, rotation2, rotation3, spawntimesecs, animprogress, state, ScriptName, VerifiedBuild, Comment) VALUES (8101057, 192935, 571, 0, 0, 1, 1, 5804.06, 639.865, 609.886, 5.84656, -0, -0, -0.216585, 0.976264, 300, 0, 1, '', null, null);
|
||||
REPLACE INTO acore_world.gameobject (guid, id, map, zoneId, areaId, spawnMask, phaseMask, position_x, position_y, position_z, orientation, rotation0, rotation1, rotation2, rotation3, spawntimesecs, animprogress, state, ScriptName, VerifiedBuild, Comment) VALUES (8101059, 187082, 571, 0, 0, 1, 1, 5829.63, 674.817, 609.886, 5.36498, -0, -0, -0.443142, 0.896452, 300, 0, 1, '', null, null);
|
||||
REPLACE INTO acore_world.gameobject (guid, id, map, zoneId, areaId, spawnMask, phaseMask, position_x, position_y, position_z, orientation, rotation0, rotation1, rotation2, rotation3, spawntimesecs, animprogress, state, ScriptName, VerifiedBuild, Comment) VALUES (8001043, 185002, 530, 0, 0, 1, 1, -1992.59, 5211.21, -44.239, 0.985043, -0, -0, -0.472849, -0.881143, 300, 0, 1, '', null, null);
|
||||
REPLACE INTO acore_world.gameobject (guid, id, map, zoneId, areaId, spawnMask, phaseMask, position_x, position_y, position_z, orientation, rotation0, rotation1, rotation2, rotation3, spawntimesecs, animprogress, state, ScriptName, VerifiedBuild, Comment) VALUES (8001046, 190213, 530, 0, 0, 1, 1, -1999.01, 5226.06, -44.2926, 5.86235, -0, -0, -0.20887, 0.977943, 300, 0, 1, '', null, null);
|
||||
REPLACE INTO acore_world.gameobject (guid, id, map, zoneId, areaId, spawnMask, phaseMask, position_x, position_y, position_z, orientation, rotation0, rotation1, rotation2, rotation3, spawntimesecs, animprogress, state, ScriptName, VerifiedBuild, Comment) VALUES (8001047, 182934, 530, 0, 0, 1, 1, -1992.11, 5207.81, -44.7864, 0.95047, -0, -0, -0.457548, -0.889185, 300, 0, 1, '', null, null);
|
||||
REPLACE INTO acore_world.gameobject (guid, id, map, zoneId, areaId, spawnMask, phaseMask, position_x, position_y, position_z, orientation, rotation0, rotation1, rotation2, rotation3, spawntimesecs, animprogress, state, ScriptName, VerifiedBuild, Comment) VALUES (8001050, 192935, 530, 0, 0, 1, 1, -1991.3, 5213.01, -44.0442, 1.02353, -0, -0, -0.489717, -0.871881, 300, 0, 1, '', null, null);
|
||||
REPLACE INTO acore_world.gameobject (guid, id, map, zoneId, areaId, spawnMask, phaseMask, position_x, position_y, position_z, orientation, rotation0, rotation1, rotation2, rotation3, spawntimesecs, animprogress, state, ScriptName, VerifiedBuild, Comment) VALUES (8001051, 194581, 530, 0, 0, 1, 1, -1993.03, 5220.23, -44.2068, 3.67347, -0, -0, -0.964847, 0.262813, 300, 0, 1, '', null, null);
|
||||
REPLACE INTO acore_world.gameobject (guid, id, map, zoneId, areaId, spawnMask, phaseMask, position_x, position_y, position_z, orientation, rotation0, rotation1, rotation2, rotation3, spawntimesecs, animprogress, state, ScriptName, VerifiedBuild, Comment) VALUES (8001052, 182483, 530, 0, 0, 1, 1, -1994.8, 5219.62, -44.2093, 0.71644, -0, -0, -0.350608, -0.936523, 300, 0, 1, '', null, null);
|
||||
REPLACE INTO acore_world.gameobject (guid, id, map, zoneId, areaId, spawnMask, phaseMask, position_x, position_y, position_z, orientation, rotation0, rotation1, rotation2, rotation3, spawntimesecs, animprogress, state, ScriptName, VerifiedBuild, Comment) VALUES (8001055, 179846, 530, 0, 0, 1, 1, -1986.62, 5222.6, -44.6557, 3.55485, -0, -0, -0.978728, 0.205163, 300, 0, 1, '', null, null);
|
||||
REPLACE INTO acore_world.gameobject (guid, id, map, zoneId, areaId, spawnMask, phaseMask, position_x, position_y, position_z, orientation, rotation0, rotation1, rotation2, rotation3, spawntimesecs, animprogress, state, ScriptName, VerifiedBuild, Comment) VALUES (8001057, 192935, 571, 0, 0, 1, 1, 5804.06, 639.865, 609.886, 5.84656, -0, -0, -0.216585, 0.976264, 300, 0, 1, '', null, null);
|
||||
REPLACE INTO acore_world.gameobject (guid, id, map, zoneId, areaId, spawnMask, phaseMask, position_x, position_y, position_z, orientation, rotation0, rotation1, rotation2, rotation3, spawntimesecs, animprogress, state, ScriptName, VerifiedBuild, Comment) VALUES (8001059, 187082, 571, 0, 0, 1, 1, 5829.63, 674.817, 609.886, 5.36498, -0, -0, -0.443142, 0.896452, 300, 0, 1, '', null, null);
|
||||
|
||||
172
data/sql/db-world/base/13a-gear-rebalance.sql
Normal file
172
data/sql/db-world/base/13a-gear-rebalance.sql
Normal file
@@ -0,0 +1,172 @@
|
||||
-- This rebalances lower level iLevel gear
|
||||
UPDATE item_template
|
||||
SET
|
||||
stat_value1 = CASE
|
||||
WHEN stat_type1 IN (38, 45) AND ItemLevel BETWEEN 300 AND 305 THEN FLOOR(stat_value1 * 0.75)
|
||||
WHEN stat_type1 IN (38, 45) AND ItemLevel > 305 AND ItemLevel <= 315 THEN FLOOR(stat_value1 * 0.80)
|
||||
WHEN stat_type1 IN (38, 45) AND ItemLevel > 315 AND ItemLevel <= 325 THEN FLOOR(stat_value1 * 0.90)
|
||||
ELSE stat_value1
|
||||
END,
|
||||
stat_value2 = CASE
|
||||
WHEN stat_type2 IN (38, 45) AND ItemLevel BETWEEN 300 AND 305 THEN FLOOR(stat_value2 * 0.75)
|
||||
WHEN stat_type2 IN (38, 45) AND ItemLevel > 305 AND ItemLevel <= 315 THEN FLOOR(stat_value2 * 0.80)
|
||||
WHEN stat_type2 IN (38, 45) AND ItemLevel > 315 AND ItemLevel <= 325 THEN FLOOR(stat_value2 * 0.90)
|
||||
ELSE stat_value2
|
||||
END,
|
||||
stat_value3 = CASE
|
||||
WHEN stat_type3 IN (38, 45) AND ItemLevel BETWEEN 300 AND 305 THEN FLOOR(stat_value3 * 0.75)
|
||||
WHEN stat_type3 IN (38, 45) AND ItemLevel > 305 AND ItemLevel <= 315 THEN FLOOR(stat_value3 * 0.80)
|
||||
WHEN stat_type3 IN (38, 45) AND ItemLevel > 315 AND ItemLevel <= 325 THEN FLOOR(stat_value3 * 0.90)
|
||||
ELSE stat_value3
|
||||
END,
|
||||
stat_value4 = CASE
|
||||
WHEN stat_type4 IN (38, 45) AND ItemLevel BETWEEN 300 AND 305 THEN FLOOR(stat_value4 * 0.75)
|
||||
WHEN stat_type4 IN (38, 45) AND ItemLevel > 305 AND ItemLevel <= 315 THEN FLOOR(stat_value4 * 0.80)
|
||||
WHEN stat_type4 IN (38, 45) AND ItemLevel > 315 AND ItemLevel <= 325 THEN FLOOR(stat_value4 * 0.90)
|
||||
ELSE stat_value4
|
||||
END,
|
||||
stat_value5 = CASE
|
||||
WHEN stat_type5 IN (38, 45) AND ItemLevel BETWEEN 300 AND 305 THEN FLOOR(stat_value5 * 0.75)
|
||||
WHEN stat_type5 IN (38, 45) AND ItemLevel > 305 AND ItemLevel <= 315 THEN FLOOR(stat_value5 * 0.80)
|
||||
WHEN stat_type5 IN (38, 45) AND ItemLevel > 315 AND ItemLevel <= 325 THEN FLOOR(stat_value5 * 0.90)
|
||||
ELSE stat_value5
|
||||
END,
|
||||
stat_value6 = CASE
|
||||
WHEN stat_type6 IN (38, 45) AND ItemLevel BETWEEN 300 AND 305 THEN FLOOR(stat_value6 * 0.75)
|
||||
WHEN stat_type6 IN (38, 45) AND ItemLevel > 305 AND ItemLevel <= 315 THEN FLOOR(stat_value6 * 0.80)
|
||||
WHEN stat_type6 IN (38, 45) AND ItemLevel > 315 AND ItemLevel <= 325 THEN FLOOR(stat_value6 * 0.90)
|
||||
ELSE stat_value6
|
||||
END,
|
||||
stat_value7 = CASE
|
||||
WHEN stat_type7 IN (38, 45) AND ItemLevel BETWEEN 300 AND 305 THEN FLOOR(stat_value7 * 0.75)
|
||||
WHEN stat_type7 IN (38, 45) AND ItemLevel > 305 AND ItemLevel <= 315 THEN FLOOR(stat_value7 * 0.80)
|
||||
WHEN stat_type7 IN (38, 45) AND ItemLevel > 315 AND ItemLevel <= 325 THEN FLOOR(stat_value7 * 0.90) ELSE stat_value7
|
||||
END,
|
||||
stat_value8 = CASE
|
||||
WHEN stat_type8 IN (38, 45) AND ItemLevel BETWEEN 300 AND 305 THEN FLOOR(stat_value8 * 0.75)
|
||||
WHEN stat_type8 IN (38, 45) AND ItemLevel > 305 AND ItemLevel <= 315 THEN FLOOR(stat_value8 * 0.80)
|
||||
WHEN stat_type8 IN (38, 45) AND ItemLevel > 315 AND ItemLevel <= 325 THEN FLOOR(stat_value8 * 0.90)
|
||||
ELSE stat_value8
|
||||
END
|
||||
WHERE
|
||||
entry BETWEEN 20000000 and 21000000;
|
||||
|
||||
-- Rebalance primary strength, agi, intellect down for lower ilvl items
|
||||
UPDATE item_template
|
||||
SET
|
||||
stat_value1 = CASE
|
||||
WHEN stat_type1 IN (3,4,5) AND ItemLevel BETWEEN 300 AND 305 THEN FLOOR(stat_value1 * 0.85)
|
||||
WHEN stat_type1 IN (3,4,5) AND ItemLevel > 305 AND ItemLevel <= 315 THEN FLOOR(stat_value1 * 0.90)
|
||||
ELSE stat_value1
|
||||
END,
|
||||
stat_value2 = CASE
|
||||
WHEN stat_type2 IN (3,4,5) AND ItemLevel BETWEEN 300 AND 305 THEN FLOOR(stat_value2 * 0.85)
|
||||
WHEN stat_type2 IN (3,4,5) AND ItemLevel > 305 AND ItemLevel <= 315 THEN FLOOR(stat_value2 * 0.90)
|
||||
ELSE stat_value2
|
||||
END,
|
||||
stat_value3 = CASE
|
||||
WHEN stat_type3 IN (3,4,5) AND ItemLevel BETWEEN 300 AND 305 THEN FLOOR(stat_value3 * 0.85)
|
||||
WHEN stat_type3 IN (3,4,5) AND ItemLevel > 305 AND ItemLevel <= 315 THEN FLOOR(stat_value3 * 0.90)
|
||||
ELSE stat_value3
|
||||
END,
|
||||
stat_value4 = CASE
|
||||
WHEN stat_type4 IN (3,4,5) AND ItemLevel BETWEEN 300 AND 305 THEN FLOOR(stat_value4 * 0.85)
|
||||
WHEN stat_type4 IN (3,4,5) AND ItemLevel > 305 AND ItemLevel <= 315 THEN FLOOR(stat_value4 * 0.90)
|
||||
ELSE stat_value4
|
||||
END,
|
||||
stat_value5 = CASE
|
||||
WHEN stat_type5 IN (3,4,5) AND ItemLevel BETWEEN 300 AND 305 THEN FLOOR(stat_value5 * 0.85)
|
||||
WHEN stat_type5 IN (3,4,5) AND ItemLevel > 305 AND ItemLevel <= 315 THEN FLOOR(stat_value5 * 0.90)
|
||||
ELSE stat_value5
|
||||
END,
|
||||
stat_value6 = CASE
|
||||
WHEN stat_type6 IN (3,4,5) AND ItemLevel BETWEEN 300 AND 305 THEN FLOOR(stat_value6 * 0.85)
|
||||
WHEN stat_type6 IN (3,4,5) AND ItemLevel > 305 AND ItemLevel <= 315 THEN FLOOR(stat_value6 * 0.90)
|
||||
ELSE stat_value6
|
||||
END,
|
||||
stat_value7 = CASE
|
||||
WHEN stat_type7 IN (3,4,5) AND ItemLevel BETWEEN 300 AND 305 THEN FLOOR(stat_value7 * 0.85)
|
||||
WHEN stat_type7 IN (3,4,5) AND ItemLevel > 305 AND ItemLevel <= 315 THEN FLOOR(stat_value7 * 0.90)
|
||||
ELSE stat_value7
|
||||
END,
|
||||
stat_value8 = CASE
|
||||
WHEN stat_type8 IN (3,4,5) AND ItemLevel BETWEEN 300 AND 305 THEN FLOOR(stat_value8 * 0.85)
|
||||
WHEN stat_type8 IN (3,4,5) AND ItemLevel > 305 AND ItemLevel <= 315 THEN FLOOR(stat_value8 * 0.90)
|
||||
ELSE stat_value8
|
||||
END
|
||||
WHERE
|
||||
entry BETWEEN 20000000 and 21000000;
|
||||
|
||||
-- Nerf hit / spell hit crit rating and others items 300-315 by 15% and 10%
|
||||
UPDATE item_template
|
||||
SET
|
||||
stat_value1 = CASE
|
||||
WHEN (stat_type1 BETWEEN 16 AND 37 OR stat_type1 = 44) AND ItemLevel BETWEEN 300 AND 305 THEN FLOOR(stat_value1 * 0.85)
|
||||
WHEN (stat_type1 BETWEEN 16 AND 37 OR stat_type1 = 44) AND ItemLevel > 305 AND ItemLevel <= 315 THEN FLOOR(stat_value1 * 0.90)
|
||||
ELSE stat_value1
|
||||
END,
|
||||
stat_value2 = CASE
|
||||
WHEN (stat_type2 BETWEEN 16 AND 37 OR stat_type2 = 44) AND ItemLevel BETWEEN 300 AND 305 THEN FLOOR(stat_value2 * 0.85)
|
||||
WHEN (stat_type2 BETWEEN 16 AND 37 OR stat_type2 = 44) AND ItemLevel > 305 AND ItemLevel <= 315 THEN FLOOR(stat_value2 * 0.90)
|
||||
ELSE stat_value2
|
||||
END,
|
||||
stat_value3 = CASE
|
||||
WHEN (stat_type3 BETWEEN 16 AND 37 OR stat_type3 = 44) AND ItemLevel BETWEEN 300 AND 305 THEN FLOOR(stat_value3 * 0.85)
|
||||
WHEN (stat_type3 BETWEEN 16 AND 37 OR stat_type3 = 44) AND ItemLevel > 305 AND ItemLevel <= 315 THEN FLOOR(stat_value3 * 0.90)
|
||||
ELSE stat_value3
|
||||
END,
|
||||
stat_value4 = CASE
|
||||
WHEN (stat_type4 BETWEEN 16 AND 37 OR stat_type4 = 44) AND ItemLevel BETWEEN 300 AND 305 THEN FLOOR(stat_value4 * 0.85)
|
||||
WHEN (stat_type4 BETWEEN 16 AND 37 OR stat_type4 = 44) AND ItemLevel > 305 AND ItemLevel <= 315 THEN FLOOR(stat_value4 * 0.90)
|
||||
ELSE stat_value4
|
||||
END,
|
||||
stat_value5 = CASE
|
||||
WHEN (stat_type5 BETWEEN 16 AND 37 OR stat_type5 = 44) AND ItemLevel BETWEEN 300 AND 305 THEN FLOOR(stat_value5 * 0.85)
|
||||
WHEN (stat_type5 BETWEEN 16 AND 37 OR stat_type5 = 44) AND ItemLevel > 305 AND ItemLevel <= 315 THEN FLOOR(stat_value5 * 0.90)
|
||||
ELSE stat_value5
|
||||
END,
|
||||
stat_value6 = CASE
|
||||
WHEN (stat_type6 BETWEEN 16 AND 37 OR stat_type6 = 44) AND ItemLevel BETWEEN 300 AND 305 THEN FLOOR(stat_value6 * 0.85)
|
||||
WHEN (stat_type6 BETWEEN 16 AND 37 OR stat_type6 = 44) AND ItemLevel > 305 AND ItemLevel <= 315 THEN FLOOR(stat_value6 * 0.90)
|
||||
ELSE stat_value6
|
||||
END,
|
||||
stat_value7 = CASE
|
||||
WHEN (stat_type7 BETWEEN 16 AND 37 OR stat_type7 = 44) AND ItemLevel BETWEEN 300 AND 305 THEN FLOOR(stat_value7 * 0.85)
|
||||
WHEN (stat_type7 BETWEEN 16 AND 37 OR stat_type7 = 44) AND ItemLevel > 305 AND ItemLevel <= 315 THEN FLOOR(stat_value7 * 0.90)
|
||||
ELSE stat_value7
|
||||
END,
|
||||
stat_value8 = CASE
|
||||
WHEN (stat_type8 BETWEEN 16 AND 37 OR stat_type8 = 44) AND ItemLevel BETWEEN 300 AND 305 THEN FLOOR(stat_value8 * 0.85)
|
||||
WHEN (stat_type8 BETWEEN 16 AND 37 OR stat_type8 = 44) AND ItemLevel > 305 AND ItemLevel <= 315 THEN FLOOR(stat_value8 * 0.90)
|
||||
ELSE stat_value8
|
||||
END
|
||||
WHERE
|
||||
entry BETWEEN 20000000 and 21000000;
|
||||
|
||||
-- reduce damage on lower level items
|
||||
UPDATE item_template
|
||||
SET
|
||||
dmg_min1 = CASE
|
||||
WHEN ItemLevel BETWEEN 300 AND 305 THEN FLOOR(dmg_min1 * 0.85)
|
||||
WHEN ItemLevel > 305 AND ItemLevel <= 315 THEN FLOOR(dmg_min1 * 0.90)
|
||||
ELSE dmg_min1
|
||||
END,
|
||||
dmg_max1 = CASE
|
||||
WHEN ItemLevel BETWEEN 300 AND 305 THEN FLOOR(dmg_max1 * 0.85)
|
||||
WHEN ItemLevel > 305 AND ItemLevel <= 315 THEN FLOOR(dmg_max1 * 0.90)
|
||||
ELSE dmg_max1
|
||||
END,
|
||||
dmg_min2 = CASE
|
||||
WHEN ItemLevel BETWEEN 300 AND 305 THEN FLOOR(dmg_min2 * 0.85)
|
||||
WHEN ItemLevel > 305 AND ItemLevel <= 315 THEN FLOOR(dmg_min2 * 0.90)
|
||||
ELSE dmg_min2
|
||||
END,
|
||||
dmg_max2 = CASE
|
||||
WHEN ItemLevel BETWEEN 300 AND 305 THEN FLOOR(dmg_max2 * 0.85)
|
||||
WHEN ItemLevel > 305 AND ItemLevel <= 315 THEN FLOOR(dmg_max2 * 0.90)
|
||||
ELSE dmg_max2
|
||||
END
|
||||
WHERE
|
||||
entry BETWEEN 20000000 and 21000000;
|
||||
|
||||
|
||||
@@ -58,10 +58,10 @@ INSERT INTO `creature_template_model` (`CreatureID`, `Idx`, `CreatureDisplayID`,
|
||||
|
||||
|
||||
-- Spawns
|
||||
REPLACE INTO acore_world.creature (guid, id1, id2, id3, map, zoneId, areaId, spawnMask, phaseMask, equipment_id, position_x, position_y, position_z, orientation, spawntimesecs, wander_distance, currentwaypoint, curhealth, curmana, MovementType, npcflag, unit_flags, dynamicflags, ScriptName, VerifiedBuild, CreateObject, Comment) VALUES (19001025, 9500800, 0, 0, 571, 0, 0, 1, 1, 1, 5738.66, 741.002, 641.74, 4.1062, 300, 0, 0, 10080, 8814, 0, 0, 0, 0, '', null, 0, null);
|
||||
REPLACE INTO acore_world.creature (guid, id1, id2, id3, map, zoneId, areaId, spawnMask, phaseMask, equipment_id, position_x, position_y, position_z, orientation, spawntimesecs, wander_distance, currentwaypoint, curhealth, curmana, MovementType, npcflag, unit_flags, dynamicflags, ScriptName, VerifiedBuild, CreateObject, Comment) VALUES (19001026, 9500801, 0, 0, 571, 0, 0, 1, 1, 0, 5736.61, 742.711, 641.75, 4.04965, 300, 0, 0, 3739, 8814, 0, 0, 0, 0, '', null, 0, null);
|
||||
REPLACE INTO acore_world.creature (guid, id1, id2, id3, map, zoneId, areaId, spawnMask, phaseMask, equipment_id, position_x, position_y, position_z, orientation, spawntimesecs, wander_distance, currentwaypoint, curhealth, curmana, MovementType, npcflag, unit_flags, dynamicflags, ScriptName, VerifiedBuild, CreateObject, Comment) VALUES (19001027, 9500802, 0, 0, 571, 0, 0, 1, 1, 0, 5732.59, 746.182, 641.762, 4.01431, 300, 0, 0, 5342, 0, 0, 0, 0, 0, '', null, 0, null);
|
||||
REPLACE INTO acore_world.creature (guid, id1, id2, id3, map, zoneId, areaId, spawnMask, phaseMask, equipment_id, position_x, position_y, position_z, orientation, spawntimesecs, wander_distance, currentwaypoint, curhealth, curmana, MovementType, npcflag, unit_flags, dynamicflags, ScriptName, VerifiedBuild, CreateObject, Comment) VALUES (19001028, 9500803, 0, 0, 571, 0, 0, 1, 1, 0, 5730.76, 747.711, 641.761, 4.16746, 300, 0, 0, 12600, 0, 0, 0, 0, 0, '', null, 0, null);
|
||||
REPLACE INTO acore_world.creature (guid, id1, id2, id3, map, zoneId, areaId, spawnMask, phaseMask, equipment_id, position_x, position_y, position_z, orientation, spawntimesecs, wander_distance, currentwaypoint, curhealth, curmana, MovementType, npcflag, unit_flags, dynamicflags, ScriptName, VerifiedBuild, CreateObject, Comment) VALUES (19001029, 9500804, 0, 0, 571, 0, 0, 1, 1, 0, 5725.58, 750.971, 641.768, 4.48476, 300, 0, 0, 12600, 0, 0, 0, 0, 0, '', null, 0, null);
|
||||
REPLACE INTO acore_world.creature (guid, id1, id2, id3, map, zoneId, areaId, spawnMask, phaseMask, equipment_id, position_x, position_y, position_z, orientation, spawntimesecs, wander_distance, currentwaypoint, curhealth, curmana, MovementType, npcflag, unit_flags, dynamicflags, ScriptName, VerifiedBuild, CreateObject, Comment) VALUES (9001025, 9500800, 0, 0, 571, 0, 0, 1, 1, 1, 5738.66, 741.002, 641.74, 4.1062, 300, 0, 0, 10080, 8814, 0, 0, 0, 0, '', null, 0, null);
|
||||
REPLACE INTO acore_world.creature (guid, id1, id2, id3, map, zoneId, areaId, spawnMask, phaseMask, equipment_id, position_x, position_y, position_z, orientation, spawntimesecs, wander_distance, currentwaypoint, curhealth, curmana, MovementType, npcflag, unit_flags, dynamicflags, ScriptName, VerifiedBuild, CreateObject, Comment) VALUES (9001026, 9500801, 0, 0, 571, 0, 0, 1, 1, 0, 5736.61, 742.711, 641.75, 4.04965, 300, 0, 0, 3739, 8814, 0, 0, 0, 0, '', null, 0, null);
|
||||
REPLACE INTO acore_world.creature (guid, id1, id2, id3, map, zoneId, areaId, spawnMask, phaseMask, equipment_id, position_x, position_y, position_z, orientation, spawntimesecs, wander_distance, currentwaypoint, curhealth, curmana, MovementType, npcflag, unit_flags, dynamicflags, ScriptName, VerifiedBuild, CreateObject, Comment) VALUES (9001027, 9500802, 0, 0, 571, 0, 0, 1, 1, 0, 5732.59, 746.182, 641.762, 4.01431, 300, 0, 0, 5342, 0, 0, 0, 0, 0, '', null, 0, null);
|
||||
REPLACE INTO acore_world.creature (guid, id1, id2, id3, map, zoneId, areaId, spawnMask, phaseMask, equipment_id, position_x, position_y, position_z, orientation, spawntimesecs, wander_distance, currentwaypoint, curhealth, curmana, MovementType, npcflag, unit_flags, dynamicflags, ScriptName, VerifiedBuild, CreateObject, Comment) VALUES (9001028, 9500803, 0, 0, 571, 0, 0, 1, 1, 0, 5730.76, 747.711, 641.761, 4.16746, 300, 0, 0, 12600, 0, 0, 0, 0, 0, '', null, 0, null);
|
||||
REPLACE INTO acore_world.creature (guid, id1, id2, id3, map, zoneId, areaId, spawnMask, phaseMask, equipment_id, position_x, position_y, position_z, orientation, spawntimesecs, wander_distance, currentwaypoint, curhealth, curmana, MovementType, npcflag, unit_flags, dynamicflags, ScriptName, VerifiedBuild, CreateObject, Comment) VALUES (9001029, 9500804, 0, 0, 571, 0, 0, 1, 1, 0, 5725.58, 750.971, 641.768, 4.48476, 300, 0, 0, 12600, 0, 0, 0, 0, 0, '', null, 0, null);
|
||||
|
||||
|
||||
|
||||
@@ -1,2 +0,0 @@
|
||||
-- spirit healer behind sylvia
|
||||
INSERT INTO acore_world.creature (guid, id1, id2, id3, map, zoneId, areaId, spawnMask, phaseMask, equipment_id, position_x, position_y, position_z, orientation, spawntimesecs, wander_distance, currentwaypoint, curhealth, curmana, MovementType, npcflag, unit_flags, dynamicflags, ScriptName, VerifiedBuild, CreateObject, Comment) VALUES (9101017, 29259, 0, 0, 571, 0, 0, 1, 1, 0, 5827.72, 685.34, 611.885, 5.18277, 300, 0, 0, 7212, 0, 0, 0, 0, 0, '', null, 0, null);
|
||||
@@ -1,37 +0,0 @@
|
||||
REPLACE INTO acore_world.mp_scale_factors (mapId, melee_bonus, spell_bonus, heal_bonus, hp_bonus, difficulty) VALUES (33, 23.9, 3.2, 1.2, 7, 3);
|
||||
REPLACE INTO acore_world.mp_scale_factors (mapId, melee_bonus, spell_bonus, heal_bonus, hp_bonus, difficulty) VALUES (34, 29.9, 1.9, 1.9, 6, 3);
|
||||
REPLACE INTO acore_world.mp_scale_factors (mapId, melee_bonus, spell_bonus, heal_bonus, hp_bonus, difficulty) VALUES (36, 24.9, 2.4, 1.4, 7, 3);
|
||||
REPLACE INTO acore_world.mp_scale_factors (mapId, melee_bonus, spell_bonus, heal_bonus, hp_bonus, difficulty) VALUES (43, 19.5, 2.5, 1, 6, 3);
|
||||
REPLACE INTO acore_world.mp_scale_factors (mapId, melee_bonus, spell_bonus, heal_bonus, hp_bonus, difficulty) VALUES (47, 24.9, 2.9, 1.9, 7, 3);
|
||||
REPLACE INTO acore_world.mp_scale_factors (mapId, melee_bonus, spell_bonus, heal_bonus, hp_bonus, difficulty) VALUES (48, 20.9, 3.9, 1.2, 6, 3);
|
||||
REPLACE INTO acore_world.mp_scale_factors (mapId, melee_bonus, spell_bonus, heal_bonus, hp_bonus, difficulty) VALUES (70, 18.9, 2.9, 1.9, 9, 3);
|
||||
REPLACE INTO acore_world.mp_scale_factors (mapId, melee_bonus, spell_bonus, heal_bonus, hp_bonus, difficulty) VALUES (90, 22.9, 2.2, 1.9, 8, 3);
|
||||
REPLACE INTO acore_world.mp_scale_factors (mapId, melee_bonus, spell_bonus, heal_bonus, hp_bonus, difficulty) VALUES (109, 14.7, 2.6, 2, 5, 3);
|
||||
REPLACE INTO acore_world.mp_scale_factors (mapId, melee_bonus, spell_bonus, heal_bonus, hp_bonus, difficulty) VALUES (129, 18.7, 2.8, 1.4, 8.5, 3);
|
||||
REPLACE INTO acore_world.mp_scale_factors (mapId, melee_bonus, spell_bonus, heal_bonus, hp_bonus, difficulty) VALUES (169, 17.6, 2, 1.6, 7, 3);
|
||||
REPLACE INTO acore_world.mp_scale_factors (mapId, melee_bonus, spell_bonus, heal_bonus, hp_bonus, difficulty) VALUES (189, 24.9, 2.9, 1, 8, 3);
|
||||
REPLACE INTO acore_world.mp_scale_factors (mapId, melee_bonus, spell_bonus, heal_bonus, hp_bonus, difficulty) VALUES (209, 19.9, 2.2, 1.4, 7, 3);
|
||||
REPLACE INTO acore_world.mp_scale_factors (mapId, melee_bonus, spell_bonus, heal_bonus, hp_bonus, difficulty) VALUES (229, 15.7, 2.9, 2, 9, 3);
|
||||
REPLACE INTO acore_world.mp_scale_factors (mapId, melee_bonus, spell_bonus, heal_bonus, hp_bonus, difficulty) VALUES (230, 14, 3, 2, 10, 3);
|
||||
REPLACE INTO acore_world.mp_scale_factors (mapId, melee_bonus, spell_bonus, heal_bonus, hp_bonus, difficulty) VALUES (249, 9.8, 2.5, 1.6, 15, 3);
|
||||
REPLACE INTO acore_world.mp_scale_factors (mapId, melee_bonus, spell_bonus, heal_bonus, hp_bonus, difficulty) VALUES (269, 1.7, 2, 2, 3, 3);
|
||||
REPLACE INTO acore_world.mp_scale_factors (mapId, melee_bonus, spell_bonus, heal_bonus, hp_bonus, difficulty) VALUES (289, 14.7, 2, 1.2, 8, 3);
|
||||
REPLACE INTO acore_world.mp_scale_factors (mapId, melee_bonus, spell_bonus, heal_bonus, hp_bonus, difficulty) VALUES (309, 8, 1.9, 1.6, 10, 3);
|
||||
REPLACE INTO acore_world.mp_scale_factors (mapId, melee_bonus, spell_bonus, heal_bonus, hp_bonus, difficulty) VALUES (329, 13.7, 2.4, 1.2, 8, 3);
|
||||
REPLACE INTO acore_world.mp_scale_factors (mapId, melee_bonus, spell_bonus, heal_bonus, hp_bonus, difficulty) VALUES (349, 17.9, 1.5, 1.9, 7, 3);
|
||||
REPLACE INTO acore_world.mp_scale_factors (mapId, melee_bonus, spell_bonus, heal_bonus, hp_bonus, difficulty) VALUES (389, 25.7, 2.15, 1.45, 7, 3);
|
||||
REPLACE INTO acore_world.mp_scale_factors (mapId, melee_bonus, spell_bonus, heal_bonus, hp_bonus, difficulty) VALUES (409, 3.25, 3, 1.5, 10, 3);
|
||||
REPLACE INTO acore_world.mp_scale_factors (mapId, melee_bonus, spell_bonus, heal_bonus, hp_bonus, difficulty) VALUES (429, 1.7, 2, 2, 3, 3);
|
||||
REPLACE INTO acore_world.mp_scale_factors (mapId, melee_bonus, spell_bonus, heal_bonus, hp_bonus, difficulty) VALUES (469, 2.6, 2, 1.6, 3, 3);
|
||||
REPLACE INTO acore_world.mp_scale_factors (mapId, melee_bonus, spell_bonus, heal_bonus, hp_bonus, difficulty) VALUES (509, 2.6, 2, 1.6, 3, 3);
|
||||
REPLACE INTO acore_world.mp_scale_factors (mapId, melee_bonus, spell_bonus, heal_bonus, hp_bonus, difficulty) VALUES (531, 2.6, 2, 1.6, 3, 3);
|
||||
REPLACE INTO acore_world.mp_scale_factors (mapId, melee_bonus, spell_bonus, heal_bonus, hp_bonus, difficulty) VALUES (532, 2.6, 2, 1.6, 3, 3);
|
||||
REPLACE INTO acore_world.mp_scale_factors (mapId, melee_bonus, spell_bonus, heal_bonus, hp_bonus, difficulty) VALUES (533, 20, 2.8, 1.6, 13, 3);
|
||||
REPLACE INTO acore_world.mp_scale_factors (mapId, melee_bonus, spell_bonus, heal_bonus, hp_bonus, difficulty) VALUES (534, 19.6, 2.6, 1.3, 12, 3);
|
||||
REPLACE INTO acore_world.mp_scale_factors (mapId, melee_bonus, spell_bonus, heal_bonus, hp_bonus, difficulty) VALUES (540, 6.4, 1.3, 1.3, 9, 3);
|
||||
REPLACE INTO acore_world.mp_scale_factors (mapId, melee_bonus, spell_bonus, heal_bonus, hp_bonus, difficulty) VALUES (542, 4.6, 1.2, 1.4, 6, 3);
|
||||
REPLACE INTO acore_world.mp_scale_factors (mapId, melee_bonus, spell_bonus, heal_bonus, hp_bonus, difficulty) VALUES (543, 4.2, 1.2, 1.2, 6, 3);
|
||||
REPLACE INTO acore_world.mp_scale_factors (mapId, melee_bonus, spell_bonus, heal_bonus, hp_bonus, difficulty) VALUES (544, 8, 3, 1.6, 8, 3);
|
||||
REPLACE INTO acore_world.mp_scale_factors (mapId, melee_bonus, spell_bonus, heal_bonus, hp_bonus, difficulty) VALUES (545, 5.6, 2, 1.4, 6, 3);
|
||||
REPLACE INTO acore_world.mp_scale_factors (mapId, melee_bonus, spell_bonus, heal_bonus, hp_bonus, difficulty) VALUES (546, 4.6, 1.8, 1.4, 7, 3);
|
||||
REPLACE INTO acore_world.mp_scale_factors (mapId, melee_bonus, spell_bonus, heal_bonus, hp_bonus, difficulty) VALUES (547, 4, 1.4, 1.4, 7, 3);
|
||||
@@ -339,6 +339,8 @@ void MythicPlus::ScaleCreature(uint8 level, Creature* creature, MpMultipliers* m
|
||||
|
||||
float updatedAp = creature->GetModifierValue(UNIT_MOD_ATTACK_POWER, BASE_VALUE);
|
||||
float updatedRangeAp = creature->GetModifierValue(UNIT_MOD_ATTACK_POWER_RANGED, BASE_VALUE);
|
||||
|
||||
MpLogger::debug("Updated Attack Powers: {} {}", updatedAp, updatedRangeAp);
|
||||
}
|
||||
|
||||
int32 MythicPlus::CalculateSpellDamage(uint32 baseDamage, int originalLevel, int targetLevel) {
|
||||
|
||||
@@ -118,7 +118,7 @@ public:
|
||||
Creature* creature = player->GetMap()->GetCreature(loot->sourceWorldObjectGUID);
|
||||
if (!creature) return;
|
||||
|
||||
#if defined(MOD_PRESENT_NPCBOTS)
|
||||
#ifdef NPC_BOT
|
||||
if(creature->IsNPCBotOrPet()) {
|
||||
return;
|
||||
}
|
||||
@@ -171,7 +171,7 @@ public:
|
||||
Creature* creature = victim->ToCreature();
|
||||
if (!creature) return;
|
||||
|
||||
#if defined(MOD_PRESENT_NPCBOTS)
|
||||
#ifdef NPC_BOT
|
||||
if(creature->IsNPCBotOrPet()) {
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -145,12 +145,6 @@ private:
|
||||
return HandleNonCreatureAttacker(target, attacker, damage, spellInfo, eventType);
|
||||
}
|
||||
|
||||
#if defined(MOD_PRESENT_NPCBOTS)
|
||||
if (attacker && attacker->IsNPCBotOrPet()) {
|
||||
return;
|
||||
}
|
||||
#endif
|
||||
|
||||
Creature* creatureCaster = attacker->ToCreature();
|
||||
MpCreatureData* creatureData = sMpDataStore->GetCreatureData(creatureCaster->GetGUID());
|
||||
|
||||
@@ -254,7 +248,7 @@ private:
|
||||
public:
|
||||
|
||||
void ModifyPeriodicDamageAurasTick(Unit* target, Unit* attacker, uint32& damage, SpellInfo const* spellInfo) override {
|
||||
if (!target || !attacker) {
|
||||
if (!target && !attacker) {
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -285,7 +279,12 @@ public:
|
||||
}
|
||||
|
||||
void ModifySpellDamageTaken(Unit* target, Unit* attacker, int32& damage, SpellInfo const* spellInfo) override {
|
||||
if (!target || !attacker) {
|
||||
if (!target && !attacker) {
|
||||
|
||||
if(spellInfo) {
|
||||
// MpLogger::info("ModifySpellDamageTaken: Target and attacker are null for spell: {} ID: {}", spellInfo->SpellName[0], spellInfo->Id);
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -312,7 +311,7 @@ public:
|
||||
* receive from mythic+ scaled enemies.
|
||||
*/
|
||||
void ModifyMeleeDamage(Unit* target, Unit* attacker, uint32& damage) override {
|
||||
if (!target || !attacker) {
|
||||
if (!target && !attacker) {
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -326,7 +325,7 @@ public:
|
||||
|
||||
// When a healing spell hits a mythic+ enemy modify based on the modifiers for the difficulty
|
||||
void ModifyHealReceived(Unit* target, Unit* healer, uint32& healing, SpellInfo const* spellInfo) override {
|
||||
if (!target || !healer) {
|
||||
if (!target && !healer) {
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -339,7 +338,7 @@ public:
|
||||
}
|
||||
|
||||
uint32 modifyIncomingDmgHeal(MythicPlus::MP_UNIT_EVENT_TYPE eventType,Unit* target, Unit* attacker, uint32 damageOrHeal, SpellInfo const* spellInfo = nullptr) {
|
||||
if (!target || !attacker) {
|
||||
if (!target && !attacker) {
|
||||
// MpLogger::info("modifyIncomingDmgHeal: Target and attacker are null for event {}", eventType);
|
||||
return damageOrHeal;
|
||||
}
|
||||
@@ -402,8 +401,9 @@ public:
|
||||
|
||||
// Damage that is not mitigated by armor needs to be debuffed as it hits too hard and without resists
|
||||
// it hits too hard give everyone a benefit of 30% armor reduction
|
||||
MpLogger::debug(">>> Modify Melee Damage: Creature Name: {} alteredDmgHeal: {} School Mask: {}", creature->GetName(), alteredDmgHeal, creature->GetMeleeDamageSchoolMask());
|
||||
if(creature->GetMeleeDamageSchoolMask() != SPELL_SCHOOL_MASK_NORMAL && creature->GetMeleeDamageSchoolMask() != SPELL_SCHOOL_MASK_NONE) {
|
||||
damageOrHeal = static_cast<uint32>(damageOrHeal * 0.50f);
|
||||
damageOrHeal = damageOrHeal * 0.50f;
|
||||
}
|
||||
if(creature->IsDungeonBoss() || creature->isWorldBoss() || creature->GetEntry() == 23682) {
|
||||
alteredDmgHeal = damageOrHeal * instanceData->boss.melee;
|
||||
@@ -411,12 +411,7 @@ public:
|
||||
alteredDmgHeal = damageOrHeal * instanceData->creature.melee;
|
||||
}
|
||||
|
||||
// Only log if damage was actually modified
|
||||
if(alteredDmgHeal != damageOrHeal) {
|
||||
std::string damageType = (creature->GetMeleeDamageSchoolMask() == SPELL_SCHOOL_MASK_NORMAL) ? "Melee Damage" : "Elemental Damage";
|
||||
MpLogger::debug(">>> Modify {}: Creature Name: {} originalDmg: {} alteredDmg: {} School Mask: {}",
|
||||
damageType, creature->GetName(), damageOrHeal, alteredDmgHeal, creature->GetMeleeDamageSchoolMask());
|
||||
}
|
||||
// MpLogger::debug(">>>>>>>>>>>> Incoming Melee New Damage: {}({}) {} hits {}", alteredDmgHeal, damageOrHeal, attacker->GetName(), target->GetName());
|
||||
|
||||
break;
|
||||
case MythicPlus::UNIT_EVENT_DOT:
|
||||
|
||||
Reference in New Issue
Block a user