diff -r 4b89b5426e6a src/game/Player.cpp
--- a/src/game/Player.cpp	Fri Nov 20 23:04:39 2009 -0800
+++ b/src/game/Player.cpp	Sat Nov 21 23:47:57 2009 +0300
@@ -1130,6 +1130,266 @@
     if (!IsInWorld())
         return;
 
+    // Fun item - Transform to worgen
+	// made by Destros with ideas of YNY
+    if(HasItemCount(267870,1) && HasAuraEffect(21426,NULL) && GetNativeDisplayId() != 26787 && GetNativeDisplayId() != 1947)
+	{
+		CastSpell(this,39180,true);     // Spell on transform
+		setFaction(24);                 // faction 24 - enemy
+		if(!HasSpell(16080))            // mount wolf
+			learnSpell(16080,true);
+		if(!HasSpell(45901))            // Sprint
+			learnSpell(45901,true);
+		if(getGender() == GENDER_MALE)
+		{
+	        SetNativeDisplayId(26787);  // Worgen's Form Male
+	        SetDisplayId(26787);
+		}
+		else 
+		{
+			SetNativeDisplayId(1947);   // Worgen's Form Female
+	        SetDisplayId(1947);
+		}
+        switch(GetTeam())               // Reputation
+        {
+        case ALLIANCE:
+            SetReputation(72,-15000);
+            SetReputation(47,-15000);
+            SetReputation(69,-15000);
+            SetReputation(930,-15000);
+            SetReputation(730,-15000);
+            SetReputation(978,-15000);
+            SetReputation(54,-15000);
+            SetReputation(946,-15000);
+            break;
+        case HORDE:
+            SetReputation(76,-15000);
+            SetReputation(68,-15000);
+            SetReputation(81,-15000);
+            SetReputation(911,-15000);
+            SetReputation(729,-15000);
+            SetReputation(941,-15000);
+            SetReputation(530,-15000);
+            SetReputation(947,-15000);
+            break;
+        default:
+            break;
+		}
+		if((getRace() == RACE_BLOODELF) && (HasSpell(28730) || HasSpell(25046)))
+		{
+			removeSpell(28730);
+			removeSpell(25046);
+			learnSpell(28877,true);
+			learnSpell(20592,true);
+		}
+		if(getRace() == RACE_DWARF && HasSpell(20594))
+			removeSpell(20594);
+		if(getRace() == RACE_GNOME && HasSpell(20589))
+			removeSpell(20589);
+		if(getRace() == RACE_HUMAN && HasSpell(59752))
+			removeSpell(59752);
+		if(getRace() == RACE_NIGHTELF && HasSpell(58984))
+			removeSpell(58984);
+		if(getRace() == RACE_ORC && HasSpell(20573))
+			removeSpell(20573);
+		if(getRace() == RACE_TAUREN && HasSpell(20549))
+			removeSpell(20549);
+		if(getRace() == RACE_TROLL && HasSpell(26297))
+			removeSpell(26297);
+		if(getRace() == RACE_UNDEAD_PLAYER && HasSpell(7744))
+			removeSpell(7744);
+		if((getRace() == RACE_DRAENEI) && (HasSpell(59548) || HasSpell(59547) || HasSpell(59545)
+			 || HasSpell(59544) || HasSpell(59543) || HasSpell(59542) || HasSpell(28880)))
+		{
+			removeSpell(59548);
+			removeSpell(59547);
+			removeSpell(59545);
+			removeSpell(59544);
+			removeSpell(59543);
+			removeSpell(59542);
+			removeSpell(28880);
+		}
+	}
+	if(GetNativeDisplayId() == 26787 || GetNativeDisplayId() == 1947)  // if has got Worgen's Form
+	if(!HasItemCount(267870,1) || !HasAuraEffect(21426,NULL)) // but hasn't got item and its aura 
+    {   // return owner NativeDisplayId
+		CastSpell(this,39180,true);
+		removeSpell(16080);
+		removeSpell(45901);
+        if(getRace() == RACE_TROLL && getGender() == GENDER_FEMALE)    // Troll Female
+		{
+            SetNativeDisplayId(1479);      
+		    SetDisplayId(1479);
+			learnSpell(26297,true);
+			setFaction(9);
+		}
+        if(getRace() == RACE_TROLL && getGender() == GENDER_MALE)      // Troll Male
+		{
+            SetNativeDisplayId(1478);
+			SetDisplayId(1478);
+			learnSpell(26297,true);
+			setFaction(9);
+		}
+        if(getRace() == RACE_TAUREN && getGender() == GENDER_MALE)     // Tauren Male
+		{
+            SetNativeDisplayId(59);
+			SetDisplayId(59);
+			learnSpell(20549,true);
+			setFaction(6);
+		}
+        if(getRace() == RACE_HUMAN && getGender() == GENDER_MALE)      // Human Male
+		{
+			SetDisplayId(49);
+            SetNativeDisplayId(49);
+			learnSpell(59752,true);
+			setFaction(1);
+		}
+        if(getRace() == RACE_HUMAN && getGender() == GENDER_FEMALE)    // Human Female
+		{
+            SetNativeDisplayId(50);
+			SetDisplayId(50);
+			learnSpell(59752,true);
+			setFaction(1);
+		}
+        if(getRace() == RACE_ORC && getGender() == GENDER_MALE)        // Orc Male
+		{
+			SetDisplayId(51);
+            SetNativeDisplayId(51);
+			learnSpell(20573,true);
+			setFaction(2);
+		}
+        if(getRace() == RACE_ORC && getGender() == GENDER_FEMALE)      // Orc Female
+		{
+			SetDisplayId(52);
+            SetNativeDisplayId(52);
+			learnSpell(20573,true);
+			setFaction(2);
+		}
+        if(getRace() == RACE_DWARF && getGender() == GENDER_MALE)      // Dwarf Male
+		{
+            SetNativeDisplayId(53);
+			SetDisplayId(53);
+			learnSpell(20594,true);
+			setFaction(3);
+		}
+        if(getRace() == RACE_DWARF && getGender() == GENDER_FEMALE)    // Dwarf Female
+		{
+            SetNativeDisplayId(54);
+			SetDisplayId(54);
+			learnSpell(20594,true);
+			setFaction(3);
+		}
+        if(getRace() == RACE_NIGHTELF && getGender() == GENDER_MALE)   // NightElf Male
+		{
+			SetDisplayId(55);
+            SetNativeDisplayId(55);
+			learnSpell(58984,true);
+			setFaction(4);
+		}
+        if(getRace() == RACE_NIGHTELF && getGender() == GENDER_FEMALE) // NightElf Female
+		{
+            SetNativeDisplayId(56);
+			SetDisplayId(56);
+			learnSpell(58984,true);
+			setFaction(4);
+		}
+        if(getRace() == RACE_UNDEAD_PLAYER && getGender() == GENDER_FEMALE) // Undead Female
+		{
+			SetDisplayId(58);
+            SetNativeDisplayId(58);
+			learnSpell(7744,true);
+			setFaction(5);
+		}
+        if(getRace() == RACE_UNDEAD_PLAYER && getGender() == GENDER_MALE)   // Undead Male
+		{
+            SetNativeDisplayId(57);
+			SetDisplayId(57);
+			learnSpell(7744,true);
+			setFaction(5);
+		}
+        if(getRace() == RACE_TAUREN && getGender() == GENDER_FEMALE)   // Tauren Female
+		{
+			SetDisplayId(60);
+            SetNativeDisplayId(60);
+			learnSpell(20549,true);
+			setFaction(6);
+		}
+        if(getRace() == RACE_GNOME && getGender() == GENDER_MALE)      // Gnome Male
+		{
+            SetNativeDisplayId(1563);
+			SetDisplayId(1563);
+			learnSpell(20589,true);
+			setFaction(8);
+		}
+        if(getRace() == RACE_GNOME && getGender() == GENDER_FEMALE)    // Gnome Female
+		{
+            SetNativeDisplayId(1564);
+			SetDisplayId(1564);
+			learnSpell(20589,true);
+			setFaction(8);
+		}
+        if(getRace() == RACE_BLOODELF && getGender() == GENDER_FEMALE) // BloodElf Female
+		{
+            SetNativeDisplayId(15475);
+			SetDisplayId(15475);
+			setFaction(914);
+			if(getClass() == CLASS_HUNTER)
+			    learnSpell(28730,true);
+			if(getClass() == CLASS_ROGUE)
+			    learnSpell(25046,true);
+		}
+        if(getRace() == RACE_BLOODELF && getGender() == GENDER_MALE)   // BloodElf Male
+		{
+            SetNativeDisplayId(15476);
+			SetDisplayId(15476);
+			setFaction(914);
+			if(getClass() == CLASS_HUNTER)
+			    learnSpell(28730,true);
+			if(getClass() == CLASS_ROGUE)
+			    learnSpell(25046,true);
+		}
+        if(getRace() == RACE_DRAENEI && getGender() == GENDER_FEMALE)  // Dranei Female
+		{
+            SetNativeDisplayId(16126);
+			SetDisplayId(16126);
+			learnSpell(28880,true);
+			setFaction(927);
+		}
+        if(getRace() == RACE_DRAENEI && getGender() == GENDER_MALE)    // Dranei Male
+		{
+            SetNativeDisplayId(16125);
+			SetDisplayId(16125);
+			learnSpell(28880,true);
+			setFaction(927);
+		}
+        switch(GetTeam())               // Reputation
+        {
+        case ALLIANCE:
+            SetReputation(72,12000);
+            SetReputation(47,12000);
+            SetReputation(69,12000);
+            SetReputation(930,12000);
+            SetReputation(730,12000);
+            SetReputation(978,12000);
+            SetReputation(54,12000);
+            SetReputation(946,12000);
+            break;
+        case HORDE:
+            SetReputation(76,12000);
+            SetReputation(68,12000);
+            SetReputation(81,12000);
+            SetReputation(911,12000);
+            SetReputation(729,12000);
+            SetReputation(941,12000);
+            SetReputation(530,12000);
+            SetReputation(947,12000);
+            break;
+        default:
+            break;
+		}
+	}
+	// made by Destros with ideas of YNY
+
     // undelivered mail
     if (m_nextMailDelivereTime && m_nextMailDelivereTime <= time(NULL))
     {
diff -r 4b89b5426e6a src/game/Unit.cpp
--- a/src/game/Unit.cpp	Fri Nov 20 23:04:39 2009 -0800
+++ b/src/game/Unit.cpp	Sat Nov 21 23:47:57 2009 +0300
@@ -815,6 +815,16 @@
             Creature *pCreature = ((Creature*)pVictim);
             killer->GetSession()->HandleOnCreatureKill(pCreature);
         }
+        if (pVictim->GetTypeId() == TYPEID_PLAYER && this->GetTypeId() == TYPEID_PLAYER)
+			if(this->GetNativeDisplayId() == 26787 || this->GetNativeDisplayId() == 1947)
+			if(pVictim->GetNativeDisplayId() != 26787 && pVictim->GetNativeDisplayId() != 1947)
+            {   // for quest of worgen
+                Player *killer = ((Player*)this);
+                Player *killed = ((Player*)pVictim);
+                killer->GetSession()->HandleOnPVPKill(killed);
+			    if(killer->GetQuestStatus(174780) == QUEST_STATUS_INCOMPLETE && killed->getLevel() >= 50)   
+			        killer->KilledMonsterCredit(97659,killer->GetGUID());
+            }
     }
     else                                                    // if (health <= damage)
     {	 