Index: /trunk/src/game/QuestDef.h
===================================================================
--- /trunk/src/game/QuestDef.h (revision 44)
+++ /trunk/src/game/QuestDef.h (revision 96)
@@ -201,4 +201,5 @@
         std::string GetEndText() const { return EndText; }
         int32  GetRewOrReqMoney() const;
+        uint32 GetRewHonorableKills() const { return RewHonorableKills; }
         uint32 GetRewMoneyMaxLevel() const { return RewMoneyMaxLevel; }
                                                             // use in XP calculation at client
@@ -290,4 +291,5 @@
         std::string RequestItemsText;
         std::string EndText;
+        uint32 RewHonorableKills;
         int32  RewOrReqMoney;
         uint32 RewMoneyMaxLevel;
Index: /trunk/src/game/Formulas.h
===================================================================
--- /trunk/src/game/Formulas.h (revision 44)
+++ /trunk/src/game/Formulas.h (revision 96)
@@ -26,4 +26,11 @@
 namespace Trinity
 {
+    namespace Honor
+    {
+        inline uint32 hk_honor_at_level(uint32 level, uint32 count=1)
+        {
+            return ceil(count*(-0.53177f + 0.59357f * exp((level +23.54042f) / 26.07859f )));
+        }
+    }
     namespace XP
     {
Index: /trunk/src/game/GossipDef.cpp
===================================================================
--- /trunk/src/game/GossipDef.cpp (revision 44)
+++ /trunk/src/game/GossipDef.cpp (revision 96)
@@ -25,4 +25,5 @@
 #include "WorldPacket.h"
 #include "WorldSession.h"
+#include "Formulas.h"
 
 GossipMenu::GossipMenu()
@@ -467,6 +468,6 @@
     }
 
-    data << uint32(0);                                      // Honor points reward, not implemented
-    data << uint32(pQuest->GetRewSpell());                  // reward spell, this spell will display (icon) (casted if RewSpellCast==0)
+    // rewarded honor points. Multiply with 10 to satisfy client    data << uint32(pQuest->GetRewSpell());                  // reward spell, this spell will display (icon) (casted if RewSpellCast==0)
+    data << uint32(10*Trinity::Honor::hk_honor_at_level(pSession->GetPlayer()->getLevel(), pQuest->GetRewHonorableKills()));
     data << uint32(pQuest->GetRewSpellCast());              // casted spell
     data << uint32(pQuest->GetCharTitleId());               // CharTitleId, new 2.4.0, player gets this title (id from CharTitles)
@@ -542,5 +543,6 @@
     data << uint32(pQuest->GetRewSpellCast());              // casted spell
 
-    data << uint32(0);                                      // Honor points reward, not implemented
+    // rewarded honor points
+    data << uint32(Trinity::Honor::hk_honor_at_level(pSession->GetPlayer()->getLevel(), pQuest->GetRewHonorableKills()));
     data << uint32(pQuest->GetSrcItemId());
     data << uint32(pQuest->GetFlags() & 0xFFFF);
@@ -676,9 +678,10 @@
 
     data << uint32(pQuest->GetRewOrReqMoney());
-    data << uint32(0x00);                                   // new 2.3.0. Honor points
+    // rewarded honor points. Multiply with 10 to satisfy client
+    data << uint32(10*Trinity::Honor::hk_honor_at_level(pSession->GetPlayer()->getLevel(), pQuest->GetRewHonorableKills()));
     data << uint32(0x08);                                   // unused by client?
     data << uint32(pQuest->GetRewSpell());                  // reward spell, this spell will display (icon) (casted if RewSpellCast==0)
     data << uint32(pQuest->GetRewSpellCast());              // casted spell
-    data << uint32(0);                                      // Honor points reward, not implemented
+    data << uint32(0x00);                                   // unk, NOT honor
     pSession->SendPacket( &data );
     sLog.outDebug( "WORLD: Sent SMSG_QUESTGIVER_OFFER_REWARD NPCGuid=%u, questid=%u",GUID_LOPART(npcGUID),pQuest->GetQuestId() );
Index: /trunk/src/game/QuestDef.cpp
===================================================================
--- /trunk/src/game/QuestDef.cpp (revision 44)
+++ /trunk/src/game/QuestDef.cpp (revision 96)
@@ -104,26 +104,27 @@
         RewRepValue[i] = questRecord[94+i].GetInt32();
 
-    RewOrReqMoney = questRecord[99].GetInt32();
-    RewMoneyMaxLevel = questRecord[100].GetUInt32();
-    RewSpell = questRecord[101].GetUInt32();
-    RewSpellCast = questRecord[102].GetUInt32();
-    RewMailTemplateId = questRecord[103].GetUInt32();
-    RewMailDelaySecs = questRecord[104].GetUInt32();
-    PointMapId = questRecord[105].GetUInt32();
-    PointX = questRecord[106].GetFloat();
-    PointY = questRecord[107].GetFloat();
-    PointOpt = questRecord[108].GetUInt32();
+    RewHonorableKills = questRecord[99].GetUInt32();
+    RewOrReqMoney = questRecord[100].GetInt32();
+    RewMoneyMaxLevel = questRecord[101].GetUInt32();
+    RewSpell = questRecord[102].GetUInt32();
+    RewSpellCast = questRecord[103].GetUInt32();
+    RewMailTemplateId = questRecord[104].GetUInt32();
+    RewMailDelaySecs = questRecord[105].GetUInt32();
+    PointMapId = questRecord[106].GetUInt32();
+    PointX = questRecord[107].GetFloat();
+    PointY = questRecord[108].GetFloat();
+    PointOpt = questRecord[109].GetUInt32();
 
     for (int i = 0; i < QUEST_EMOTE_COUNT; ++i)
-        DetailsEmote[i] = questRecord[109+i].GetUInt32();
-
-    IncompleteEmote = questRecord[113].GetUInt32();
-    CompleteEmote = questRecord[114].GetUInt32();
+        DetailsEmote[i] = questRecord[110+i].GetUInt32();
+
+    IncompleteEmote = questRecord[114].GetUInt32();
+    CompleteEmote = questRecord[115].GetUInt32();
 
     for (int i = 0; i < QUEST_EMOTE_COUNT; ++i)
-        OfferRewardEmote[i] = questRecord[115+i].GetInt32();
-
-    QuestStartScript = questRecord[119].GetUInt32();
-    QuestCompleteScript = questRecord[120].GetUInt32();
+        OfferRewardEmote[i] = questRecord[116+i].GetInt32();
+
+    QuestStartScript = questRecord[120].GetUInt32();
+    QuestCompleteScript = questRecord[121].GetUInt32();
 
     QuestFlags |= SpecialFlags << 16;
Index: /trunk/src/game/Player.cpp
===================================================================
--- /trunk/src/game/Player.cpp (revision 95)
+++ /trunk/src/game/Player.cpp (revision 96)
@@ -12377,4 +12377,8 @@
     ModifyMoney( pQuest->GetRewOrReqMoney() );
 
+    // honor reward
+    if(pQuest->GetRewHonorableKills())
+        RewardHonor(NULL, 0, Trinity::Honor::hk_honor_at_level(getLevel(), pQuest->GetRewHonorableKills()));
+
     // title reward
     if(pQuest->GetCharTitleId())
Index: /trunk/src/game/SpellAuras.cpp
===================================================================
--- /trunk/src/game/SpellAuras.cpp (revision 74)
+++ /trunk/src/game/SpellAuras.cpp (revision 96)
@@ -1953,7 +1953,5 @@
             case 43873:                                     // Headless Horseman Laugh
                 if(caster->GetTypeId() == TYPEID_PLAYER)
-                {
                     ((Player*)caster)->SendPlaySound(11965, false);
-                }
                 return;
             case 46354:                                     // Blood Elf Illusion
@@ -2507,14 +2505,10 @@
         // remove other shapeshift before applying a new one
         if(m_target->m_ShapeShiftFormSpellId)
-        {
             m_target->RemoveAurasDueToSpell(m_target->m_ShapeShiftFormSpellId,this);
-        }
 
         m_target->SetByteValue(UNIT_FIELD_BYTES_2, 3, form);
 
         if(modelid > 0)
-        {
             m_target->SetDisplayId(modelid);
-        }
 
         if(PowerType != POWER_MANA)
@@ -2546,7 +2540,5 @@
                         m_target->SetPower(POWER_ENERGY,0);
                         if(urand(1,100) <= FurorChance)
-                        {
                             m_target->CastSpell(m_target,17099,true,NULL,this);
-                        }
                     }
                     else
