Тема: small fixes
Показать сообщение отдельно
Старый 21.02.2011, 17:25   #1
Den
Ученый
 
Регистрация: 10.03.2010
Адрес: Бобруйск
Сообщений: 284
Сказал(а) спасибо: 213
Поблагодарили 98 раз(а) в 84 сообщениях
Den Скоро придёт к известностиDen Скоро придёт к известности
По умолчанию small fixes

1) В невидимости можно садится на маунта и такси, она сама сбрасывается.
2) В жидкостях можно плавать на маунте (только наземные маунты).
3) В трансформах нельзя садится на маунта и такси, за исключением нескольких, (близав не понять...) которые попались под руку.

PHP код:
diff --git a/src/game/Player.cpp b/src/game/Player.cpp
index 83e8256
..28bfb8b 100644
--- a/src/game/Player.cpp
+++ b/src/game/Player.cpp
@@ -18434,+18434,@@ bool Player::ActivateTaxiPathTo(std::vector<uint32> const& nodesCreaturenpc
             
return false;
         }
 
-        if (
IsInDisallowedMountForm())
+        if (
IsInDisallowedMountForm() || HasAuraType(SPELL_AURA_TRANSFORM) &&
+            !(
HasAura(71484) || HasAura(71561) || HasAura(71486) || HasAura(71558)))
         {
             
WorldPacket data(SMSG_ACTIVATETAXIREPLY4);
             
data << uint32(ERR_TAXIPLAYERSHAPESHIFTED);
diff --git a/src/game/Spell.cpp b/src/game/Spell.cpp
index 39e87fc
..cea82c0 100644
--- a/src/game/Spell.cpp
+++ b/src/game/Spell.cpp
@@ -5424,+5424,@@ SpellCastResult Spell::CheckCast(bool strict)
             }
             case 
SPELL_AURA_MOUNTED:
             {
-                if (
m_caster->IsInWater())
-                    return 
SPELL_FAILED_ONLY_ABOVEWATER;
-
                 if (
m_caster->GetTypeId() == TYPEID_PLAYER && ((Player*)m_caster)->GetTransport())
                     return 
SPELL_FAILED_NO_MOUNTS_ALLOWED;
 
@@ -
5439,+5436,13 @@ SpellCastResult Spell::CheckCast(bool strict)
 
                 break;
             }
+            case 
SPELL_AURA_MOD_INCREASE_MOUNTED_SPEED:
+            {
+                if (
m_caster->HasAuraType(SPELL_AURA_TRANSFORM))
+                    return ???;
+
+                break;
+            }
             case 
SPELL_AURA_RANGED_ATTACK_POWER_ATTACKER_BONUS:
             {
                 if(!
m_targets.getUnitTarget())
@@ -
5460,+5464,10 @@ SpellCastResult Spell::CheckCast(bool strict)
                     if (!((
Player*)m_caster)->CanStartFlyInArea(m_caster->GetMapId(), zonearea))
                         return 
m_IsTriggeredSpell SPELL_FAILED_DONT_REPORT SPELL_FAILED_NOT_HERE;
                 }
+
+                if (
m_caster->HasAura(71484) || m_caster->HasAura(71561) || m_caster->HasAura(71486) || m_caster->HasAura(71558))
+                    return 
SPELL_CAST_OK;
+
                 break;
             }
             case 
SPELL_AURA_PERIODIC_MANA_LEECH:
diff --git a/src/game/Unit.h b/src/game/Unit.h
index c745c9e
..6b6f74e 100644
--- a/src/game/Unit.h
+++ b/src/game/Unit.h
@@ -1666,+1666,@@ class MANGOS_DLL_SPEC Unit : public WorldObject
         
{
             
ShapeshiftForm form GetShapeshiftForm();
             return 
form != FORM_NONE && form != FORM_BATTLESTANCE && form != FORM_BERSERKERSTANCE && form != FORM_DEFENSIVESTANCE &&
-                
form != FORM_SHADOW;
+                
form != FORM_SHADOW && form != FORM_STEALTH;
         }
 
         
float m_modMeleeHitChance
Непонять, вот тут return ???; что отсылать ? в spellcastresult нет нужного енума.

Цитата:
Сообщение от TOM_RUS Посмотреть сообщение
ERR_MOUNT_SHAPESHIFTED = "You can't mount while shapeshifted.";

другой опкод используется... MOUNT_RESULT или MOUNT_ERROR...
Если я не туплю, то нужно обрабатывать этот кусок совсем в другом месте ?
Den вне форума   Ответить с цитированием
Пользователь сказал cпасибо: