From 200968c2dd295cd17fc470aecd8ee2bbd3ad1b39 Mon Sep 17 00:00:00 2001 From: Mislav Blažević Date: Wed, 19 Dec 2012 09:43:27 +0100 Subject: Script/AQ: Add Creature Text for Viscidus and fix model scaling --- .../Kalimdor/TempleOfAhnQiraj/boss_viscidus.cpp | 45 +++++++++++++++------- 1 file changed, 32 insertions(+), 13 deletions(-) (limited to 'src/server/scripts/Kalimdor') diff --git a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_viscidus.cpp b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_viscidus.cpp index 0f575043da6..c97fd40929a 100644 --- a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_viscidus.cpp +++ b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_viscidus.cpp @@ -31,10 +31,10 @@ enum Spells SPELL_REJOIN_VISCIDUS = 25896, SPELL_VISCIDUS_EXPLODE = 25938, SPELL_VISCIDUS_SUICIDE = 26003, + SPELL_VISCIDUS_SHRINKS = 25893, // Removed from client, in world.spell_dbc SPELL_MEMBRANE_VISCIDUS = 25994, // damage reduction spell - removed from DBC SPELL_VISCIDUS_WEAKNESS = 25926, // aura which procs at damage - should trigger the slow spells - removed from DBC - SPELL_VISCIDUS_SHRINKS = 25893, // (6) Apply Aura #61: Mod Scale Value: -4 - removed from DBC SPELL_VISCIDUS_GROWS = 25897, // removed from DBC SPELL_SUMMON_GLOBS = 25885, // summons npc 15667 using spells from 25865 to 25884; All spells have target coords - removed from DBC SPELL_VISCIDUS_TELEPORT = 25904, // removed from DBC @@ -54,19 +54,26 @@ enum Phases PHASE_GLOB = 3 }; -enum HitCounter +enum Emotes { - HITCOUNTER_SLOW = 100, // "Viscidus begins to slow." - HITCOUNTER_SLOW_MORE = 150, // "Viscidus begins to freeze." - HITCOUNTER_FREEZE = 200, // "Viscidus is frozen solid." + EMOTE_SLOW = 0, + EMOTE_FREEZE = 1, + EMOTE_FROZEN = 2, + + EMOTE_CRACK = 3, + EMOTE_SHATTER = 4, + EMOTE_EXPLODE = 5 +}; - // 4.3.4 data - HITCOUNTER_CRACK = 50, // "Viscidus begins to crack." - HITCOUNTER_SHATTER = 100, // "Viscidus looks ready to shatter." - HITCOUNTER_EXPLODE = 150, // "Viscidus explodes." +enum HitCounter +{ + HITCOUNTER_SLOW = 100, + HITCOUNTER_SLOW_MORE = 150, + HITCOUNTER_FREEZE = 200, - // 1.12 data - // HITCOUNTER_EXPLODE = 75 + HITCOUNTER_CRACK = 50, + HITCOUNTER_SHATTER = 100, + HITCOUNTER_EXPLODE = 150, }; enum MovePoints @@ -74,7 +81,7 @@ enum MovePoints ROOM_CENTER = 1 }; -Position const ViscidusCoord = { -7992.36f, 908.19f, -52.62f, 1.68f }; // TODO: Visci ain't room middle +Position const ViscidusCoord = { -7992.36f, 908.19f, -52.62f, 1.68f }; // TODO: Visci isn't in room middle float const RoomRadius = 40.0f; // TODO: Not sure if its correct class boss_viscidus : public CreatureScript @@ -102,6 +109,7 @@ class boss_viscidus : public CreatureScript if (attacker->HasUnitState(UNIT_STATE_MELEE_ATTACKING) && _hitcounter >= HITCOUNTER_EXPLODE) { + Talk(EMOTE_EXPLODE); events.Reset(); _phase = PHASE_GLOB; DoCast(me, SPELL_VISCIDUS_EXPLODE); @@ -125,6 +133,10 @@ class boss_viscidus : public CreatureScript } } } + else if (_hitcounter == HITCOUNTER_SHATTER) + Talk(EMOTE_SHATTER); + else if (_hitcounter == HITCOUNTER_CRACK) + Talk(EMOTE_CRACK); } void SpellHit(Unit* /*caster*/, SpellInfo const* spell) @@ -135,6 +147,8 @@ class boss_viscidus : public CreatureScript if (_hitcounter >= HITCOUNTER_FREEZE) { + _hitcounter = 0; + Talk(EMOTE_FROZEN); _phase = PHASE_MELEE; DoCast(me, SPELL_VISCIDUS_FREEZE); me->RemoveAura(SPELL_VISCIDUS_SLOWED_MORE); @@ -142,11 +156,15 @@ class boss_viscidus : public CreatureScript } else if (_hitcounter >= HITCOUNTER_SLOW_MORE) { + Talk(EMOTE_FREEZE); me->RemoveAura(SPELL_VISCIDUS_SLOWED); DoCast(me, SPELL_VISCIDUS_SLOWED_MORE); } else if (_hitcounter >= HITCOUNTER_SLOW) + { + Talk(EMOTE_SLOW); DoCast(me, SPELL_VISCIDUS_SLOWED); + } } } @@ -183,6 +201,7 @@ class boss_viscidus : public CreatureScript if (_phase == PHASE_GLOB && summons.empty()) { + DoResetThreat(); me->NearTeleportTo(ViscidusCoord.GetPositionX(), ViscidusCoord.GetPositionY(), ViscidusCoord.GetPositionZ(), @@ -260,7 +279,7 @@ class npc_glob_of_viscidus : public CreatureScript else { Viscidus->SetHealth(Viscidus->GetHealth() - Viscidus->GetMaxHealth() / 20); - Viscidus->SetObjectScale(Viscidus->GetFloatValue(OBJECT_FIELD_SCALE_X) - 0.05f); // TODO: Not sure if blizzlike + Viscidus->GetAI()->DoCast(Viscidus, SPELL_VISCIDUS_SHRINKS); } } } -- cgit v1.2.3 From a3b34e2894e19c3e5939b7c74e49302046a88b0c Mon Sep 17 00:00:00 2001 From: Vincent_Michael Date: Sat, 22 Dec 2012 01:13:56 +0100 Subject: Core: Fix more some codestyle --- src/server/game/Entities/Item/Item.cpp | 7 ------- src/server/game/Entities/Unit/Unit.cpp | 2 +- src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_viscidus.cpp | 2 +- src/server/scripts/Kalimdor/moonglade.cpp | 2 +- 4 files changed, 3 insertions(+), 10 deletions(-) (limited to 'src/server/scripts/Kalimdor') diff --git a/src/server/game/Entities/Item/Item.cpp b/src/server/game/Entities/Item/Item.cpp index dd54a3d39db..5be1bbf5290 100644 --- a/src/server/game/Entities/Item/Item.cpp +++ b/src/server/game/Entities/Item/Item.cpp @@ -1234,7 +1234,6 @@ void Item::ItemContainerSaveLootToDB() // Save items if (!loot.isLooted()) { - PreparedStatement* stmt_items = CharacterDatabase.GetPreparedStatement(CHAR_DEL_ITEMCONTAINER_ITEMS); stmt_items->setUInt32(0, container_id); trans->Append(stmt_items); @@ -1300,7 +1299,6 @@ bool Item::ItemContainerLoadLootFromDB() // Get a LootTemplate for the container item. This is where // the saved loot was originally rolled from, we will copy conditions from it LootTemplate const* lt = LootTemplates_Item.GetLootFor(GetEntry()); - if (lt) { do @@ -1351,7 +1349,6 @@ bool Item::ItemContainerLoadLootFromDB() void Item::ItemContainerDeleteLootItemsFromDB() { // Deletes items associated with an openable item from the DB - uint32 containerId = GetGUIDLow(); PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_ITEMCONTAINER_ITEMS); stmt->setUInt32(0, containerId); @@ -1363,7 +1360,6 @@ void Item::ItemContainerDeleteLootItemsFromDB() void Item::ItemContainerDeleteLootItemFromDB(uint32 itemID) { // Deletes a single item associated with an openable item from the DB - uint32 containerId = GetGUIDLow(); PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_ITEMCONTAINER_ITEM); stmt->setUInt32(0, containerId); @@ -1376,7 +1372,6 @@ void Item::ItemContainerDeleteLootItemFromDB(uint32 itemID) void Item::ItemContainerDeleteLootMoneyFromDB() { // Deletes the money loot associated with an openable item from the DB - uint32 containerId = GetGUIDLow(); PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_ITEMCONTAINER_MONEY); stmt->setUInt32(0, containerId); @@ -1388,8 +1383,6 @@ void Item::ItemContainerDeleteLootMoneyFromDB() void Item::ItemContainerDeleteLootMoneyAndLootItemsFromDB() { // Deletes money and items associated with an openable item from the DB - ItemContainerDeleteLootMoneyFromDB(); ItemContainerDeleteLootItemsFromDB(); } - diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp index d4b276fd2db..05dd8656d9c 100644 --- a/src/server/game/Entities/Unit/Unit.cpp +++ b/src/server/game/Entities/Unit/Unit.cpp @@ -5598,7 +5598,7 @@ bool Unit::HandleDummyAuraProc(Unit* victim, uint32 damage, AuraEffect* triggere ok = true; } - // The spell usually only hits one target, but it should hit every player + // The spell usually only hits one target, but it should hit every player // which applied Shadows Fate at least once to the victim. if (target->GetTypeId() == TYPEID_PLAYER && target->ToPlayer()->GetQuestStatus(24547) == QUEST_STATUS_INCOMPLETE) { diff --git a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_viscidus.cpp b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_viscidus.cpp index c97fd40929a..14ea31a6518 100644 --- a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_viscidus.cpp +++ b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_viscidus.cpp @@ -59,7 +59,7 @@ enum Emotes EMOTE_SLOW = 0, EMOTE_FREEZE = 1, EMOTE_FROZEN = 2, - + EMOTE_CRACK = 3, EMOTE_SHATTER = 4, EMOTE_EXPLODE = 5 diff --git a/src/server/scripts/Kalimdor/moonglade.cpp b/src/server/scripts/Kalimdor/moonglade.cpp index f438275b82a..14a76cc153e 100644 --- a/src/server/scripts/Kalimdor/moonglade.cpp +++ b/src/server/scripts/Kalimdor/moonglade.cpp @@ -323,7 +323,7 @@ public: } void IsSummonedBy(Unit* /*summoner*/) - { + { std::list playerOnQuestList; Trinity::AnyPlayerInObjectRangeCheck checker(me, 5.0f); Trinity::PlayerListSearcher searcher(me, playerOnQuestList, checker); -- cgit v1.2.3