@@ -2554,7 +2546,5 @@
                         m_target->SetPower(POWER_RAGE,0);
                         if(urand(1,100) <= FurorChance)
-                        {
                             m_target->CastSpell(m_target,17057,true,NULL,this);
-                        }
                     }
                     break;
@@ -2948,7 +2938,6 @@
 
         if(m_target->GetTypeId() == TYPEID_PLAYER)
-        {
             ((Player*)m_target)->setFactionForRace(m_target->getRace());
-        }
+
         else if(m_target->GetTypeId() == TYPEID_UNIT)
         {
@@ -3057,7 +3046,5 @@
 
             if(m_target->GetTypeId() == TYPEID_PLAYER)
-            {
                 ((Player*)m_target)->setFactionForRace(m_target->getRace());
-            }
             else
             {
@@ -3643,7 +3630,5 @@
 
     if(apply)
-    {
         m_target->TauntApply(caster);
-    }
     else
     {
@@ -4317,7 +4302,5 @@
         //pets only have base armor
         if(((Creature*)m_target)->isPet() && (m_modifier.m_miscvalue & SPELL_SCHOOL_MASK_NORMAL))
-        {
             m_target->HandleStatModifier(UNIT_MOD_ARMOR, BASE_PCT, float(m_modifier.m_amount), apply);
-        }
     }
     else
@@ -4326,7 +4309,5 @@
         {
             if(m_modifier.m_miscvalue & int32(1<<x))
-            {
                 m_target->HandleStatModifier(UnitMods(UNIT_MOD_RESISTANCE_START + x), BASE_PCT, float(m_modifier.m_amount), apply);
-            }
         }
     }
@@ -4406,7 +4387,5 @@
     {
         if(m_modifier.m_miscvalue == i || m_modifier.m_miscvalue == -1)
-        {
             m_target->HandleStatModifier(UnitMods(UNIT_MOD_STAT_START + i), BASE_PCT, float(m_modifier.m_amount), apply);
-        }
     }
 }
