All pastes #975408 Raw Edit

Unnamed

public text v1 · immutable
·published 2008-04-07 15:14 UTC
rendered paste body
Index: scripts/guard/guard_ai.h
===================================================================
--- scripts/guard/guard_ai.h	(Revision 316)
+++ scripts/guard/guard_ai.h	(Arbeitskopie)
@@ -33,8 +33,9 @@
     void Reset();

     void AttackStart(Unit *who);
+    void AttackNotice(Unit *who);

     void MoveInLineOfSight(Unit *who);

     void UpdateAI(const uint32 diff);
Index: scripts/guard/guard_ai.cpp
===================================================================
--- scripts/guard/guard_ai.cpp	(Revision 316)
+++ scripts/guard/guard_ai.cpp	(Arbeitskopie)
@@ -28,6 +28,16 @@

 #define GENERIC_CREATURE_COOLDOWN 5000

+#define ATTACK_WARNING_MSG_1 "Wir werden angegriffen !"
+#define ATTACK_WARNING_MSG_2 "Zeit zu Töten !"
+#define ATTACK_WARNING_MSG_3 "Argh!"
+#define ATTACK_WARNING_MSG_4 "Zeit zu Sterben !"
+
+#define ATTACK_WARNING_SOUND_1 6198
+#define ATTACK_WARNING_SOUND_2 6205
+#define ATTACK_WARNING_SOUND_3 6206
+#define ATTACK_WARNING_SOUND_4 6207
+
 void guardAI::Reset()
 {
     GlobalCooldown = 0;
@@ -45,12 +55,7 @@
     if (!who)
         return;

-    //Send Zone Under Attack message to the LocalDefense and WorldDefense Channels
-    if (who->GetTypeId() == TYPEID_PLAYER && !ZoneAttackMsgTimer)
-    {
-        m_creature->SendZoneUnderAttackMessage((Player*)who);
-        ZoneAttackMsgTimer = 30000;
-    }
+    AttackNotice(who);

     if (who->isTargetableForAttack() && who!= m_creature)
     {
@@ -63,6 +68,46 @@
     }
 }

+void guardAI::AttackNotice(Unit *who)
+{
+    // Send Zone Under Attack message to the LocalDefense and WorldDefense Channels
+    // Yell Attack message and play Attack sound
+    if (who->GetTypeId() == TYPEID_PLAYER && !ZoneAttackMsgTimer)
+    {
+        m_creature->SendZoneUnderAttackMessage((Player*)who);
+
+        int _language = LANG_UNIVERSAL;
+        int _sound_id = ATTACK_WARNING_SOUND_1;
+        const char * _text = ATTACK_WARNING_MSG_1;
+
+        switch(m_creature->getFaction())
+        {
+        	case 85:
+        		_language = LANG_ORCISH; break;
+        	case 79:
+        		_language = LANG_DARNASSIAN; break;
+        	default:
+        		break;
+		}
+		switch(rand()%4)
+		{
+			case 1:
+				_sound_id = ATTACK_WARNING_SOUND_2; _text = ATTACK_WARNING_MSG_2; break;
+			case 2:
+				_sound_id = ATTACK_WARNING_SOUND_3; _text = ATTACK_WARNING_MSG_3; break;
+			case 3:
+				_sound_id = ATTACK_WARNING_SOUND_4; _text = ATTACK_WARNING_MSG_4; break;
+			default:
+				break;
+		}
+
+        m_creature->Yell(_text,_language,0);
+        DoPlaySoundToSet(m_creature,_sound_id);
+
+        ZoneAttackMsgTimer = 30000;
+    }
+}
+
 void guardAI::MoveInLineOfSight(Unit *who)
 {
     if (!who || m_creature->getVictim())
@@ -76,12 +121,7 @@
             if(who->HasStealthAura())
                 who->RemoveSpellsCausingAura(SPELL_AURA_MOD_STEALTH);

-            //Send Zone Under Attack message to the LocalDefense and WorldDefense Channels
-            if (who->GetTypeId() == TYPEID_PLAYER && !ZoneAttackMsgTimer)
-            {
-                m_creature->SendZoneUnderAttackMessage((Player*)who);
-                ZoneAttackMsgTimer = 30000;
-            }
+            AttackNotice(who);

             //Begin melee attack if we are within range
             if (m_creature->IsWithinDistInMap(who, ATTACK_DISTANCE))