mirror of
https://github.com/ZhengPeiRu21/mod-individual-progression
synced 2025-11-29 23:44:51 +08:00
Compare commits
3 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
48ee89b122 | ||
|
|
d13bafb42e | ||
|
|
e814c794c7 |
@@ -164,6 +164,25 @@ IndividualProgression.MoltenCore.ManualRuneHandling = 1
|
||||
|
||||
IndividualProgression.MoltenCore.AqualEssenceCooldownReduction = 0
|
||||
#
|
||||
# IndividualProgression.SerpentshrineCavern.RequireAllBosses
|
||||
# Description: Requires all bosses being killed before accessing Vashj's console panel.
|
||||
# Default: 1 - Enabled
|
||||
# 0 - Disabled
|
||||
#
|
||||
#
|
||||
|
||||
IndividualProgression.SerpentshrineCavern.RequireAllBosses = 1
|
||||
|
||||
#
|
||||
# IndividualProgression.TheEye.RequireAllBosses
|
||||
# Description: Requires all bosses being killed to open the doors to Kael
|
||||
# Default: 1 - Enabled
|
||||
# 0 - Disabled
|
||||
#
|
||||
#
|
||||
|
||||
IndividualProgression.TheEye.RequireAllBosses = 1
|
||||
#
|
||||
# IndividualProgression.FishingFix
|
||||
# Description: Before patch 3.1, fishing skill had progression and had to be leveled in low level zones before high level areas could add skill
|
||||
# In patch 3.1, it was changed to allow leveling fishing even when catching junk in high level zones, allowing progression to be skipped
|
||||
|
||||
12
sql/world/base/dungeon_ssc.sql
Normal file
12
sql/world/base/dungeon_ssc.sql
Normal file
@@ -0,0 +1,12 @@
|
||||
/* SSC Bosses should only drop 2 pieces of loot - was changed to 3 pieces after WotLK release */
|
||||
DELETE FROM `creature_loot_template` WHERE (`Entry` = 21215) AND (`Item` IN (34059));
|
||||
INSERT INTO `creature_loot_template` (`Entry`, `Item`, `Reference`, `Chance`, `QuestRequired`, `LootMode`, `GroupId`, `MinCount`, `MaxCount`, `Comment`) VALUES
|
||||
(21215, 34059, 34059, 100, 0, 1, 0, 1, 2, 'Leotheras the Blind - (ReferenceTable)');
|
||||
|
||||
DELETE FROM `creature_loot_template` WHERE (`Entry` = 21214) AND (`Item` IN (34060));
|
||||
INSERT INTO `creature_loot_template` (`Entry`, `Item`, `Reference`, `Chance`, `QuestRequired`, `LootMode`, `GroupId`, `MinCount`, `MaxCount`, `Comment`) VALUES
|
||||
(21214, 34060, 34060, 100, 0, 1, 0, 1, 2, 'Fathom-Lord Karathress - (ReferenceTable)');
|
||||
|
||||
DELETE FROM `creature_loot_template` WHERE (`Entry` = 21212) AND (`Item` IN (34062));
|
||||
INSERT INTO `creature_loot_template` (`Entry`, `Item`, `Reference`, `Chance`, `QuestRequired`, `LootMode`, `GroupId`, `MinCount`, `MaxCount`, `Comment`) VALUES
|
||||
(21212, 34062, 34062, 100, 0, 1, 3, 1, 2, 'Lady Vashj - (ReferenceTable)');
|
||||
@@ -5356,3 +5356,32 @@ UPDATE `creature_template` SET `name` = 'Death Lord', `speed_run` = 1.42857, `Da
|
||||
|
||||
/* Mr. Bigglesworth */
|
||||
UPDATE `creature_template` SET `speed_run` = 0.857143, `DamageModifier` = 400.0, `RangeAttackTime` = 1265 WHERE `entry`=16998;
|
||||
|
||||
/* Eye Stalk */
|
||||
DELETE FROM `creature_template` WHERE (`entry` = 351090);
|
||||
INSERT INTO `creature_template` (`entry`, `difficulty_entry_1`, `difficulty_entry_2`, `difficulty_entry_3`, `KillCredit1`, `KillCredit2`, `modelid1`, `modelid2`, `modelid3`, `modelid4`, `name`, `subname`, `IconName`, `gossip_menu_id`, `minlevel`, `maxlevel`, `exp`, `faction`, `npcflag`, `speed_walk`, `speed_run`, `speed_swim`, `speed_flight`, `detection_range`, `scale`, `rank`, `dmgschool`, `DamageModifier`, `BaseAttackTime`, `RangeAttackTime`, `BaseVariance`, `RangeVariance`, `unit_class`, `unit_flags`, `unit_flags2`, `dynamicflags`, `family`, `trainer_type`, `trainer_spell`, `trainer_class`, `trainer_race`, `type`, `type_flags`, `lootid`, `pickpocketloot`, `skinloot`, `PetSpellDataId`, `VehicleId`, `mingold`, `maxgold`, `AIName`, `MovementType`, `HoverHeight`, `HealthModifier`, `ManaModifier`, `ArmorModifier`, `ExperienceModifier`, `RacialLeader`, `movementId`, `RegenHealth`, `mechanic_immune_mask`, `spell_school_immune_mask`, `flags_extra`, `ScriptName`, `VerifiedBuild`) VALUES
|
||||
(351090, 0, 0, 0, 0, 0, 15788, 0, 0, 0, 'Eye Stalk', '', '', 0, 61, 61, 2, 16, 0, 1, 1, 1, 1, 20, 1, 1, 0, 7.5, 1000, 2000, 1, 1, 1, 4, 2048, 8, 0, 0, 0, 0, 0, 10, 72, 0, 0, 0, 0, 0, 0, 0, 'SmartAI', 0, 1, 1, 1, 1, 1, 0, 0, 1, 1022042641, 0, 0, '', 12340);
|
||||
|
||||
DELETE FROM `smart_scripts` WHERE (`source_type` = 0 AND `entryorguid` = 351090);
|
||||
INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `event_type`, `event_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `event_param5`, `event_param6`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_param4`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES
|
||||
(351090, 0, 0, 0, 0, 0, 100, 0, 5000, 7000, 14000, 17000, 0, 0, 11, 29407, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Cast Spell IC (Naxx 40)');
|
||||
|
||||
DELETE FROM `creature` WHERE `guid` BETWEEN 362043 AND 362059;
|
||||
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
|
||||
(362043, 351090, 0, 0, 533, 0, 0, 4, 1, 0, 2798.06, -3788.95, 274.983, 1.51844, 3600, 0, 0, 13033, 0, 0, 0, 0, 0, '', 0, 0, NULL),
|
||||
(362044, 351090, 0, 0, 533, 0, 0, 4, 1, 0, 2804.25, -3757.44, 274.983, 3.64774, 3600, 0, 0, 13033, 0, 0, 0, 0, 0, '', 0, 0, NULL),
|
||||
(362045, 351090, 0, 0, 533, 0, 0, 4, 1, 0, 2867.35, -3778.54, 274.983, 2.47837, 3600, 0, 0, 13033, 0, 0, 0, 0, 0, '', 0, 0, NULL),
|
||||
(362046, 351090, 0, 0, 533, 0, 0, 4, 1, 0, 2895.12, -3779.74, 274.983, 2.6529, 3600, 0, 0, 13033, 0, 0, 0, 0, 0, '', 0, 0, NULL),
|
||||
(362047, 351090, 0, 0, 533, 0, 0, 4, 1, 0, 2830.7, -3777.03, 274.983, 2.9147, 3600, 0, 0, 13033, 0, 0, 0, 0, 0, '', 0, 0, NULL),
|
||||
(362048, 351090, 0, 0, 533, 0, 0, 4, 1, 0, 2851.92, -3776.44, 274.983, 2.53073, 3600, 0, 0, 13033, 0, 0, 0, 0, 0, '', 0, 0, NULL),
|
||||
(362049, 351090, 0, 0, 533, 0, 0, 4, 1, 0, 2789.62, -3752.53, 274.983, 2.61799, 3600, 0, 0, 13033, 0, 0, 0, 0, 0, '', 0, 0, NULL),
|
||||
(362050, 351090, 0, 0, 533, 0, 0, 4, 1, 0, 2843.34, -3767.74, 274.983, 3.31613, 3600, 0, 0, 13033, 0, 0, 0, 0, 0, '', 0, 0, NULL),
|
||||
(362051, 351090, 0, 0, 533, 0, 0, 4, 1, 0, 2797.94, -3776.81, 274.983, 2.35619, 3600, 0, 0, 13033, 0, 0, 0, 0, 0, '', 0, 0, NULL),
|
||||
(362052, 351090, 0, 0, 533, 0, 0, 4, 1, 0, 2834.6, -3751.34, 274.983, 4.20624, 3600, 0, 0, 13033, 0, 0, 0, 0, 0, '', 0, 0, NULL),
|
||||
(362053, 351090, 0, 0, 533, 0, 0, 4, 1, 0, 2862.27, -3758.34, 274.983, 3.36848, 3600, 0, 0, 13033, 0, 0, 0, 0, 0, '', 0, 0, NULL),
|
||||
(362054, 351090, 0, 0, 533, 0, 0, 4, 1, 0, 2813.24, -3780.76, 274.983, 2.49582, 3600, 0, 0, 13033, 0, 0, 0, 0, 0, '', 0, 0, NULL),
|
||||
(362055, 351090, 0, 0, 533, 0, 0, 4, 1, 0, 2881.55, -3782.26, 274.983, 2.47837, 3600, 0, 0, 13033, 0, 0, 0, 0, 0, '', 0, 0, NULL),
|
||||
(362056, 351090, 0, 0, 533, 0, 0, 4, 1, 0, 2791.84, -3762.35, 274.983, 3.35103, 3600, 0, 0, 13033, 0, 0, 0, 0, 0, '', 0, 0, NULL),
|
||||
(362057, 351090, 0, 0, 533, 0, 0, 4, 1, 0, 2877.97, -3761.82, 274.983, 3.64774, 3600, 0, 0, 13033, 0, 0, 0, 0, 0, '', 0, 0, NULL),
|
||||
(362058, 351090, 0, 0, 533, 0, 0, 4, 1, 0, 2770.1, -3782.59, 274.983, 1.02974, 3600, 0, 0, 13033, 0, 0, 0, 0, 0, '', 0, 0, NULL),
|
||||
(362059, 351090, 0, 0, 533, 0, 0, 4, 1, 0, 2846.52, -3789.07, 274.983, 2.23402, 3600, 0, 0, 13033, 0, 0, 0, 0, 0, '', 0, 0, NULL);
|
||||
|
||||
@@ -1,3 +1,6 @@
|
||||
/* Badges of Justice were not added to raids until later patches - remove them from raid drops */
|
||||
DELETE FROM `creature_loot_template` WHERE `Entry` IN (17225, 15690, 15688, 15689, 16524, 15691, 17533, 18168, 17521, 16457, 15687, 16152, 21216, 21217, 21215, 21214, 21213, 21212, 19514, 19622, 19516, 18805) AND (`Item` IN (29434));
|
||||
|
||||
/* Create alternate version of TBC Badge Vendor for pre-2.3 */
|
||||
DELETE FROM `npc_vendor` WHERE `entry` = 30201;
|
||||
INSERT INTO `npc_vendor` (`entry`, `slot`, `item`, `maxcount`, `incrtime`, `ExtendedCost`, `VerifiedBuild`) VALUES
|
||||
|
||||
@@ -40,6 +40,8 @@ void AddSC_mod_individual_progression_awareness();
|
||||
void AddSC_mod_individual_progression_player();
|
||||
void AddSC_npc_archmage_timear();
|
||||
void AddSC_karazhan_70();
|
||||
void AddSC_the_eye_70();
|
||||
void AddSC_serpentshrine_cavern_70();
|
||||
|
||||
|
||||
void Addmod_individual_progressionScripts()
|
||||
@@ -81,4 +83,6 @@ void Addmod_individual_progressionScripts()
|
||||
AddSC_mod_individual_progression_player();
|
||||
AddSC_npc_archmage_timear();
|
||||
AddSC_karazhan_70();
|
||||
AddSC_the_eye_70();
|
||||
AddSC_serpentshrine_cavern_70();
|
||||
}
|
||||
|
||||
108
src/tbcScripts/serpentshrine_cavern.cpp
Normal file
108
src/tbcScripts/serpentshrine_cavern.cpp
Normal file
@@ -0,0 +1,108 @@
|
||||
|
||||
/*
|
||||
* Copyright (C) 2016+ AzerothCore <www.azerothcore.org>, released under GNU AGPL v3 license: https://github.com/azerothcore/azerothcore-wotlk/blob/master/LICENSE-AGPL3
|
||||
*/
|
||||
|
||||
#include "Config.h"
|
||||
#include "Player.h"
|
||||
#include "ScriptMgr.h"
|
||||
#include "SpellInfo.h"
|
||||
|
||||
enum SSCMisc
|
||||
{
|
||||
GO_LADY_VASHJ_BRIDGE_CONSOLE = 184568,
|
||||
MAP_SSC = 548,
|
||||
DATA_LURKER = 1,
|
||||
DATA_VASHJ = 6
|
||||
};
|
||||
|
||||
class GlobalSerpentshrineScript : public GlobalScript
|
||||
{
|
||||
public:
|
||||
GlobalSerpentshrineScript() : GlobalScript("GlobalSerpentshrineScript") { }
|
||||
|
||||
bool IsAnyBossAlive(Map* map, uint32 bossId = 0, uint32 newState = 0)
|
||||
{
|
||||
if (InstanceMap* instanceMap = map->ToInstanceMap())
|
||||
{
|
||||
if (InstanceScript* instance = instanceMap->GetInstanceScript())
|
||||
{
|
||||
uint32 bossCount = instance->GetEncounterCount() - 3;
|
||||
for (uint8 id = 0; id <= bossCount; ++id)
|
||||
{
|
||||
if (id == bossId && newState == DONE)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
if (id == DATA_LURKER)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
if (instance->GetBossState(id) != DONE)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
void AfterInstanceGameObjectCreate(Map* map, GameObject* go) override
|
||||
{
|
||||
if (sConfigMgr->GetOption<int>("IndividualProgression.SerpentshrineCavern.RequireAllBosses", 1))
|
||||
{
|
||||
if (go->GetEntry() == GO_LADY_VASHJ_BRIDGE_CONSOLE)
|
||||
{
|
||||
if (IsAnyBossAlive(map))
|
||||
{
|
||||
go->SetGameObjectFlag(GO_FLAG_NOT_SELECTABLE);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void OnLoadSpellCustomAttr(SpellInfo* spellInfo) override
|
||||
{
|
||||
switch (spellInfo->Id)
|
||||
{
|
||||
case 38236: // Caribdis - Spawn Spitfire Totem
|
||||
spellInfo->Effects[EFFECT_0].BasePoints = 70000;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void OnBeforeSetBossState(uint32 bossId, EncounterState newState, EncounterState /*oldState*/, Map* map) override
|
||||
{
|
||||
if (sConfigMgr->GetOption<int>("IndividualProgression.SerpentshrineCavern.RequireAllBosses", 1))
|
||||
{
|
||||
if (map->GetEntry()->MapID == MAP_SSC)
|
||||
{
|
||||
if (InstanceMap* instanceMap = map->ToInstanceMap())
|
||||
{
|
||||
if (InstanceScript* instance = instanceMap->GetInstanceScript())
|
||||
{
|
||||
if (!IsAnyBossAlive(map, bossId, newState))
|
||||
{
|
||||
if (Creature* vashj = instance->GetCreature(DATA_VASHJ))
|
||||
{
|
||||
if (GameObject* console = vashj->FindNearestGameObject(GO_LADY_VASHJ_BRIDGE_CONSOLE, 600.0f))
|
||||
{
|
||||
console->RemoveGameObjectFlag(GO_FLAG_NOT_SELECTABLE);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
void AddSC_serpentshrine_cavern_70()
|
||||
{
|
||||
new GlobalSerpentshrineScript();
|
||||
}
|
||||
97
src/tbcScripts/the_eye.cpp
Normal file
97
src/tbcScripts/the_eye.cpp
Normal file
@@ -0,0 +1,97 @@
|
||||
|
||||
/*
|
||||
* Copyright (C) 2016+ AzerothCore <www.azerothcore.org>, released under GNU AGPL v3 license: https://github.com/azerothcore/azerothcore-wotlk/blob/master/LICENSE-AGPL3
|
||||
*/
|
||||
|
||||
#include "Config.h"
|
||||
#include "Player.h"
|
||||
#include "ScriptMgr.h"
|
||||
#include "SpellInfo.h"
|
||||
|
||||
enum SSCMisc
|
||||
{
|
||||
GO_RIGHT_KAEL_DOOR = 184327,
|
||||
GO_LEFT_KAEL_DOOR = 184329,
|
||||
MAP_TK = 550,
|
||||
DATA_KAEL = 3
|
||||
};
|
||||
|
||||
class GlobalTheEyeScript : public GlobalScript
|
||||
{
|
||||
public:
|
||||
GlobalTheEyeScript() : GlobalScript("GlobalTheEyeScript") { }
|
||||
|
||||
bool IsAnyBossAlive(Map* map, uint32 bossId = 0, uint32 newState = 0)
|
||||
{
|
||||
if (InstanceMap* instanceMap = map->ToInstanceMap())
|
||||
{
|
||||
if (InstanceScript* instance = instanceMap->GetInstanceScript())
|
||||
{
|
||||
uint32 bossCount = instance->GetEncounterCount() - 1;
|
||||
for (uint8 id = 0; id < bossCount; ++id)
|
||||
{
|
||||
if (id == bossId && newState == DONE)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
if (instance->GetBossState(id) != DONE)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
void AfterInstanceGameObjectCreate(Map* map, GameObject* go) override
|
||||
{
|
||||
if (sConfigMgr->GetOption<int>("IndividualProgression.TheEye.RequireAllBosses", 1))
|
||||
{
|
||||
if (go->GetEntry() == GO_RIGHT_KAEL_DOOR || go->GetEntry() == GO_LEFT_KAEL_DOOR)
|
||||
{
|
||||
if (IsAnyBossAlive(map))
|
||||
{
|
||||
go->SetGoState(GO_STATE_READY);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void OnBeforeSetBossState(uint32 bossId, EncounterState newState, EncounterState /*oldState*/, Map* map) override
|
||||
{
|
||||
if (sConfigMgr->GetOption<int>("IndividualProgression.TheEye.RequireAllBosses", 1))
|
||||
{
|
||||
if (map->GetEntry()->MapID == MAP_TK)
|
||||
{
|
||||
if (InstanceMap* instanceMap = map->ToInstanceMap())
|
||||
{
|
||||
if (InstanceScript* instance = instanceMap->GetInstanceScript())
|
||||
{
|
||||
if (!IsAnyBossAlive(map, bossId, newState))
|
||||
{
|
||||
if (Creature* kael = instance->GetCreature(DATA_KAEL))
|
||||
{
|
||||
if (GameObject* rightDoor = kael->FindNearestGameObject(GO_RIGHT_KAEL_DOOR, 600.0f))
|
||||
{
|
||||
if (GameObject* leftDoor = kael->FindNearestGameObject(GO_LEFT_KAEL_DOOR, 600.0f))
|
||||
{
|
||||
rightDoor->SetGoState(GO_STATE_ACTIVE);
|
||||
leftDoor->SetGoState(GO_STATE_ACTIVE);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
void AddSC_the_eye_70()
|
||||
{
|
||||
new GlobalTheEyeScript();
|
||||
}
|
||||
Reference in New Issue
Block a user