aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/game/Level1.cpp42
1 files changed, 31 insertions, 11 deletions
diff --git a/src/game/Level1.cpp b/src/game/Level1.cpp
index cb06b2fe273..88d65f783fa 100644
--- a/src/game/Level1.cpp
+++ b/src/game/Level1.cpp
@@ -1468,23 +1468,43 @@ bool ChatHandler::HandleModifyTalentCommand (const char* args)
return false;
int tp = atoi((char*)args);
- if (tp>0)
+ if (tp < 0)
+ return false;
+
+ Unit* target = getSelectedUnit();
+
+ if(!target)
{
- Player* player = getSelectedPlayer();
- if(!player)
- {
- SendSysMessage(LANG_NO_CHAR_SELECTED);
- SetSentErrorMessage(true);
- return false;
- }
+ SendSysMessage(LANG_NO_CHAR_SELECTED);
+ SetSentErrorMessage(true);
+ return false;
+ }
+ if(target->GetTypeId()==TYPEID_PLAYER)
+ {
// check online security
- if (HasLowerSecurity(player, 0))
+ if (HasLowerSecurity((Player*)target, 0))
return false;
-
- player->SetFreeTalentPoints(tp);
+ ((Player*)target)->SetFreeTalentPoints(tp);
+ ((Player*)target)->SendTalentsInfoData(false);
return true;
}
+ else if(((Creature*)target)->isPet())
+ {
+ Unit *owner = target->GetOwner();
+ if(owner && owner->GetTypeId() == TYPEID_PLAYER && ((Pet *)target)->IsPermanentPetFor((Player*)owner))
+ {
+ // check online security
+ if (HasLowerSecurity((Player*)owner, 0))
+ return false;
+ ((Pet *)target)->SetFreeTalentPoints(tp);
+ ((Player*)owner)->SendTalentsInfoData(true);
+ return true;
+ }
+ }
+
+ SendSysMessage(LANG_NO_CHAR_SELECTED);
+ SetSentErrorMessage(true);
return false;
}