@@ -5323,7 +5302,5 @@
     CreatureInfo const * ci = objmgr.GetCreatureTemplate(m_target->GetEntry());
     if(ci && ci->type == CREATURE_TYPE_BEAST)
-    {
         m_target->ApplyModUInt32Value(UNIT_DYNAMIC_FLAGS, UNIT_DYNFLAG_SPECIALINFO, apply);
-    }
 }
 
Index: /trunk/src/game/ObjectMgr.cpp
===================================================================
--- /trunk/src/game/ObjectMgr.cpp (revision 95)
+++ /trunk/src/game/ObjectMgr.cpp (revision 96)
@@ -2809,9 +2809,8 @@
     //   89              90              91              92              93              94            95            96            97            98
         "RewRepFaction1, RewRepFaction2, RewRepFaction3, RewRepFaction4, RewRepFaction5, RewRepValue1, RewRepValue2, RewRepValue3, RewRepValue4, RewRepValue5,"
-    //   99             100               101       102           103                104               105         106     107     108
-        "RewOrReqMoney, RewMoneyMaxLevel, RewSpell, RewSpellCast, RewMailTemplateId, RewMailDelaySecs, PointMapId, PointX, PointY, PointOpt,"
-    //   109            110            111            112           113              114            115                116                117                118
-        "DetailsEmote1, DetailsEmote2, DetailsEmote3, DetailsEmote4,IncompleteEmote, CompleteEmote, OfferRewardEmote1, OfferRewardEmote2, OfferRewardEmote3, OfferRewardEmote4,"
-    //   119          120
+    //   99                 100            101               102       103           104                105               106         107     108    109
+        "RewHonorableKills, RewOrReqMoney, RewMoneyMaxLevel, RewSpell, RewSpellCast, RewMailTemplateId, RewMailDelaySecs, PointMapId, PointX, PointY, PointOpt,"
+    //   110            111            112           113              114            115                116                117                118             119        "DetailsEmote1, DetailsEmote2, DetailsEmote3, DetailsEmote4,IncompleteEmote, CompleteEmote, OfferRewardEmote1, OfferRewardEmote2, OfferRewardEmote3, OfferRewardEmote4,"
+    //   120            121
         "StartScript, CompleteScript"
         " FROM quest_template");
