Project SkyFire Core
SkyFire 5.4.8 server core API documentation
Loading...
Searching...
No Matches
PlayerMethods.cpp
Go to the documentation of this file.
1/*
2* Copyright (C) 2010 - 2013 Eluna Lua Engine <http://emudevs.com/>
3* This program is free software licensed under GPL version 3
4* Please see the included DOCS/LICENSE.TXT for more information
5*/
6
7#include "PlayerMethods.h"
8#include "Includes.h"
9
10namespace LuaPlayer
11{
12 int SaveToDB(lua_State* L, Player* player)
13 {
14 player->SaveToDB();
15 return 0;
16 }
17
18 int HasQuest(lua_State* L, Player* player)
19 {
20 uint32 quest = luaL_checkunsigned(L, 1);
21
22 sEluna->Push(L, player->IsActiveQuest(quest));
23 return 1;
24 }
25
26 int HasSpell(lua_State* L, Player* player)
27 {
28 uint32 id = luaL_checkunsigned(L, 1);
29
30 sEluna->Push(L, player->HasSpell(id));
31 return 1;
32 }
33
34 int SummonPlayer(lua_State* L, Player* player)
35 {
36 Player* target = sEluna->CHECK_PLAYER(L, 1);
37 uint32 map = luaL_checkunsigned(L, 2);
38 float x = luaL_checknumber(L, 3);
39 float y = luaL_checknumber(L, 4);
40 float z = luaL_checknumber(L, 5);
41 float zoneId = luaL_checkunsigned(L, 6);
42 uint32 delay = luaL_optunsigned(L, 7, 0);
43 if (!target || !MapManager::IsValidMapCoord(map, x, y, z))
44 return 0;
45
46 target->SetSummonPoint(map, x, y, z);
47 WorldPacket data(SMSG_SUMMON_REQUEST, 8 + 4 + 4);
48 data << uint64(GUID_LOPART(player->GetGUID()));
49 data << uint32(zoneId);
51 target->GetSession()->SendPacket(&data);
52 return 0;
53 }
54
55 int Mute(lua_State* L, Player* player)
56 {
57 uint32 muteseconds = luaL_checkunsigned(L, 1);
58 /*const char* reason = luaL_checkstring(L, 2);*/ // Mangos does not have a reason field in database.
59
60 //PreparedStatement* stmt = LoginDatabase.GetPreparedStatement(LOGIN_UPD_MUTE_TIME);
61 //int64 muteTime = time(NULL) + muteseconds;
62 //player->GetSession()->m_muteTime = muteTime;
63 //stmt->setInt64(0, muteTime);
64 //stmt->setString(1, ""); // reason
65 //stmt->setString(2, "Eluna");
66 //stmt->setUInt32(3, player->GetSession()->GetAccountId());
67 //LoginDatabase.Execute(stmt);
68 return 0;
69 }
70
71 int CreateCorpse(lua_State* L, Player* player)
72 {
73 player->CreateCorpse();
74 return 0;
75 }
76
77 int RewardQuest(lua_State* L, Player* player)
78 {
79 uint32 entry = luaL_checkunsigned(L, 1);
80
81 Quest const* quest = sObjectMgr->GetQuestTemplate(entry);
82 if (quest)
83 player->RewardQuest(quest, 0, player);
84 return 0;
85 }
86
87 int HasAura(lua_State* L, Player* player)
88 {
89 uint32 spell = luaL_checkunsigned(L, 1);
90 WorldObject* caster = sEluna->CHECK_WORLDOBJECT(L, 2);
91
92 sEluna->Push(L, player->HasAura(spell, caster ? GUID_LOPART(caster->GetGUID()) : 0));
93 return 1;
94 }
95
96 int IsARecruiter(lua_State* L, Player* player)
97 {
98 sEluna->Push(L, player->GetSession()->IsARecruiter() || (player->GetSession()->GetRecruiterId() != 0));
99 return 1;
100 }
101
102 int GetRecruiterId(lua_State* L, Player* player)
103 {
104 sEluna->Push(L, player->GetSession()->GetRecruiterId());
105 return 1;
106 }
107
108 int GetSelectedPlayer(lua_State* L, Player* player)
109 {
110 sEluna->Push(L, player->GetSelectedPlayer());
111 return 1;
112 }
113
114 int GetSelectedUnit(lua_State* L, Player* player)
115 {
116 sEluna->Push(L, player->GetSelectedUnit());
117 return 1;
118 }
119
120 int GetLatency(lua_State* L, Player* player)
121 {
122 sEluna->Push(L, player->GetSession()->GetLatency());
123 return 1;
124 }
125
126 int SendAuctionMenu(lua_State* L, Player* player)
127 {
128 Creature* creature = sEluna->CHECK_CREATURE(L, 1);
129
130 uint64 guid = creature ? GUID_LOPART(creature->GetGUID()) : GUID_LOPART(player->GetGUID());
131
133 if (!ahEntry)
134 return 0;
135
137 data << uint64(guid);
138 data << uint32(ahEntry->houseId);
139 data << uint8(1);
140 player->GetSession()->SendPacket(&data);
141 return 0;
142 }
143
144 int SendMailMenu(lua_State* L, Player* player)
145 {
146 GameObject* object = sEluna->CHECK_GAMEOBJECT(L, 1);
147 if (!object)
148 return 0;
149 return 0;
150 }
151
152 int SendTaxiMenu(lua_State* L, Player* player)
153 {
154 Creature* creature = sEluna->CHECK_CREATURE(L, 1);
155
156 if (creature)
157 player->GetSession()->SendTaxiMenu(creature);
158 return 0;
159 }
160
161 int SendSpiritResurrect(lua_State* L, Player* player)
162 {
163 player->GetSession()->SendSpiritResurrect();
164 return 0;
165 }
166
167 int SendTabardVendorActivate(lua_State* L, Player* player)
168 {
169 WorldObject* obj = sEluna->CHECK_WORLDOBJECT(L, 1);
170
171 if (obj)
173 return 0;
174 }
175
176 int SendShowBank(lua_State* L, Player* player)
177 {
178 WorldObject* obj = sEluna->CHECK_WORLDOBJECT(L, 1);
179
180 if (obj)
181 player->GetSession()->SendShowBank(obj->GetGUID());
182 return 0;
183 }
184
185 int SendListInventory(lua_State* L, Player* player)
186 {
187 WorldObject* obj = sEluna->CHECK_WORLDOBJECT(L, 1);
188 uint32 entry = luaL_optunsigned(L, 2, 0);
189
190 if (obj)
191 player->GetSession()->SendListInventory(obj->GetGUID()), entry;
192 return 0;
193 }
194
195 int SendTrainerList(lua_State* L, Player* player)
196 {
197 WorldObject* obj = sEluna->CHECK_WORLDOBJECT(L, 1);
198
199 if (obj)
200 player->GetSession()->SendTrainerList(obj->GetGUID());
201 return 0;
202 }
203
204 int SendGuildInvite(lua_State* L, Player* player)
205 {
206 Player* plr = sEluna->CHECK_PLAYER(L, 1);
207
208 if (plr)
209 if (Guild* guild = player->GetGuild())
210 guild->HandleInviteMember(player->GetSession(), plr->GetName());
211 return 0;
212 }
213
214 int LogoutPlayer(lua_State* L, Player* player)
215 {
216 bool save = luaL_optbool(L, 1, true);
217
218 player->GetSession()->LogoutPlayer(save);
219 return 0;
220 }
221
222 int GetChampioningFaction(lua_State* L, Player* player)
223 {
224 sEluna->Push(L, player->GetChampioningFaction());
225 return 1;
226 }
227
228 int ResetAchievements(lua_State* L, Player* player)
229 {
230 player->ResetAchievements();
231 return 0;
232 }
233
234 int HasAchieved(lua_State* L, Player* player)
235 {
236 uint32 achievementId = luaL_checkunsigned(L, 1);
237 sEluna->Push(L, player->HasAchieved(achievementId));
238 return 1;
239 }
240
241 int GetOriginalSubGroup(lua_State* L, Player* player)
242 {
243 sEluna->Push(L, player->GetOriginalSubGroup());
244 return 1;
245 }
246
247 int GetOriginalGroup(lua_State* L, Player* player)
248 {
249 sEluna->Push(L, player->GetOriginalGroup());
250 return 1;
251 }
252
254 {
255 //player->RemoveFromBattlegroundOrBattlefieldRaid();
256 return 0;
257 }
258
259 int CanUninviteFromGroup(lua_State* L, Player* player)
260 {
261 //sEluna->Push(L, player->CanUninviteFromGroup() == ERR_PARTY_RESULT_OK);
262 return 1;
263 }
264
265 int GetNextRandomRaidMember(lua_State* L, Player* player)
266 {
267 float radius = luaL_checknumber(L, 1);
268
269 sEluna->Push(L, player->GetNextRandomRaidMember(radius));
270 return 1;
271 }
272
273 int GetSubGroup(lua_State* L, Player* player)
274 {
275 sEluna->Push(L, player->GetSubGroup());
276 return 1;
277 }
278
279 int GetGroupInvite(lua_State* L, Player* player)
280 {
281 sEluna->Push(L, player->GetGroupInvite());
282 return 1;
283 }
284
285 int HasPendingBind(lua_State* L, Player* player)
286 {
287 sEluna->Push(L, player->HasPendingBind());
288 return 1;
289 }
290
291 int UnbindInstance(lua_State* L, Player* player)
292 {
293 uint32 map = luaL_checkunsigned(L, 1);
294 uint32 difficulty = luaL_checkunsigned(L, 2);
295
296 if (difficulty <= DIFFICULTY_FLEX)
297 player->UnbindInstance(map, (DifficultyID)difficulty);
298 return 0;
299 }
300
301 int BindToInstance(lua_State* L, Player* player)
302 {
303 player->BindToInstance();
304 return 0;
305 }
306
307 int SetAtLoginFlag(lua_State* L, Player* player)
308 {
309 uint32 flag = luaL_checkunsigned(L, 1);
310
311 player->SetAtLoginFlag((AtLoginFlags)flag);
312 return 0;
313 }
314
315 int InRandomLfgDungeon(lua_State* L, Player* player)
316 {
317 sEluna->Push(L, player->inRandomLfgDungeon());
318 return 1;
319 }
320
321 int IsUsingLfg(lua_State* L, Player* player)
322 {
323 sEluna->Push(L, player->isUsingLfg());
324 return 1;
325 }
326
327 int HasAtLoginFlag(lua_State* L, Player* player)
328 {
329 uint32 flag = luaL_checkunsigned(L, 1);
330
331 sEluna->Push(L, player->HasAtLoginFlag((AtLoginFlags)flag));
332 return 1;
333 }
334
335 int IsVisibleForPlayer(lua_State* L, Player* player)
336 {
337 Player* target = sEluna->CHECK_PLAYER(L, 1);
338
339 if (target)
340 sEluna->Push(L, player->IsVisibleGloballyFor(target));
341 else
342 sEluna->Push(L, false);
343 return 1;
344 }
345
346 int IsNeverVisible(lua_State* L, Player* player)
347 {
348 return 0;
349 // TODO: fix this
350 // sEluna->Push(L, player->IsNeverVisible());
351 // return 1;
352 }
353
354 int CanFlyInZone(lua_State* L, Player* player)
355 {
356 uint32 mapid = luaL_checkunsigned(L, 1);
357 uint32 zone = luaL_checkunsigned(L, 1);
358
359 sEluna->Push(L, player->IsKnowHowFlyIn(mapid, zone));
360 return 1;
361 }
362
363 int SetRestTime(lua_State* L, Player* player)
364 {
365 uint32 value = luaL_checkunsigned(L, 1);
366
367 player->SetRestTime(value);
368 return 0;
369 }
370
371 int GetRestTime(lua_State* L, Player* player)
372 {
373 sEluna->Push(L, player->GetRestTime());
374 return 1;
375 }
376
377 int GetXPRestBonus(lua_State* L, Player* player)
378 {
379 uint32 xp = luaL_checkunsigned(L, 1);
380
381 sEluna->Push(L, player->GetXPRestBonus(xp));
382 return 1;
383 }
384
385 int CanSpeak(lua_State* L, Player* player)
386 {
387 sEluna->Push(L, player->CanSpeak());
388 return 1;
389 }
390
391 int IsImmuneToEnvironmentalDamage(lua_State* L, Player* player)
392 {
393 sEluna->Push(L, player->IsImmuneToEnvironmentalDamage());
394 return 1;
395 }
396
397 int IsRested(lua_State* L, Player* player)
398 {
399 sEluna->Push(L, player->isRested());
400 return 1;
401 }
402
403 int LeaveBattleground(lua_State* L, Player* player)
404 {
405 bool teleToEntryPoint = luaL_optbool(L, 1, true);
406
407 player->LeaveBattleground(teleToEntryPoint);
408 return 0;
409 }
410
411 int InBattlegroundQueue(lua_State* L, Player* player)
412 {
413 sEluna->Push(L, player->InBattlegroundQueue());
414 return 1;
415 }
416
417 int GetBattlegroundTypeId(lua_State* L, Player* player)
418 {
419 sEluna->Push(L, player->GetBattlegroundTypeId());
420 return 1;
421 }
422
423 int GetBattlegroundId(lua_State* L, Player* player)
424 {
425 sEluna->Push(L, player->GetBattlegroundId());
426 return 1;
427 }
428
429 int IsOutdoorPvPActive(lua_State* L, Player* player)
430 {
431 sEluna->Push(L, player->IsOutdoorPvPActive());
432 return 1;
433 }
434
435 int InArena(lua_State* L, Player* player)
436 {
437 sEluna->Push(L, player->InArena());
438 return 1;
439 }
440
441 int InBattleground(lua_State* L, Player* player)
442 {
443 sEluna->Push(L, player->InBattleground());
444 return 1;
445 }
446
447 int CanTameExoticPets(lua_State* L, Player* player)
448 {
449 sEluna->Push(L, player->CanTameExoticPets());
450 return 1;
451 }
452
453 int CanTitanGrip(lua_State* L, Player* player)
454 {
455 sEluna->Push(L, player->CanTitanGrip());
456 return 1;
457 }
458
459 int CanBlock(lua_State* L, Player* player)
460 {
461 sEluna->Push(L, player->CanBlock());
462 return 1;
463 }
464
465 int CanParry(lua_State* L, Player* player)
466 {
467 sEluna->Push(L, player->CanParry());
468 return 1;
469 }
470
471 int GetDrunkValue(lua_State* L, Player* player)
472 {
473 sEluna->Push(L, player->GetDrunkValue());
474 return 1;
475 }
476
477 int SetDrunkValue(lua_State* L, Player* player)
478 {
479 uint8 newDrunkValue = luaL_checkunsigned(L, 1);
480
481 player->SetDrunkValue(newDrunkValue);
482 return 0;
483 }
484
485 int GetSpellCooldowns(lua_State* L, Player* player)
486 {
487 //lua_newtable(L);
488 //int tbl = lua_gettop(L);
489 //uint32 i = 0;
490
491 //for (SpellCooldowns::const_iterator it = player->GetSpellCooldownMap().begin(); it != player->GetSpellCooldownMap().end(); ++it)
492 //{
493 // ++i;
494 // sEluna->Push(L, it->first);
495 // sEluna->Push(L, it->second.end);
496 // lua_settable(L, tbl);
497 //}
498
499 //lua_settop(L, tbl);
500 return 1;
501 }
502
503 int ModifyArenaPoints(lua_State* L, Player* player)
504 {
505 int32 amount = luaL_checkunsigned(L, 1);
506 // @TODO
507 //player->ModifyArenaPoints(amount);
508 return 0;
509 }
510
511 int ModifyHonorPoints(lua_State* L, Player* player)
512 {
513 int32 amount = luaL_checkunsigned(L, 1);
514 // @TODO
515 //player->ModifyHonorPoints(amount);
516 return 0;
517 }
518
519 int GetReputationRank(lua_State* L, Player* player)
520 {
521 uint32 faction = luaL_checkunsigned(L, 1);
522
523 sEluna->Push(L, player->GetReputationRank(faction));
524 return 1;
525 }
526
527 int IsHonorOrXPTarget(lua_State* L, Player* player)
528 {
529 Unit* victim = sEluna->CHECK_UNIT(L, 1);
530
531 if (victim)
532 sEluna->Push(L, player->isHonorOrXPTarget(victim));
533 else
534 sEluna->Push(L, false);
535 return 1;
536 }
537
538 int SetFactionForRace(lua_State* L, Player* player)
539 {
540 uint8 race = luaL_checkunsigned(L, 1);
541
542 player->setFactionForRace(race);
543 return 0;
544 }
545
546 int SetSkill(lua_State* L, Player* player)
547 {
548 uint16 id = luaL_checkunsigned(L, 1);
549 uint16 step = luaL_checkunsigned(L, 2);
550 uint16 currVal = luaL_checkunsigned(L, 3);
551 uint16 maxVal = luaL_checkunsigned(L, 4);
552
553 player->SetSkill(id, step, currVal, maxVal);
554 return 0;
555 }
556
557 int HasSkill(lua_State* L, Player* player)
558 {
559 uint32 skill = luaL_checkunsigned(L, 1);
560
561 sEluna->Push(L, player->HasSkill(skill));
562 return 1;
563 }
564
565 int GetSkillTempBonusValue(lua_State* L, Player* player)
566 {
567 uint32 skill = luaL_checkunsigned(L, 1);
568
569 sEluna->Push(L, player->GetSkillTempBonusValue(skill));
570 return 1;
571 }
572
573 int GetSkillPermBonusValue(lua_State* L, Player* player)
574 {
575 uint32 skill = luaL_checkunsigned(L, 1);
576
577 sEluna->Push(L, player->GetSkillPermBonusValue(skill));
578 return 1;
579 }
580
581 int GetPureSkillValue(lua_State* L, Player* player)
582 {
583 uint32 skill = luaL_checkunsigned(L, 1);
584
585 sEluna->Push(L, player->GetPureSkillValue(skill));
586 return 1;
587 }
588
589 int GetBaseSkillValue(lua_State* L, Player* player)
590 {
591 uint32 skill = luaL_checkunsigned(L, 1);
592
593 sEluna->Push(L, player->GetBaseSkillValue(skill));
594 return 1;
595 }
596
597 int GetSkillValue(lua_State* L, Player* player)
598 {
599 uint32 skill = luaL_checkunsigned(L, 1);
600
601 sEluna->Push(L, player->GetSkillValue(skill));
602 return 1;
603 }
604
605 int GetPureMaxSkillValue(lua_State* L, Player* player)
606 {
607 uint32 skill = luaL_checkunsigned(L, 1);
608
609 sEluna->Push(L, player->GetPureMaxSkillValue(skill));
610 return 1;
611 }
612
613 int GetMaxSkillValue(lua_State* L, Player* player)
614 {
615 uint32 skill = luaL_checkunsigned(L, 1);
616
617 sEluna->Push(L, player->GetMaxSkillValue(skill));
618 return 1;
619 }
620
621 int SetMovement(lua_State* L, Player* player)
622 {
623 int32 pType = luaL_checkinteger(L, 1);
624 // @TODO
625 //player->SetMovement((PlayerMovementType)pType);
626 return 0;
627 }
628
629 int DurabilityRepair(lua_State* L, Player* player)
630 {
631 uint16 position = luaL_checkunsigned(L, 1);
632 bool cost = luaL_optbool(L, 2, true);
633 float discountMod = luaL_checkinteger(L, 3);
634 bool guildBank = luaL_optbool(L, 4, false);
635
636 sEluna->Push(L, player->DurabilityRepair(position, cost, discountMod, guildBank));
637 return 1;
638 }
639
640 int DurabilityRepairAll(lua_State* L, Player* player)
641 {
642 bool cost = luaL_optbool(L, 1, true);
643 float discountMod = luaL_checkinteger(L, 2);
644 bool guildBank = luaL_optbool(L, 3, false);
645
646 sEluna->Push(L, player->DurabilityRepairAll(cost, discountMod, guildBank));
647 return 1;
648 }
649
650 int DurabilityPointLossForEquipSlot(lua_State* L, Player* player)
651 {
652 int32 slot = luaL_checkinteger(L, 1);
653
654 if (slot >= EQUIPMENT_SLOT_START && slot < EQUIPMENT_SLOT_END)
656 return 0;
657 }
658
659 int DurabilityPointsLossAll(lua_State* L, Player* player)
660 {
661 int32 points = luaL_checkinteger(L, 1);
662 bool inventory = luaL_optbool(L, 2, true);
663
664 player->DurabilityPointsLossAll(points, inventory);
665 return 0;
666 }
667
668 int DurabilityPointsLoss(lua_State* L, Player* player)
669 {
670 Item* item = sEluna->CHECK_ITEM(L, 1);
671 int32 points = luaL_checkinteger(L, 2);
672
673 if (item)
674 player->DurabilityPointsLoss(item, points);
675 return 0;
676 }
677
678 int DurabilityLoss(lua_State* L, Player* player)
679 {
680 Item* item = sEluna->CHECK_ITEM(L, 1);
681 double percent = luaL_checknumber(L, 2);
682
683 if (item)
684 player->DurabilityLoss(item, percent);
685 return 0;
686 }
687
688 int DurabilityLossAll(lua_State* L, Player* player)
689 {
690 double percent = luaL_checknumber(L, 1);
691 bool inventory = luaL_optbool(L, 2, true);
692
693 player->DurabilityLossAll(percent, inventory);
694 return 0;
695 }
696
697 int KillPlayer(lua_State* L, Player* player)
698 {
699 player->KillPlayer();
700 return 0;
701 }
702
703 int GetManaBonusFromIntellect(lua_State* L, Player* player)
704 {
705 sEluna->Push(L, 0.0f);
706 return 1;
707 }
708
709 int GetHealthBonusFromStamina(lua_State* L, Player* player)
710 {
711 sEluna->Push(L, player->GetHealthBonusFromStamina());
712 return 1;
713 }
714
715 int GetDifficulty(lua_State* L, Player* player)
716 {
717 bool isRaid = luaL_optbool(L, 1, true);
718
719 sEluna->Push(L, isRaid ? player->GetRaidDifficulty() : player->GetDungeonDifficulty());
720 return 1;
721 }
722
723 int GetGuildRank(lua_State* L, Player* player) // TODO: Move to Guild Methods
724 {
725 sEluna->Push(L, player->GetRank());
726 return 1;
727 }
728
729 int SetGuildRank(lua_State* L, Player* player) // TODO: Move to Guild Methods
730 {
731 uint8 rank = luaL_checkunsigned(L, 1);
732
733 if (!player->GetGuildId())
734 return 0;
735
736 player->SetRank(rank);
737 return 0;
738 }
739
740 int RemoveFromGroup(lua_State* L, Player* player)
741 {
742 if (!player->GetGroup())
743 return 0;
744
745 player->RemoveFromGroup();
746 return 0;
747 }
748
749 int IsGroupVisibleFor(lua_State* L, Player* player)
750 {
751 Player* target = sEluna->CHECK_PLAYER(L, 1);
752 if (!target)
753 sEluna->Push(L, false);
754 else
755 sEluna->Push(L, player->IsGroupVisibleFor(target));
756 return 1;
757 }
758
759 int IsInSameRaidWith(lua_State* L, Player* player)
760 {
761 Player* target = sEluna->CHECK_PLAYER(L, 1);
762 if (!target)
763 sEluna->Push(L, false);
764 else
765 sEluna->Push(L, player->IsInSameRaidWith(target));
766 return 1;
767 }
768
769 int IsInSameGroupWith(lua_State* L, Player* player)
770 {
771 Player* target = sEluna->CHECK_PLAYER(L, 1);
772 if (!target)
773 sEluna->Push(L, false);
774 else
775 sEluna->Push(L, player->IsInSameGroupWith(target));
776 return 1;
777 }
778
779 int GetSpellCooldownDelay(lua_State* L, Player* player)
780 {
781 uint32 spellId = luaL_checkunsigned(L, 1);
782
783 sEluna->Push(L, player->GetSpellCooldownDelay(spellId));
784 return 1;
785 }
786
787 int GetSpecsCount(lua_State* L, Player* player)
788 {
789 sEluna->Push(L, player->GetSpecsCount());
790 return 1;
791 }
792
793 int GetActiveSpec(lua_State* L, Player* player)
794 {
795 sEluna->Push(L, player->GetActiveSpec());
796 return 1;
797 }
798
799 int HasTalent(lua_State* L, Player* player)
800 {
801 uint32 talentId = luaL_checkunsigned(L, 1);
802 uint8 spec = luaL_checkunsigned(L, 2);
803 if (spec >= MAX_TALENT_SPECS)
804 sEluna->Push(L, false);
805 else
806 sEluna->Push(L, player->HasTalent(talentId, spec));
807 return 1;
808 }
809
810 int AddTalent(lua_State* L, Player* player)
811 {
812 uint32 spellId = luaL_checkunsigned(L, 1);
813 uint8 spec = luaL_checkunsigned(L, 2);
814 bool learning = luaL_optbool(L, 3, true);
815 if (spec >= MAX_TALENT_SPECS)
816 sEluna->Push(L, false);
817 else
818 sEluna->Push(L, player->AddTalent(spellId, spec, learning));
819 return 1;
820 }
821
822 int ResetTalentsCost(lua_State* L, Player* player)
823 {
824 // @TODO
825 //sEluna->Push(L, player->resetTalentsCost());
826 return 1;
827 }
828
829 int ResetTalents(lua_State* L, Player* player)
830 {
831 bool no_cost = luaL_optbool(L, 1, false);
832 // @TODO
833 //player->resetTalents(no_cost);
834 player->SendTalentsInfoData();
835 return 0;
836 }
837
838 int SetFreeTalentPoints(lua_State* L, Player* player)
839 {
840 //uint32 points = luaL_checkunsigned(L, 1);
841
842 //player->SetFreeTalentPoints(points);
843 return 0;
844 }
845
846 int GetFreeTalentPoints(lua_State* L, Player* player)
847 {
848 //sEluna->Push(L, player->GetFreeTalentPoints());
849 return 1;
850 }
851
852 int GetGuildName(lua_State* L, Player* player)
853 {
854 if (!player->GetGuildId())
855 return 0;
856 sEluna->Push(L, sGuildMgr->GetGuildNameById(player->GetGuildId()));
857 return 1;
858 }
859
860 int GetReputation(lua_State* L, Player* player)
861 {
862 uint32 faction = luaL_checkunsigned(L, 1);
863
864 sEluna->Push(L, player->GetReputationMgr().GetReputation(faction));
865 return 1;
866 }
867
868 int SetReputation(lua_State* L, Player* player)
869 {
870 uint32 faction = luaL_checkunsigned(L, 1);
871 int32 value = luaL_checkinteger(L, 2);
872
873 FactionEntry const* factionEntry = sFactionStore.LookupEntry(faction);
874 player->GetReputationMgr().SetReputation(factionEntry, value);
875 return 0;
876 }
877
878 int RemoveSpell(lua_State* L, Player* player)
879 {
880 uint32 entry = luaL_checkunsigned(L, 1);
881 bool disabled = luaL_optbool(L, 2, false);
882 bool learn_low_rank = luaL_optbool(L, 3, true);
883
884 player->removeSpell(entry, disabled, learn_low_rank);
885 return 0;
886 }
887
888 int ClearComboPoints(lua_State* L, Player* player)
889 {
890 player->ClearComboPoints();
891 return 0;
892 }
893
894 int GainSpellComboPoints(lua_State* L, Player* player)
895 {
896 //int8 count = luaL_checkinteger(L, 1);
897
898 //player->GainSpellComboPoints(count);
899 return 0;
900 }
901
902 int AddComboPoints(lua_State* L, Player* player)
903 {
904 Unit* target = sEluna->CHECK_UNIT(L, 1);
905 int8 count = luaL_checkinteger(L, 2);
906 if (!target)
907 return 0;
908
909 player->AddComboPoints(target, count);
910 return 0;
911 }
912
913 int GetComboTarget(lua_State* L, Player* player)
914 {
915 sEluna->Push(L, player->GetComboTarget());
916 return 1;
917 }
918
919 int GetComboPoints(lua_State* L, Player* player)
920 {
921 sEluna->Push(L, player->GetComboPoints());
922 return 1;
923 }
924
925 int HasReceivedQuestReward(lua_State* L, Player* player)
926 {
927 uint32 entry = luaL_checkunsigned(L, 1);
928
929 sEluna->Push(L, player->IsQuestRewarded(entry));
930 return 1;
931 }
932
933 int RegenerateHealth(lua_State* L, Player* player)
934 {
935 player->RegenerateHealth(); // TC cant regen to full?
936 return 0;
937 }
938
939 int Regenerate(lua_State* L, Player* player)
940 {
941 uint32 power = luaL_checkunsigned(L, 1);
942 if (power >= MAX_POWERS)
943 return 0;
944
945 player->Regenerate((Powers)power); // TC cant regen to full?
946 return 0;
947 }
948
949 int RegenerateAll(lua_State* L, Player* player)
950 {
951 player->RegenerateAll();
952 return 0;
953 }
954
955 int ResetPetTalents(lua_State* L, Player* player)
956 {
957 player->ResetPetTalents();
958 return 0;
959 }
960
961 int GetInGameTime(lua_State* L, Player* player)
962 {
963 sEluna->Push(L, player->GetInGameTime());
964 return 1;
965 }
966
967 int TalkedToCreature(lua_State* L, Player* player)
968 {
969 uint32 entry = luaL_checkunsigned(L, 1);
970 Creature* creature = sEluna->CHECK_CREATURE(L, 2);
971 if (!creature)
972 return 0;
973
974 player->TalkedToCreature(entry, creature->GetGUID());
975 return 0;
976 }
977
978 int KillGOCredit(lua_State* L, Player* player)
979 {
980 uint32 entry = luaL_checkunsigned(L, 1);
981 ObjectGuid guid(uint64(sEluna->CHECK_ULONG(L, 2)));
982 player->KillCreditGO(entry, guid);
983 return 0;
984 }
985
986 int KilledPlayerCredit(lua_State* L, Player* player)
987 {
988 player->KilledPlayerCredit();
989 return 0;
990 }
991
992 int KilledMonsterCredit(lua_State* L, Player* player)
993 {
994 uint32 entry = luaL_checkunsigned(L, 1);
995
996 player->KilledMonsterCredit(entry, 0);
997 return 0;
998 }
999
1000 int GroupEventHappens(lua_State* L, Player* player)
1001 {
1002 uint32 questId = luaL_checkunsigned(L, 1);
1003 WorldObject* obj = sEluna->CHECK_WORLDOBJECT(L, 2);
1004 if (!obj)
1005 return 0;
1006
1007 player->GroupEventHappens(questId, obj);
1008 return 0;
1009 }
1010
1011 int AreaExploredOrEventHappens(lua_State* L, Player* player)
1012 {
1013 uint32 questId = luaL_checkunsigned(L, 1);
1014
1015 player->AreaExploredOrEventHappens(questId);
1016 return 0;
1017 }
1018
1019 int CanShareQuest(lua_State* L, Player* player)
1020 {
1021 uint32 entry = luaL_checkunsigned(L, 1);
1022
1023 sEluna->Push(L, player->CanShareQuest(entry));
1024 return 1;
1025 }
1026
1027 int HasQuestForGO(lua_State* L, Player* player)
1028 {
1029
1030 int32 entry = luaL_checkinteger(L, 1);
1031
1032 sEluna->Push(L, player->HasQuestForGO(entry));
1033 return 1;
1034 }
1035
1036 int HasQuestForItem(lua_State* L, Player* player)
1037 {
1038 uint32 entry = luaL_checkunsigned(L, 1);
1039
1040 sEluna->Push(L, player->HasQuestForItem(entry));
1041 return 1;
1042 }
1043
1044 int GetReqKillOrCastCurrentCount(lua_State* L, Player* player)
1045 {
1046 uint32 questId = luaL_checkunsigned(L, 1);
1047 int32 entry = luaL_checkinteger(L, 2);
1048
1049 sEluna->Push(L, player->GetReqKillOrCastCurrentCount(questId, entry));
1050 return 1;
1051 }
1052
1053 int RemoveRewardedQuest(lua_State* L, Player* player)
1054 {
1055 uint32 entry = luaL_checkunsigned(L, 1);
1056
1057 player->RemoveRewardedQuest(entry);
1058 return 0;
1059 }
1060
1061 int RemoveActiveQuest(lua_State* L, Player* player)
1062 {
1063 uint32 entry = luaL_checkunsigned(L, 1);
1064
1065 player->RemoveActiveQuest(entry);
1066 return 0;
1067 }
1068
1069 int SetQuestStatus(lua_State* L, Player* player)
1070 {
1071 uint32 entry = luaL_checkunsigned(L, 1);
1072 uint32 status = luaL_checkunsigned(L, 2);
1073 if (status >= MAX_QUEST_STATUS)
1074 return 0;
1075
1076 player->SetQuestStatus(entry, (QuestStatus)status);
1077 return 0;
1078 }
1079
1080 int GetQuestStatus(lua_State* L, Player* player)
1081 {
1082 uint32 entry = luaL_checkunsigned(L, 1);
1083
1084 sEluna->Push(L, player->GetQuestStatus(entry));
1085 return 1;
1086 }
1087
1088 int GetQuestRewardStatus(lua_State* L, Player* player)
1089 {
1090 uint32 questId = luaL_checkunsigned(L, 1);
1091
1092 sEluna->Push(L, player->GetQuestRewardStatus(questId));
1093 return 1;
1094 }
1095
1096 int FailQuest(lua_State* L, Player* player)
1097 {
1098 uint32 entry = luaL_checkunsigned(L, 1);
1099
1100 player->FailQuest(entry);
1101 return 0;
1102 }
1103
1104 int IncompleteQuest(lua_State* L, Player* player)
1105 {
1106 uint32 entry = luaL_checkunsigned(L, 1);
1107
1108 player->IncompleteQuest(entry);
1109 return 0;
1110 }
1111
1112 int CompleteQuest(lua_State* L, Player* player)
1113 {
1114 uint32 entry = luaL_checkunsigned(L, 1);
1115
1116 player->CompleteQuest(entry);
1117 return 0;
1118 }
1119
1120 int IsActiveQuest(lua_State* L, Player* player)
1121 {
1122 uint32 entry = luaL_checkunsigned(L, 1);
1123
1124 sEluna->Push(L, player->IsActiveQuest(entry));
1125 return 1;
1126 }
1127
1128 int GetQuestLevel(lua_State* L, Player* player)
1129 {
1130 Quest* quest = sEluna->CHECK_QUEST(L, 1);
1131 if (!quest)
1132 return 0;
1133
1134 sEluna->Push(L, player->GetQuestLevel(quest));
1135 return 1;
1136 }
1137
1138 int GetItemByEntry(lua_State* L, Player* player)
1139 {
1140 uint32 entry = luaL_checkunsigned(L, 1);
1141
1142 sEluna->Push(L, player->GetItemByEntry(entry));
1143 return 1;
1144 }
1145
1146 int GetEquippedItemBySlot(lua_State* L, Player* player)
1147 {
1148 uint8 slot = luaL_checkunsigned(L, 1);
1149 if (slot >= EQUIPMENT_SLOT_END)
1150 return 0;
1151
1152 Item* item = player->GetItemByPos(INVENTORY_SLOT_BAG_0, slot);
1153 sEluna->Push(L, item);
1154 return 1;
1155 }
1156
1157 int Whisper(lua_State* L, Player* player)
1158 {
1159 std::string text = luaL_checkstring(L, 1);
1160 uint32 lang = luaL_checkunsigned(L, 2);
1161 ObjectGuid guid(uint64(sEluna->CHECK_ULONG(L, 3)));
1162
1163 player->Whisper(text, Language(lang), guid);
1164 return 0;
1165 }
1166
1167 int TextEmote(lua_State* L, Player* player)
1168 {
1169 std::string text = luaL_checkstring(L, 1);
1170
1171 player->TextEmote(text);
1172 return 0;
1173 }
1174
1175 int Yell(lua_State* L, Player* player)
1176 {
1177 std::string text = luaL_checkstring(L, 1);
1178 uint32 lang = luaL_checkunsigned(L, 2);
1179
1180 player->Yell(text, Language(lang));
1181 return 0;
1182 }
1183
1184 int Say(lua_State* L, Player* player)
1185 {
1186 std::string text = luaL_checkstring(L, 1);
1187 uint32 lang = luaL_checkunsigned(L, 2);
1188
1189 player->Say(text, Language(lang));
1190 return 0;
1191 }
1192
1193 int GetPhaseMaskForSpawn(lua_State* L, Player* player)
1194 {
1195 // @TODO
1196 //sEluna->Push(L, player->GetPhaseMaskForSpawn());
1197 return 1;
1198 }
1199
1200 int SummonPet(lua_State* L, Player* player)
1201 {
1202 uint32 entry = luaL_checkunsigned(L, 1);
1203 float x = luaL_checknumber(L, 2);
1204 float y = luaL_checknumber(L, 3);
1205 float z = luaL_checknumber(L, 4);
1206 float o = luaL_checknumber(L, 5);
1207 uint32 petType = luaL_checkunsigned(L, 6);
1208 uint32 despwtime = luaL_checkunsigned(L, 7);
1209
1210 if (petType >= uint32(PetType::MAX_PET_TYPE))
1211 return 0;
1212
1213 player->SummonPet(entry, x, y, z, o, PetType(petType), despwtime);
1214 return 0;
1215 }
1216
1217 int RemovePet(lua_State* L, Player* player)
1218 {
1219 // @TODO
1220 //int mode = luaL_optint(L, 1, PET_SAVE_AS_DELETED);
1221 //bool returnreagent = luaL_optbool(L, 1, false);
1222
1223 //if (!player->GetPet())
1224 // return 0;
1225
1226 //player->RemovePet(player->GetPet(), (PetSaveMode)mode, returnreagent);
1227 return 0;
1228 }
1229
1230 int HasRestFlag(lua_State* L, Player* player)
1231 {
1232 int flag = luaL_checkinteger(L, 1);
1233 sEluna->Push(L, false);
1234 return 1;
1235 }
1236
1237 int SetRestFlag(lua_State* L, Player* player)
1238 {
1239 int flag = luaL_checkinteger(L, 1);
1240 uint32 triggerId = luaL_optunsigned(L, 2, 0);
1241
1242 return 0;
1243 }
1244
1245 int SetRestBonus(lua_State* L, Player* player)
1246 {
1247 float bonus = luaL_checknumber(L, 1);
1248
1249 player->SetRestBonus(bonus);
1250 return 0;
1251 }
1252
1253 int GetRestBonus(lua_State* L, Player* player)
1254 {
1255 sEluna->Push(L, player->GetRestBonus());
1256 return 1;
1257 }
1258
1259 int GiveLevel(lua_State* L, Player* player)
1260 {
1261 uint8 level = luaL_checkunsigned(L, 1);
1262
1263 player->GiveLevel(level);
1264 return 0;
1265 }
1266
1267 int GiveXP(lua_State* L, Player* player)
1268 {
1269 uint32 xp = luaL_checkunsigned(L, 1);
1270 Unit* victim = sEluna->CHECK_UNIT(L, 2);
1271 float group_rate = luaL_optnumber(L, 3, 1.0f);
1272 bool pureXP = luaL_optbool(L, 4, true);
1273 bool triggerHook = luaL_optbool(L, 5, true);
1274
1275 if (xp < 1)
1276 return 0;
1278 return 0;
1279 if (victim && victim->GetTypeId() == TYPEID_UNIT && !victim->ToCreature()->hasLootRecipient())
1280 return 0;
1281
1282 uint8 level = player->getLevel();
1283
1284 if (triggerHook)
1285 sScriptMgr->OnGivePlayerXP(player, xp, victim);
1286
1287 if (!pureXP)
1288 {
1289 // Favored experience increase START
1290 uint32 zone = player->GetZoneId();
1291 float favored_exp_mult = 0;
1292 if ((player->HasAura(32096) || player->HasAura(32098)) && (zone == 3483 || zone == 3562 || zone == 3836 || zone == 3713 || zone == 3714))
1293 favored_exp_mult = 0.05f; // Thrallmar's Favor and Honor Hold's Favor
1294 xp = uint32(xp * (1 + favored_exp_mult));
1295 // Favored experience increase END
1296 }
1297
1298 // XP to money conversion processed in Player::RewardQuest
1299 if (level >= sWorld->getIntConfig(WorldIntConfigs::CONFIG_MAX_PLAYER_LEVEL))
1300 return 0;
1301
1302 uint32 bonus_xp = 0;
1303 bool recruitAFriend = pureXP ? false : player->GetsRecruitAFriendBonus(true);
1304 if (!pureXP)
1305 {
1306 // RaF does NOT stack with rested experience
1307 if (recruitAFriend)
1308 bonus_xp = 2 * xp; // xp + bonus_xp must add up to 3 * xp for RaF; calculation for quests done client-side
1309 else
1310 bonus_xp = victim ? player->GetXPRestBonus(xp) : 0; // XP resting bonus
1311 }
1312
1313 player->SendLogXPGain(xp, victim, bonus_xp, recruitAFriend, group_rate);
1314
1315 uint32 curXP = player->GetUInt32Value(PLAYER_FIELD_XP);
1317 uint32 newXP = curXP + xp + bonus_xp;
1318
1319 while (newXP >= nextLvlXP && level < sWorld->getIntConfig(WorldIntConfigs::CONFIG_MAX_PLAYER_LEVEL))
1320 {
1321 newXP -= nextLvlXP;
1322
1323 if (level < sWorld->getIntConfig(WorldIntConfigs::CONFIG_MAX_PLAYER_LEVEL))
1324 player->GiveLevel(level + 1);
1325
1326 level = player->getLevel();
1327 nextLvlXP = player->GetUInt32Value(PLAYER_FIELD_NEXT_LEVEL_XP);
1328 }
1329
1330 player->SetUInt32Value(PLAYER_FIELD_XP, newXP);
1331 return 0;
1332 }
1333
1334 int IsGMVisible(lua_State* L, Player* player)
1335 {
1336 sEluna->Push(L, player->isGMVisible());
1337 return 1;
1338 }
1339
1340 int IsTaxiCheater(lua_State* L, Player* player)
1341 {
1342 sEluna->Push(L, player->isTaxiCheater());
1343 return 1;
1344 }
1345
1346 int IsGMChat(lua_State* L, Player* player)
1347 {
1348 sEluna->Push(L, player->isGMChat());
1349 return 1;
1350 }
1351
1352 int IsAcceptingWhispers(lua_State* L, Player* player)
1353 {
1354 sEluna->Push(L, player->isAcceptWhispers());
1355 return 1;
1356 }
1357
1358 int SetAcceptWhispers(lua_State* L, Player* player)
1359 {
1360 bool on = luaL_optbool(L, 1, true);
1361
1362 player->SetAcceptWhispers(on);
1363 return 0;
1364 }
1365
1366 int SetPvPDeath(lua_State* L, Player* player)
1367 {
1368 bool on = luaL_optbool(L, 1, true);
1369
1370 player->SetPvPDeath(on);
1371 return 0;
1372 }
1373
1374 int SetGMVisible(lua_State* L, Player* player)
1375 {
1376 bool on = luaL_optbool(L, 1, true);
1377
1378 player->SetGMVisible(on);
1379 return 0;
1380 }
1381
1382 int SetTaxiCheat(lua_State* L, Player* player)
1383 {
1384 bool on = luaL_optbool(L, 1, true);
1385
1386 player->SetTaxiCheater(on);
1387 return 0;
1388 }
1389
1390 int SetGMChat(lua_State* L, Player* player)
1391 {
1392 bool on = luaL_optbool(L, 1, true);
1393
1394 player->SetGMChat(on);
1395 return 0;
1396 }
1397
1398 int SetGameMaster(lua_State* L, Player* player)
1399 {
1400 bool on = luaL_optbool(L, 1, true);
1401
1402 player->SetGameMaster(on);
1403 return 0;
1404 }
1405
1406 int GetChatTag(lua_State* L, Player* player)
1407 {
1408 sEluna->Push(L, player->GetChatTag());
1409 return 1;
1410 }
1411
1412 int IsDND(lua_State* L, Player* player)
1413 {
1414 sEluna->Push(L, player->isDND());
1415 return 1;
1416 }
1417
1418 int IsAFK(lua_State* L, Player* player)
1419 {
1420 sEluna->Push(L, player->isAFK());
1421 return 1;
1422 }
1423
1424 int ToggleDND(lua_State* L, Player* player)
1425 {
1426 player->ToggleDND();
1427 return 0;
1428 }
1429
1430 int ToggleAFK(lua_State* L, Player* player)
1431 {
1432 player->ToggleAFK();
1433 return 0;
1434 }
1435
1436 int IsFalling(lua_State* L, Player* player)
1437 {
1438 sEluna->Push(L, player->IsFalling());
1439 return 1;
1440 }
1441
1442 int GetNearbyGameObject(lua_State* L, Player* player)
1443 {
1444 sEluna->Push(L, ChatHandler(player->GetSession()).GetNearbyGameObject());
1445 return 1;
1446 }
1447
1448 int EquipItem(lua_State* L, Player* player)
1449 {
1450 uint16 dest = 0;
1451 Item* item = sEluna->CHECK_ITEM(L, 1);
1452 uint32 slot = luaL_checkunsigned(L, 2);
1453
1454 if (slot >= INVENTORY_SLOT_BAG_END)
1455 return 0;
1456
1457 if (!item)
1458 {
1459 uint32 entry = luaL_checkunsigned(L, 1);
1460 item = Item::CreateItem(entry, 1, player);
1461 if (!item)
1462 return 0;
1463
1464 InventoryResult result = player->CanEquipItem(slot, dest, item, false);
1465 if (result != EQUIP_ERR_OK)
1466 {
1467 delete item;
1468 return 0;
1469 }
1470 player->ItemAddedQuestCheck(entry, 1);
1472 }
1473 else
1474 {
1475 InventoryResult result = player->CanEquipItem(slot, dest, item, false);
1476 if (result != EQUIP_ERR_OK)
1477 return 0;
1478 player->RemoveItem(item->GetBagSlot(), item->GetSlot(), true);
1479 }
1480
1481 sEluna->Push(L, player->EquipItem(dest, item, true));
1482 return 1;
1483 }
1484
1485 int CanEquipItem(lua_State* L, Player* player)
1486 {
1487 Item* item = sEluna->CHECK_ITEM(L, 1);
1488 uint32 slot = luaL_checkunsigned(L, 2);
1489 if (slot >= EQUIPMENT_SLOT_END)
1490 {
1491 sEluna->Push(L, false);
1492 return 1;
1493 }
1494
1495 if (!item)
1496 {
1497 uint32 entry = luaL_checkunsigned(L, 1);
1498 uint16 dest;
1499 InventoryResult msg = player->CanEquipNewItem(slot, dest, entry, false);
1500 if (msg != EQUIP_ERR_OK)
1501 {
1502 sEluna->Push(L, false);
1503 return 1;
1504 }
1505 }
1506 else
1507 {
1508 uint16 dest;
1509 InventoryResult msg = player->CanEquipItem(slot, dest, item, false);
1510 if (msg != EQUIP_ERR_OK)
1511 {
1512 sEluna->Push(L, false);
1513 return 1;
1514 }
1515 }
1516 sEluna->Push(L, true);
1517 return 1;
1518 }
1519
1520 int GetItemByPos(lua_State* L, Player* player)
1521 {
1522 /*
1523 bag = -1 for inventory and backpack, 19-22 other bags
1524 slots 0-18 equipment
1525 slots 19-22 bags
1526 slots 23-38 backpack
1527 slots 0-35 other bags
1528 */
1529 uint8 bag = luaL_checkunsigned(L, 1);
1530 uint8 slot = luaL_checkunsigned(L, 2);
1531
1532 sEluna->Push(L, player->GetItemByPos(bag, slot));
1533 return 1;
1534 }
1535
1536 int GetArenaPoints(lua_State* L, Player* player)
1537 {
1538 // @TODO
1539 //sEluna->Push(L, player->GetArenaPoints());
1540 return 1;
1541 }
1542
1543 int SetGender(lua_State* L, Player* player)
1544 {
1545 Gender gender;
1546 uint32 _gender = luaL_checkint(L, 1);
1547
1548 switch (_gender)
1549 {
1550 case 0:
1551 gender = GENDER_MALE;
1552 break;
1553 case 1:
1554 gender = GENDER_FEMALE;
1555 break;
1556 default:
1557 luaL_error(L, "Invalid gender (%d)", _gender);
1558 return 0;
1559 }
1560
1561 player->SetGender(gender);
1562 player->InitDisplayIds();
1563 return 0;
1564 }
1565
1566 int GetHonorPoints(lua_State* L, Player* player)
1567 {
1569 return 1;
1570 }
1571
1572 int GetGossipTextId(lua_State* L, Player* player)
1573 {
1574 WorldObject* obj = sEluna->CHECK_WORLDOBJECT(L, 1);
1575 if (!obj)
1576 return 0;
1577 sEluna->Push(L, player->GetGossipTextId(obj));
1578 return 1;
1579 }
1580
1581 int GetSelection(lua_State* L, Player* player)
1582 {
1583 sEluna->Push(L, player->GetSelectedUnit());
1584 return 1;
1585 }
1586
1587 int GetGMRank(lua_State* L, Player* player)
1588 {
1589 sEluna->Push(L, player->GetSession()->GetSecurity());
1590 return 1;
1591 }
1592
1593 int GetCoinage(lua_State* L, Player* player)
1594 {
1595 sEluna->Push(L, player->GetMoney());
1596 return 1;
1597 }
1598
1599 int GetGuildId(lua_State* L, Player* player)
1600 {
1601 sEluna->Push(L, player->GetGuildId());
1602 return 1;
1603 }
1604
1605 int GetTeam(lua_State* L, Player* player)
1606 {
1607 sEluna->Push(L, player->GetTeamId());
1608 return 1;
1609 }
1610
1611 int GetItemCount(lua_State* L, Player* player)
1612 {
1613 int id = luaL_checknumber(L, 1);
1614 bool checkinBank = luaL_optbool(L, 2, false);
1615 sEluna->Push(L, player->GetItemCount(id, checkinBank));
1616 return 1;
1617 }
1618
1619 int GetLifetimeKills(lua_State* L, Player* player)
1620 {
1622 return 1;
1623 }
1624
1625 int GetPlayerIP(lua_State* L, Player* player)
1626 {
1627 sEluna->Push(L, player->GetSession()->GetRemoteAddress());
1628 return 1;
1629 }
1630
1631 int GetLevelPlayedTime(lua_State* L, Player* player)
1632 {
1633 sEluna->Push(L, player->GetLevelPlayedTime());
1634 return 1;
1635 }
1636
1637 int GetTotalPlayedTime(lua_State* L, Player* player)
1638 {
1639 sEluna->Push(L, player->GetTotalPlayedTime());
1640 return 1;
1641 }
1642
1643 int GetGuild(lua_State* L, Player* player)
1644 {
1645 sEluna->Push(L, sGuildMgr->GetGuildById(player->GetGuildId()));
1646 return 1;
1647 }
1648
1649 int GetGroup(lua_State* L, Player* player)
1650 {
1651 sEluna->Push(L, player->GetGroup());
1652 return 1;
1653 }
1654
1655 int SetArenaPoints(lua_State* L, Player* player)
1656 {
1657 // @TODO
1658 //uint32 arenaP = luaL_checkunsigned(L, 1);
1659 //player->SetArenaPoints(arenaP);
1660 return 0;
1661 }
1662
1663 int SetHonorPoints(lua_State* L, Player* player)
1664 {
1665 // @TODO
1666 //uint32 honorP = luaL_checkunsigned(L, 1);
1667 //player->SetHonorPoints(honorP);
1668 return 0;
1669 }
1670
1671 int SetLifetimeKills(lua_State* L, Player* player)
1672 {
1673 uint32 val = luaL_checkunsigned(L, 1);
1675 return 0;
1676 }
1677
1678 int SetCoinage(lua_State* L, Player* player)
1679 {
1680 uint32 amt = luaL_checkunsigned(L, 1);
1681 player->SetMoney(amt);
1682 return 0;
1683 }
1684
1685 int SetBindPoint(lua_State* L, Player* player)
1686 {
1687 float x = luaL_checknumber(L, 1);
1688 float y = luaL_checknumber(L, 2);
1689 float z = luaL_checknumber(L, 3);
1690 uint32 mapId = luaL_checkunsigned(L, 4);
1691 uint32 areaId = luaL_checkunsigned(L, 5);
1692
1693 WorldLocation loc(mapId, x, y, z);
1694 player->SetHomebind(loc, areaId);
1695 return 0;
1696 }
1697
1698 int SetKnownTitle(lua_State* L, Player* player)
1699 {
1700 uint32 id = luaL_checkunsigned(L, 1);
1701 CharTitlesEntry const* t = sCharTitlesStore.LookupEntry(id);
1702 if (t)
1703 player->SetTitle(t, false);
1704 return 0;
1705 }
1706
1707 int UnsetKnownTitle(lua_State* L, Player* player)
1708 {
1709 uint32 id = luaL_checkunsigned(L, 1);
1710 CharTitlesEntry const* t = sCharTitlesStore.LookupEntry(id);
1711 if (t)
1712 player->SetTitle(t, true);
1713 return 0;
1714 }
1715
1716 int AdvanceSkillsToMax(lua_State* L, Player* player)
1717 {
1719 return 0;
1720 }
1721
1722 int AdvanceAllSkills(lua_State* L, Player* player)
1723 {
1724 uint32 step = luaL_checkunsigned(L, 1);
1725
1726 if (!step)
1727 return 0;
1728
1732 };
1733 static const uint32 skillsSize = sizeof(skillsArray) / sizeof(*skillsArray);
1734
1735 for (int i = 0; i < skillsSize; ++i)
1736 {
1737 if (player->HasSkill(skillsArray[i]))
1738 player->UpdateSkill(skillsArray[i], step);
1739 }
1740 return 0;
1741 }
1742
1743 int AdvanceSkill(lua_State* L, Player* player)
1744 {
1745 uint32 _skillId = luaL_checkunsigned(L, 1);
1746 uint32 _step = luaL_checkunsigned(L, 2);
1747 if (_skillId && _step)
1748 {
1749 if (player->HasSkill(_skillId))
1750 player->UpdateSkill(_skillId, _step);
1751 }
1752 return 0;
1753 }
1754
1755 int IsInGroup(lua_State* L, Player* player)
1756 {
1757 sEluna->Push(L, (player->GetGroup() != NULL));
1758 return 1;
1759 }
1760
1761 int IsInGuild(lua_State* L, Player* player)
1762 {
1763 sEluna->Push(L, (player->GetGuildId() != 0));
1764 return 1;
1765 }
1766
1767 int IsGM(lua_State* L, Player* player)
1768 {
1769 sEluna->Push(L, player->IsGameMaster());
1770 return 1;
1771 }
1772
1773 int IsInArenaTeam(lua_State* L, Player* player)
1774 {
1775 // @TODO
1776 //uint32 type = luaL_checkunsigned(L, 1);
1777 //if (type < MAX_ARENA_SLOT && player->GetArenaTeamId(type))
1778 // sEluna->Push(L, true);
1779 //else
1780 // sEluna->Push(L, false);
1781 return 1;
1782 }
1783
1784 int IsHorde(lua_State* L, Player* player)
1785 {
1786 sEluna->Push(L, (player->GetTeam() == HORDE));
1787 return 1;
1788 }
1789
1790 int IsAlliance(lua_State* L, Player* player)
1791 {
1792 sEluna->Push(L, (player->GetTeam() == ALLIANCE));
1793 return 1;
1794 }
1795
1796 int HasTitle(lua_State* L, Player* player)
1797 {
1798 uint32 id = luaL_checkunsigned(L, 1);
1799 CharTitlesEntry const* titleInfo = sCharTitlesStore.LookupEntry(id);
1800 if (titleInfo)
1801 sEluna->Push(L, player->HasTitle(titleInfo));
1802 else
1803 sEluna->Push(L, false);
1804 return 1;
1805 }
1806
1807 int HasItem(lua_State* L, Player* player)
1808 {
1809 uint32 itemId = luaL_checkunsigned(L, 1);
1810 uint32 count = luaL_optunsigned(L, 2, 1);
1811 bool check_bank = luaL_optbool(L, 3, false);
1812 sEluna->Push(L, player->HasItemCount(itemId, count, check_bank));
1813 return 1;
1814 }
1815
1816 int Teleport(lua_State* L, Player* player)
1817 {
1818 uint32 mapId = luaL_checkunsigned(L, 1);
1819 float X = luaL_checknumber(L, 2);
1820 float Y = luaL_checknumber(L, 3);
1821 float Z = luaL_checknumber(L, 4);
1822 float O = luaL_checknumber(L, 5);
1823 if (player->IsInFlight())
1824 {
1825 player->GetMotionMaster()->MovementExpired();
1826 player->m_taxi.ClearTaxiDestinations();
1827 }
1828 sEluna->Push(L, player->TeleportTo(mapId, X, Y, Z, O));
1829 return 1;
1830 }
1831
1832 int AddLifetimeKills(lua_State* L, Player* player)
1833 {
1834 uint32 val = luaL_checkunsigned(L, 1);
1836 player->SetUInt32Value(PLAYER_FIELD_LIFETIME_HONORABLE_KILLS, currentKills + val);
1837 return 0;
1838 }
1839
1840 int AddItem(lua_State* L, Player* player)
1841 {
1842 uint32 itemId = luaL_checkunsigned(L, 1);
1843 uint32 itemCount = luaL_checkunsigned(L, 2);
1844
1845 uint32 noSpaceForCount = 0;
1846 ItemPosCountVec dest;
1847 InventoryResult msg = player->CanStoreNewItem(NULL_BAG, NULL_SLOT, dest, itemId, itemCount, &noSpaceForCount);
1848 if (msg != EQUIP_ERR_OK)
1849 itemCount -= noSpaceForCount;
1850
1851 if (itemCount == 0 || dest.empty())
1852 {
1854 ChatHandler(player->GetSession()).PSendSysMessage("You don't have any space in your bags.");
1855 return 0;
1856 }
1857
1858 Item* item = player->StoreNewItem(dest, itemId, true, Item::GenerateItemRandomPropertyId(itemId));
1859 if (item)
1860 player->SendNewItem(item, itemCount, true, false);
1861 else
1862 return 0;
1863 sEluna->Push(L, item);
1864 return 1;
1865 }
1866
1867 int RemoveItem(lua_State* L, Player* player)
1868 {
1869 Item* item = sEluna->CHECK_ITEM(L, 1);
1870 uint32 itemCount = luaL_checkunsigned(L, 2);
1871 if (!item)
1872 {
1873 uint32 itemId = luaL_checkunsigned(L, 1);
1874 player->DestroyItemCount(itemId, itemCount, true);
1875 }
1876 else
1877 player->DestroyItemCount(item, itemCount, true);
1878 return 0;
1879 }
1880
1881 int RemoveLifetimeKills(lua_State* L, Player* player)
1882 {
1883 uint32 val = luaL_checkunsigned(L, 1);
1885 if (val > currentKills)
1886 val = currentKills;
1887 player->SetUInt32Value(PLAYER_FIELD_LIFETIME_HONORABLE_KILLS, currentKills - val);
1888 return 0;
1889 }
1890
1891 int ResetSpellCooldown(lua_State* L, Player* player)
1892 {
1893 uint32 spellId = luaL_checkunsigned(L, 1);
1894 bool update = luaL_optbool(L, 2, true);
1895 player->RemoveSpellCooldown(spellId, update);
1896 return 0;
1897 }
1898
1899 int ResetTypeCooldowns(lua_State* L, Player* player)
1900 {
1901 //uint32 category = luaL_checkunsigned(L, 1);
1902 //bool update = luaL_optbool(L, 2, true);
1903 //player->RemoveSpellCategoryCooldown(category, update);
1904 return 0;
1905 }
1906
1907 int ResetAllCooldowns(lua_State* L, Player* player)
1908 {
1909 player->RemoveAllSpellCooldown();
1910 return 0;
1911 }
1912
1913 int SendClearCooldowns(lua_State* L, Player* player)
1914 {
1915 uint32 spellId = luaL_checkunsigned(L, 1);
1916 Unit* target = sEluna->CHECK_UNIT(L, 2);
1917 if (!target)
1918 return 0;
1919
1920 player->SendClearCooldown(spellId, target);
1921 return 0;
1922 }
1923
1924 int SendBroadcastMessage(lua_State* L, Player* player)
1925 {
1926 const char* message = luaL_checkstring(L, 1);
1927 if (std::string(message).length() > 0)
1928 ChatHandler(player->GetSession()).SendSysMessage(message);
1929 return 0;
1930 }
1931
1932 int SendAreaTriggerMessage(lua_State* L, Player* player)
1933 {
1934 // @TODO
1935 //const char* msg = luaL_checkstring(L, 1);
1936 //if (std::string(msg).length() > 0)
1937 // player->GetSession()->SendAreaTriggerMessage(msg);
1938 return 0;
1939 }
1940
1941 int SendNotification(lua_State* L, Player* player)
1942 {
1943 const char* msg = luaL_checkstring(L, 1);
1944 if (std::string(msg).length() > 0)
1945 player->GetSession()->SendNotification(msg);
1946 return 0;
1947 }
1948
1949 int SendPacketToPlayer(lua_State* L, Player* player)
1950 {
1951 WorldPacket* data = sEluna->CHECK_PACKET(L, 1);
1952 if (data)
1953 player->GetSession()->SendPacket(data);
1954 return 0;
1955 }
1956
1957 int SendPacket(lua_State* L, Player* player)
1958 {
1959 WorldPacket* data = sEluna->CHECK_PACKET(L, 1);
1960 if (data)
1961 player->SendMessageToSet(data, false);
1962 return 0;
1963 }
1964
1965 int SendPacketToGroup(lua_State* L, Player* player)
1966 {
1967 WorldPacket* data = sEluna->CHECK_PACKET(L, 1);
1968 bool ignorePlayersInBg = luaL_optbool(L, 2, false);
1969 if (data && player->GetGroup())
1970 player->GetGroup()->BroadcastPacket(data, ignorePlayersInBg, -1, player->GetGUID());
1971 return 0;
1972 }
1973
1974 int SendPacketToGuild(lua_State* L, Player* player)
1975 {
1976 WorldPacket* data = sEluna->CHECK_PACKET(L, 1);
1977 if (data && player->GetGuild())
1978 player->GetGuild()->BroadcastPacket(data);
1979 return 0;
1980 }
1981
1982 int SendPacketToRankedInGuild(lua_State* L, Player* player)
1983 {
1984 WorldPacket* data = sEluna->CHECK_PACKET(L, 1);
1985 uint8 ranked = luaL_checkunsigned(L, 2);
1986 if (data && player->GetGuild())
1987 player->GetGuild()->BroadcastPacketToRank(data, ranked);
1988 return 0;
1989 }
1990
1991 int SendVendorWindow(lua_State* L, Player* player)
1992 {
1993 Unit* sendTo = sEluna->CHECK_UNIT(L, 1);
1994 if (!sendTo)
1995 return 0;
1996 player->GetSession()->SendListInventory(sendTo->GetGUID());
1997 return 0;
1998 }
1999
2000 int KickPlayer(lua_State* L, Player* player)
2001 {
2002 player->GetSession()->KickPlayer();
2003 return 0;
2004 }
2005
2006 int ModifyMoney(lua_State* L, Player* player)
2007 {
2008 int32 amt = luaL_checkinteger(L, 1);
2009
2010 player->ModifyMoney(amt);
2011 return 1;
2012 }
2013
2014 int LearnSpell(lua_State* L, Player* player)
2015 {
2016 uint32 id = luaL_checkunsigned(L, 1);
2017 player->learnSpell(id, false);
2018 return 0;
2019 }
2020
2021 int ResurrectPlayer(lua_State* L, Player* player)
2022 {
2023 float percent = luaL_optnumber(L, 1, 100.0f);
2024 bool sickness = luaL_optbool(L, 2, false);
2025 player->ResurrectPlayer(percent, sickness);
2026 player->SpawnCorpseBones();
2027 return 0;
2028 }
2029
2030 int GetAccountId(lua_State* L, Player* player)
2031 {
2032 sEluna->Push(L, player->GetSession()->GetAccountId());
2033 return 1;
2034 }
2035
2036 int GetAccountName(lua_State* L, Player* player)
2037 {
2038 std::string accName;
2039 if (sAccountMgr->GetName(player->GetSession()->GetAccountId(), accName))
2040 sEluna->Push(L, accName);
2041 else
2042 return 0;
2043 return 1;
2044 }
2045
2046 int GetCorpse(lua_State* L, Player* player)
2047 {
2048 sEluna->Push(L, player->GetCorpse());
2049 return 1;
2050 }
2051
2052 int GossipMenuAddItem(lua_State* L, Player* player)
2053 {
2054 uint32 _icon = luaL_checkunsigned(L, 1);
2055 const char* msg = luaL_checkstring(L, 2);
2056 uint32 _sender = luaL_checkunsigned(L, 3);
2057 uint32 _intid = luaL_checkunsigned(L, 4);
2058 bool _code = luaL_optbool(L, 5, false);
2059 const char* _promptMsg = luaL_optstring(L, 6, "");
2060 uint32 _money = luaL_optunsigned(L, 7, 0);
2061 player->PlayerTalkClass->GetGossipMenu().AddMenuItem(-1, _icon, msg, _sender, _intid, _promptMsg, _money, _code);
2062 return 0;
2063 }
2064
2065 int GossipComplete(lua_State* L, Player* player)
2066 {
2068 return 0;
2069 }
2070
2071 int GossipSendMenu(lua_State* L, Player* player)
2072 {
2073 uint32 _npcText = luaL_checkunsigned(L, 1);
2074 WorldObject* sender = sEluna->CHECK_WORLDOBJECT(L, 2);
2075 if (sender)
2076 {
2077 if (sender->GetTypeId() == TYPEID_PLAYER)
2078 {
2079 uint32 menu_id = luaL_checkunsigned(L, 3);
2080 player->PlayerTalkClass->GetGossipMenu().SetMenuId(menu_id);
2081 }
2082 player->PlayerTalkClass->SendGossipMenu(_npcText, sender->GetGUID());
2083 }
2084 return 0;
2085 }
2086
2087 int GossipClearMenu(lua_State* L, Player* player)
2088 {
2089 player->PlayerTalkClass->ClearMenus();
2090 return 0;
2091 }
2092
2093 int PlaySoundToPlayer(lua_State* L, Player* player)
2094 {
2095 uint32 soundId = luaL_checkunsigned(L, 1);
2096 SoundEntriesEntry const* soundEntry = sSoundEntriesStore.LookupEntry(soundId);
2097 if (!soundEntry)
2098 return 0;
2099
2100 player->PlayDirectSound(soundId, player);
2101 return 0;
2102 }
2103
2104 int StartTaxi(lua_State* L, Player* player)
2105 {
2106 uint32 pathId = luaL_checkunsigned(L, 1);
2107
2108 LuaTaxiMgr::StartTaxi(player, pathId);
2109 return 0;
2110 }
2111
2112 int SetPlayerLock(lua_State* L, Player* player)
2113 {
2114 bool apply = luaL_optbool(L, 1, true);
2115
2116 if (apply)
2117 {
2119 player->SetClientControl(player, 0);
2120 }
2121 else
2122 {
2124 player->SetClientControl(player, 1);
2125 }
2126 return 0;
2127 }
2128
2129 int GossipSendPOI(lua_State* L, Player* player)
2130 {
2131 float x = luaL_checknumber(L, 1);
2132 float y = luaL_checknumber(L, 2);
2133 uint32 icon = luaL_checkunsigned(L, 3);
2134 uint32 flags = luaL_checkunsigned(L, 4);
2135 uint32 data = luaL_checkunsigned(L, 5);
2136 std::string iconText = luaL_checkstring(L, 6);
2137
2138 WorldPacket packet(SMSG_GOSSIP_POI, 4 + 4 + 4 + 4 + 4 + 10);
2139 packet << flags;
2140 packet << x;
2141 packet << y;
2142 packet << icon;
2143 packet << data;
2144 packet << iconText;
2145 player->GetSession()->SendPacket(&packet);
2146 return 0;
2147 }
2148
2149 int GossipAddQuests(lua_State* L, Player* player)
2150 {
2151 WorldObject* source = sEluna->CHECK_WORLDOBJECT(L, 1);
2152 if (!source)
2153 return 0;
2154
2155 if (source->GetTypeId() == TYPEID_UNIT)
2156 {
2158 player->PrepareQuestMenu(source->GetGUID());
2159 }
2160 else if (source->GetTypeId() == TYPEID_GAMEOBJECT)
2161 {
2163 player->PrepareQuestMenu(source->GetGUID());
2164 }
2165 return 0;
2166 }
2167
2168 int SendQuestTemplate(lua_State* L, Player* player)
2169 {
2170 uint32 questId = luaL_checkunsigned(L, 1);
2171 bool activeAccept = luaL_optbool(L, 2, true);
2172
2173 Quest const* quest = sObjectMgr->GetQuestTemplate(questId);
2174 if (!quest)
2175 return 0;
2176
2177 player->PlayerTalkClass->SendQuestGiverQuestDetails(quest, player->GetGUID(), activeAccept);
2178 return 0;
2179 }
2180
2181 int SpawnBones(lua_State* L, Player* player)
2182 {
2183 player->SpawnCorpseBones();
2184 return 0;
2185 }
2186
2187 int RemovedInsignia(lua_State* L, Player* player)
2188 {
2189 Player* looter = sEluna->CHECK_PLAYER(L, 1);
2190 if (!looter)
2191 return 0;
2192 player->RemovedInsignia(looter);
2193 return 0;
2194 }
2195
2196 int GetDbLocaleIndex(lua_State* L, Player* player)
2197 {
2198 sEluna->Push(L, player->GetSession()->GetSessionDbLocaleIndex());
2199 return 1;
2200 }
2201
2202 int GetDbcLocale(lua_State* L, Player* player)
2203 {
2204 sEluna->Push(L, player->GetSession()->GetSessionDbcLocale());
2205 return 1;
2206 }
2207
2208 int CanUseItem(lua_State* L, Player* player)
2209 {
2210 Item* item = sEluna->CHECK_ITEM(L, 1);
2211 if (item)
2212 sEluna->Push(L, player->CanUseItem(item));
2213 else
2214 {
2215 uint32 entry = luaL_checkunsigned(L, 1);
2216 const ItemTemplate* temp = sObjectMgr->GetItemTemplate(entry);
2217 if (temp)
2218 sEluna->Push(L, player->CanUseItem(temp));
2219 else
2221 }
2222 return 1;
2223 }
2224
2225 int HasSpellCooldown(lua_State* L, Player* player)
2226 {
2227 uint32 spellId = luaL_checkunsigned(L, 1);
2228
2229 sEluna->Push(L, player->HasSpellCooldown(spellId));
2230 return 1;
2231 }
2232
2233 int GetShieldBlockValue(lua_State* L, Player* player)
2234 {
2235 // @TODO
2236 //sEluna->Push(L, player->GetShieldBlockValue());
2237 return 1;
2238 }
2239
2240 int IsInWater(lua_State* L, Player* player)
2241 {
2242 sEluna->Push(L, player->IsInWater());
2243 return 1;
2244 }
2245
2246 int SetSheath(lua_State* L, Player* player)
2247 {
2248 uint32 sheathed = luaL_checkunsigned(L, 1);
2249 if (sheathed >= MAX_SHEATH_STATE)
2250 return 0;
2251
2252 player->SetSheath((SheathState)sheathed);
2253 return 0;
2254 }
2255
2256 int CanFly(lua_State* L, Player* player)
2257 {
2258 sEluna->Push(L, player->CanFly());
2259 return 1;
2260 }
2261};
#define sAccountMgr
Definition AccountMgr.h:85
@ IN_MILLISECONDS
Definition Common.h:125
@ CURRENCY_TYPE_HONOR_POINTS
Definition DBCEnums.h:576
@ ACHIEVEMENT_CRITERIA_TYPE_RECEIVE_EPIC_ITEM
Definition DBCEnums.h:252
DifficultyID
Definition DBCEnums.h:330
@ DIFFICULTY_FLEX
Definition DBCEnums.h:343
DBCStorage< CharTitlesEntry > sCharTitlesStore(CharTitlesEntryfmt)
DBCStorage< FactionEntry > sFactionStore(FactionEntryfmt)
DBCStorage< SoundEntriesEntry > sSoundEntriesStore(SoundEntriesfmt)
std::int32_t int32
Definition Define.h:73
std::uint8_t uint8
Definition Define.h:79
std::uint32_t uint32
Definition Define.h:77
std::int8_t int8
Definition Define.h:75
std::uint64_t uint64
Definition Define.h:76
std::uint16_t uint16
Definition Define.h:78
static constexpr TypeID TYPEID_PLAYER
static constexpr TypeID TYPEID_UNIT
static constexpr TypeID TYPEID_GAMEOBJECT
#define sGuildMgr
Definition GuildMgr.h:53
InventoryResult
Definition Item.h:27
@ EQUIP_ERR_ITEM_NOT_FOUND
Definition Item.h:51
@ EQUIP_ERR_OK
Definition Item.h:28
#define sEluna
Definition LuaEngine.h:710
uint32 GUID_LOPART(uint64 x)
#define sObjectMgr
Definition ObjectMgr.h:1617
PetType
Definition PetDefines.h:10
@ MAX_PET_TYPE
Definition PetDefines.h:13
std::vector< ItemPosCount > ItemPosCountVec
Definition Player.h:777
@ PLAYER_FLAGS_NO_XP_GAIN
Definition Player.h:562
@ INVENTORY_SLOT_BAG_END
Definition Player.h:714
EquipmentSlots
Definition Player.h:687
@ EQUIPMENT_SLOT_END
Definition Player.h:708
@ EQUIPMENT_SLOT_START
Definition Player.h:688
AtLoginFlags
Definition Player.h:615
#define MAX_PLAYER_SUMMON_DELAY
Definition Player.h:926
#define INVENTORY_SLOT_BAG_0
Definition Player.h:684
QuestStatus
Definition QuestDef.h:85
@ MAX_QUEST_STATUS
Definition QuestDef.h:93
#define sScriptMgr
Definition ScriptMgr.h:764
@ GAMEOBJECT_TYPE_QUESTGIVER
Powers
@ MAX_POWERS
#define MAX_TALENT_SPECS
Language
Gender
@ GENDER_MALE
@ GENDER_FEMALE
@ ALLIANCE
@ HORDE
@ SKILL_BOWS
@ SKILL_INSCRIPTION
@ SKILL_DEFENSE
@ SKILL_MACES
@ SKILL_WANDS
@ SKILL_BLACKSMITHING
@ SKILL_GUNS
@ SKILL_LEATHERWORKING
@ SKILL_SHIELD
@ SKILL_CROSSBOWS
@ SKILL_TAILORING
@ SKILL_MINING
@ SKILL_FISHING
@ SKILL_ENGINEERING
@ SKILL_SWORDS
@ SKILL_DAGGERS
@ SKILL_2H_AXES
@ SKILL_UNARMED
@ SKILL_POLEARMS
@ SKILL_SKINNING
@ SKILL_ALCHEMY
@ SKILL_2H_SWORDS
@ SKILL_2H_MACES
@ SKILL_AXES
@ SKILL_STAVES
@ SKILL_ENCHANTING
@ SKILL_JEWELCRAFTING
@ SKILL_HERBALISM
@ UNIT_NPC_FLAG_QUESTGIVER
Definition Unit.h:688
@ NULL_BAG
Definition Unit.h:336
@ NULL_SLOT
Definition Unit.h:337
SheathState
Definition Unit.h:244
#define MAX_SHEATH_STATE
Definition Unit.h:250
@ UNIT_FLAG_PACIFIED
Definition Unit.h:642
@ UNIT_FLAG_SILENCED
Definition Unit.h:638
@ UNIT_FIELD_NPC_FLAGS
@ UNIT_FIELD_FLAGS
@ PLAYER_FIELD_XP
@ PLAYER_FIELD_NEXT_LEVEL_XP
@ PLAYER_FIELD_LIFETIME_HONORABLE_KILLS
@ PLAYER_FIELD_PLAYER_FLAGS
static AuctionHouseEntry const * GetAuctionHouseEntry(uint32 factionTemplateId)
void PSendSysMessage(const char *format,...) ATTR_PRINTF(2
Definition Chat.cpp:221
virtual void SendSysMessage(const char *str)
Definition Chat.cpp:153
GameObject * GetNearbyGameObject()
Definition Chat.cpp:985
bool hasLootRecipient() const
Definition Creature.h:549
GameobjectTypes GetGoType() const
Definition GameObject.h:719
void SetMenuId(uint32 menu_id)
Definition GossipDef.h:159
void AddMenuItem(int32 menuItemId, uint8 icon, std::string const &message, uint32 sender, uint32 action, std::string const &boxMessage, uint32 boxMoney, bool coded=false)
Definition GossipDef.cpp:14
void BroadcastPacket(WorldPacket *packet, bool ignorePlayersInBGRaid, int group=-1, uint64 ignore=0)
Definition Group.cpp:1907
Definition Guild.h:324
void BroadcastPacket(WorldPacket *packet) const
Definition Guild.cpp:2766
void BroadcastPacketToRank(WorldPacket *packet, uint8 rankId) const
Definition Guild.cpp:2758
Definition Item.h:202
uint8 GetSlot() const
Definition Item.h:265
static Item * CreateItem(uint32 itemEntry, uint32 count, Player const *player=NULL)
Definition Item.cpp:1012
uint8 GetBagSlot() const
Definition Item.cpp:734
static int32 GenerateItemRandomPropertyId(uint32 item_id)
Definition Item.cpp:575
static void StartTaxi(Player *player, uint32 pathid)
static bool IsValidMapCoord(uint32 mapid, float x, float y)
Definition MapManager.h:75
void MovementExpired(bool reset=true)
uint64 GetGUID() const
Definition Object.h:119
uint32 GetUInt32Value(uint16 index) const
Definition Object.cpp:325
TypeID GetTypeId() const
Definition Object.h:131
void SetFlag(uint16 index, uint32 newFlag)
Definition Object.cpp:1261
void RemoveFlag(uint16 index, uint32 oldFlag)
Definition Object.cpp:1280
GameObject * ToGameObject()
Definition Object.h:213
Creature * ToCreature()
Definition Object.h:207
bool HasFlag(uint16 index, uint32 flag) const
Definition Object.cpp:1309
void SetUInt32Value(uint16 index, uint32 value)
Definition Object.cpp:1038
void setFactionForRace(uint8 race)
Definition Player.cpp:7090
bool CanSpeak() const
Definition Player.cpp:15397
int8 GetComboPoints() const
Definition Player.h:1982
void Yell(std::string const &text, const Language language)
Handles yelled message in regular chat based on declared language and in config pre-defined Range.
Definition Player.cpp:15807
void UnbindInstance(uint32 mapid, DifficultyID difficulty, bool unload=false)
Definition Player.cpp:13904
uint32 GetTeam() const
Definition Player.h:2527
bool HasTitle(uint32 bitIndex)
Definition Player.cpp:20424
void RewardQuest(Quest const *quest, uint32 reward, Object *questGiver, bool announce=true)
bool IsKnowHowFlyIn(uint32 mapid, uint32 zone) const
Definition Player.cpp:20800
int32 GetQuestLevel(Quest const *quest) const
Definition Player.h:1741
uint8 GetChatTag() const
Definition Player.cpp:2074
float GetHealthBonusFromStamina()
void Whisper(std::string const &text, const Language language, uint64 receiver)
Handles whispers from Addons and players based on sender, receiver's guid and language.
Definition Player.cpp:15840
void TalkedToCreature(uint32 entry, uint64 guid)
bool IsInSameRaidWith(Player const *p) const
Definition Player.cpp:3030
bool ModifyMoney(int64 amount, bool sendError=true)
Definition Player.cpp:18342
InventoryResult CanEquipItem(uint8 slot, uint16 &dest, Item *pItem, bool swap, bool not_loading=true) const
uint8 GetRank() const
Definition Player.h:2275
bool isGMVisible() const
Definition Player.h:1390
void TextEmote(std::string const &text)
Outputs an universal text which is supposed to be an action.
Definition Player.cpp:15817
BattlegroundTypeId GetBattlegroundTypeId() const
Definition Player.h:2701
uint32 GetGuildId() const
Definition Player.h:2291
InventoryResult CanEquipNewItem(uint8 slot, uint16 &dest, uint32 item, bool swap) const
void SetRestTime(uint32 v)
Definition Player.h:2784
void GiveLevel(uint8 level)
Definition Player.cpp:3166
void IncompleteQuest(uint32 quest_id)
void Regenerate(Powers power)
Definition Player.cpp:2559
bool isUsingLfg()
Definition Player.cpp:20097
bool CanParry() const
Definition Player.h:2611
void SetGameMaster(bool on)
Definition Player.cpp:2944
void KillPlayer()
Definition Player.cpp:5284
uint32 GetTotalPlayedTime() const
Definition Player.h:1424
uint8 GetDrunkValue() const
Definition Player.h:2594
uint16 GetSkillValue(uint32 skill) const
Definition Player.cpp:6563
void SetAcceptWhispers(bool on)
Definition Player.h:1365
void AddComboPoints(Unit *target, int8 count, Spell *spell=NULL)
Definition Player.cpp:18439
bool GetQuestRewardStatus(uint32 quest_id) const
uint32 GetRestTime() const
Definition Player.h:2780
void UpdateSkillsToMaxSkillsForLevel()
Definition Player.cpp:6346
Item * GetItemByEntry(uint32 entry) const
void KilledMonsterCredit(uint32 entry, uint64 guid=0)
bool UpdateSkill(uint32 skill_id, uint32 step)
Definition Player.cpp:6112
bool CanTameExoticPets() const
Definition Player.h:2624
bool CanFly() const override
Definition Player.h:3166
void ClearComboPoints()
Definition Player.cpp:18488
bool HasItemCount(uint32 item, uint32 count=1, bool inBankAlso=false) const
bool CanBlock() const
Definition Player.h:2613
void SetRestBonus(float rest_bonus_new)
Definition Player.cpp:16519
void SendTalentsInfoData()
Definition Player.cpp:21306
void DurabilityLossAll(double percent, bool inventory)
Definition Player.cpp:5390
bool HasQuestForItem(uint32 itemId) const
void SetQuestStatus(uint32 quest_id, QuestStatus status)
bool InBattleground() const
Definition Player.h:2692
uint32 GetXPRestBonus(uint32 xp)
Definition Player.cpp:10370
void DurabilityPointLossForEquipSlot(EquipmentSlots slot)
Definition Player.cpp:5483
bool HasSpellCooldown(uint32 spell_id) const
Definition Player.cpp:17498
bool inRandomLfgDungeon()
Definition Player.cpp:20108
bool IsInWater() const override
Definition Player.h:1319
void SetDrunkValue(uint8 newDrunkValue, uint32 itemId=0)
Definition Player.cpp:1357
void LeaveBattleground(bool teleportToEntryPoint=true)
Definition Player.cpp:17984
void GroupEventHappens(uint32 questId, WorldObject const *pEventObject)
bool HasPendingBind() const
Definition Player.h:2938
void KillCreditGO(uint32 entry, uint64 guid=0)
bool CanTitanGrip() const
Definition Player.h:2616
Guild * GetGuild()
Definition Player.cpp:22662
void InitDisplayIds()
Definition Player.cpp:16925
uint16 GetReqKillOrCastCurrentCount(uint32 quest_id, int32 entry)
void RemoveRewardedQuest(uint32 quest_id)
void RegenerateHealth()
Definition Player.cpp:2730
void PrepareQuestMenu(uint64 guid)
uint16 GetPureSkillValue(uint32 skill) const
Definition Player.cpp:6631
bool HasAchieved(uint32 achievementId) const
Definition Player.cpp:21013
void SetAtLoginFlag(AtLoginFlags f)
Definition Player.h:2880
void CompleteQuest(uint32 quest_id)
bool HasTalent(uint32 spell_id, uint8 spec) const
Definition Player.cpp:4681
int16 GetSkillTempBonusValue(uint32 skill) const
Definition Player.cpp:6661
int16 GetSkillPermBonusValue(uint32 skill) const
Definition Player.cpp:6646
WorldSession * GetSession() const
Definition Player.h:2417
Item * GetItemByPos(uint16 pos) const
bool HasSkill(uint32 skill) const
Definition Player.cpp:6542
void ResetPetTalents()
Definition Player.cpp:10429
bool GetsRecruitAFriendBonus(bool forXP)
Definition Player.cpp:19716
DifficultyID GetRaidDifficulty() const
Definition Player.h:2316
uint32 GetInGameTime() const
Definition Player.h:1847
uint16 GetMaxSkillValue(uint32 skill) const
Definition Player.cpp:6581
void Say(std::string const &text, const Language language)
Handles said message in regular chat based on declared language and in config pre-defined Range.
Definition Player.cpp:15797
uint32 GetItemCount(uint32 item, bool inBankAlso=false, Item *skipItem=NULL) const
uint16 GetBaseSkillValue(uint32 skill) const
Definition Player.cpp:6614
TeamId GetTeamId() const
Definition Player.h:2531
void SetGMChat(bool on)
Definition Player.h:1378
void KilledPlayerCredit()
uint16 GetPureMaxSkillValue(uint32 skill) const
Definition Player.cpp:6599
bool HasQuestForGO(int32 goId) const
Definition Player.cpp:19375
uint32 DurabilityRepairAll(bool cost, float discountMod, bool guildBank)
Definition Player.cpp:5489
bool CanShareQuest(uint32 questId) const
uint32 GetCurrency(uint32 id, bool usePrecision) const
return count of currency witch has plr
Definition Player.cpp:7648
void SetSkill(uint16 id, uint16 step, uint16 currVal, uint16 maxVal)
Definition Player.cpp:6377
bool InBattlegroundQueue() const
Definition Player.cpp:19220
Corpse * GetCorpse() const
Definition Player.cpp:5385
void DurabilityLoss(Item *item, double percent)
Definition Player.cpp:5413
void SetClientControl(Unit *target, uint8 allowMove)
Definition Player.cpp:19853
bool IsActiveQuest(uint32 quest_id) const
Group * GetGroup()
Definition Player.h:2972
bool isGMChat() const
Definition Player.h:1374
bool IsGroupVisibleFor(Player const *p) const
Definition Player.cpp:3013
void SpawnCorpseBones()
Definition Player.cpp:5378
bool IsGameMaster() const
Definition Player.h:1369
void UpdateAchievementCriteria(AchievementCriteriaTypes type, uint64 miscValue1=0, uint64 miscValue2=0, uint64 miscValue3=0, Unit *unit=NULL)
Definition Player.cpp:21033
InventoryResult CanStoreNewItem(uint8 bag, uint8 slot, ItemPosCountVec &dest, uint32 item, uint32 count, uint32 *no_space_count=NULL) const
Item * EquipItem(uint16 pos, Item *pItem, bool update)
void SetPvPDeath(bool on)
Definition Player.h:1395
void removeSpell(uint32 spell_id, bool disabled=false, bool learn_low_rank=true)
Definition Player.cpp:4073
void SendClearCooldown(uint32 spell_id, Unit *target)
Definition Player.cpp:21596
bool TeleportTo(uint32 mapid, float x, float y, float z, float orientation, uint32 options=0)
Definition Player.cpp:2090
void DurabilityPointsLossAll(int32 points, bool inventory)
Definition Player.cpp:5433
bool IsVisibleGloballyFor(Player const *player) const
Definition Player.cpp:18107
Pet * SummonPet(uint32 entry, float x, float y, float z, float ang, PetType petType, uint32 despwtime)
Definition Player.cpp:22668
PlayerTaxi m_taxi
Definition Player.h:1351
void SetTitle(CharTitlesEntry const *title, bool lost=false)
Definition Player.cpp:20434
void SetSummonPoint(uint32 mapid, float x, float y, float z)
Definition Player.cpp:19456
void learnSpell(uint32 spell_id, bool dependent)
Definition Player.cpp:4021
uint32 DurabilityRepair(uint16 pos, bool cost, float discountMod, bool guildBank)
Definition Player.cpp:5505
uint8 GetActiveSpec() const
Definition Player.h:2077
void SetRank(uint8 rankId)
Definition Player.h:2271
void ToggleAFK()
Definition Player.cpp:2060
static void RemoveFromGroup(Group *group, uint64 guid, RemoveMethod method=GROUP_REMOVEMETHOD_DEFAULT, uint64 kicker=0, const char *reason=NULL)
Definition Player.cpp:3059
bool isDND() const
Definition Player.h:1337
void DestroyItemCount(uint32 item, uint32 count, bool update, bool unequip_check=false)
void AreaExploredOrEventHappens(uint32 questId)
void SetGMVisible(bool on)
Definition Player.cpp:2995
bool isHonorOrXPTarget(Unit const *victim)
Definition Player.cpp:19697
void SetSheath(SheathState sheathed) override
Definition Player.cpp:10471
QuestStatus GetQuestStatus(uint32 quest_id) const
void SaveToDB(bool create=false)
Definition Player.cpp:14300
bool isRested() const
Definition Player.h:2775
uint32 GetBattlegroundId() const
Definition Player.h:2697
uint64 GetMoney() const
Definition Player.h:1945
void SendMessageToSet(WorldPacket *data, bool self) override
Definition Player.h:2443
uint32 GetSpellCooldownDelay(uint32 spell_id) const
Definition Player.cpp:17504
void SendLogXPGain(uint32 GivenXP, Unit *victim, uint32 BonusXP, bool recruitAFriend=false, float group_rate=1.0f)
Definition Player.cpp:3068
ReputationRank GetReputationRank(uint32 faction_id) const
Definition Player.cpp:7098
void SetHomebind(WorldLocation const &loc, uint32 areaId)
Definition Player.cpp:12141
void FailQuest(uint32 quest_id)
Player * GetSelectedPlayer() const
Definition Player.cpp:18392
Unit * GetSelectedUnit() const
Definition Player.cpp:18385
void RemoveActiveQuest(uint32 quest_id)
void ItemAddedQuestCheck(uint32 entry, uint32 count)
Player * GetNextRandomRaidMember(float radius)
Definition Player.cpp:20024
void RemoveAllSpellCooldown()
Definition Player.cpp:4350
bool HasAtLoginFlag(AtLoginFlags f) const
Definition Player.h:2876
uint8 GetSpecsCount() const
Definition Player.h:2079
Item * StoreNewItem(ItemPosCountVec const &pos, uint32 item, bool update, int32 randomPropertyId=0, AllowedLooterSet const &allowedLooters=AllowedLooterSet())
void RemoveItem(uint8 bag, uint8 slot, bool update)
bool InArena() const
Definition Player.cpp:19310
bool HasSpell(uint32 spell) const override
Definition Player.cpp:4674
uint8 GetSubGroup() const
Definition Player.h:2985
bool isAFK() const
Definition Player.h:1333
void RemoveSpellCooldown(uint32 spell_id, bool update=false)
Definition Player.cpp:4284
bool isAcceptWhispers() const
Definition Player.h:1361
void CreateCorpse()
Definition Player.cpp:5311
void DurabilityPointsLoss(Item *item, int32 points)
Definition Player.cpp:5456
void SetTaxiCheater(bool on)
Definition Player.h:1386
uint32 GetChampioningFaction() const
Definition Player.h:3122
float GetRestBonus() const
Definition Player.h:1434
uint32 GetLevelPlayedTime() const
Definition Player.h:1425
DifficultyID GetDungeonDifficulty() const
Definition Player.h:2315
void ToggleDND()
Definition Player.cpp:2069
uint32 GetGossipTextId(uint32 menuId, WorldObject *source)
Definition Player.cpp:12014
uint64 GetComboTarget() const
Definition Player.h:1983
void RemovedInsignia(Player *looterPlr)
Definition Player.cpp:9282
bool IsOutdoorPvPActive()
Definition Player.cpp:8272
Group * GetGroupInvite()
Definition Player.h:2964
void SendNewItem(Item *item, uint32 count, bool received, bool created, bool broadcast=false)
Definition Player.cpp:11604
void SetMoney(uint64 value)
Definition Player.cpp:18373
void RegenerateAll()
Definition Player.cpp:2479
bool IsImmuneToEnvironmentalDamage()
Definition Player.cpp:1109
Group * GetOriginalGroup()
Definition Player.h:3015
bool IsInSameGroupWith(Player const *p) const
Definition Player.cpp:3023
bool isTaxiCheater() const
Definition Player.h:1382
ReputationMgr & GetReputationMgr()
Definition Player.h:2555
uint8 GetOriginalSubGroup() const
Definition Player.h:3023
bool IsQuestRewarded(uint32 quest_id) const
Definition Player.cpp:18380
PlayerMenu * PlayerTalkClass
Definition Player.h:2680
bool AddTalent(uint32 spellId, uint8 spec, bool learning)
Definition Player.cpp:3580
void ResetAchievements()
Definition Player.cpp:20998
InventoryResult CanUseItem(Item *pItem, bool not_loading=true) const
InstancePlayerBind * BindToInstance(InstanceSave *save, bool permanent, bool load=false)
Definition Player.cpp:13932
void ResurrectPlayer(float restore_percent, bool applySickness=false)
Definition Player.cpp:5203
void SendGossipMenu(uint32 titleTextId, uint64 objectGUID) const
void ClearMenus()
void SendQuestGiverQuestDetails(Quest const *quest, uint64 npcGUID, bool activateAccept, bool displayPopup=false) const
GossipMenu & GetGossipMenu()
Definition GossipDef.h:248
void SendCloseGossip() const
void ClearTaxiDestinations()
Definition PlayerTaxi.h:48
int32 GetReputation(uint32 faction_id) const
bool SetReputation(FactionEntry const *factionEntry, int32 standing)
Definition Unit.h:1367
uint32 getFaction() const
Definition Unit.h:1695
MotionMaster * GetMotionMaster()
Definition Unit.h:2605
bool HasAura(uint32 spellId, uint64 casterGUID=0, uint64 itemCasterGUID=0, uint32 reqEffMask=0) const
bool IsInFlight() const
Definition Unit.h:1891
void SetGender(uint8 gender)
Definition Unit.h:1568
uint8 getLevel() const
Definition Unit.h:1528
bool IsFalling() const
Definition Unit.cpp:8388
std::string const & GetName() const
Definition Object.h:664
uint32 GetZoneId() const
Definition Object.cpp:1597
void PlayDirectSound(uint32 sound_id, Player *target=NULL)
Definition Object.cpp:3442
void LogoutPlayer(bool save)
Log the player out
void KickPlayer()
Kick a player out of the World.
void SendTrainerList(uint64 guid)
void SendNotification(const char *format,...) ATTR_PRINTF(2
AccountTypes GetSecurity() const
LocaleConstant GetSessionDbLocaleIndex() const
void SendTaxiMenu(Creature *unit)
LocaleConstant GetSessionDbcLocale() const
uint32 GetRecruiterId() const
bool IsARecruiter() const
void SendSpiritResurrect()
void SendTabardVendorActivate(uint64 guid)
void SendPacket(WorldPacket const *packet, bool forced=false)
Send a packet to the client.
uint32 GetAccountId() const
void SendShowBank(ObjectGuid guid)
uint32 GetLatency() const
std::string const & GetRemoteAddress()
void SendListInventory(uint64 guid)
@ SMSG_AUCTION_HELLO
Definition Opcodes.h:526
@ SMSG_GOSSIP_POI
Definition Opcodes.h:670
@ SMSG_SUMMON_REQUEST
Definition Opcodes.h:1021
#define sWorld
Definition World.h:910
@ CONFIG_MAX_PLAYER_LEVEL
Definition World.h:224
int Whisper(lua_State *L, Player *player)
int GetPlayerIP(lua_State *L, Player *player)
int GetGuild(lua_State *L, Player *player)
int SetLifetimeKills(lua_State *L, Player *player)
int GetSubGroup(lua_State *L, Player *player)
int GetTotalPlayedTime(lua_State *L, Player *player)
int GetFreeTalentPoints(lua_State *L, Player *player)
int SetArenaPoints(lua_State *L, Player *player)
int HasPendingBind(lua_State *L, Player *player)
int GetGossipTextId(lua_State *L, Player *player)
int IsVisibleForPlayer(lua_State *L, Player *player)
int ModifyMoney(lua_State *L, Player *player)
int GiveXP(lua_State *L, Player *player)
int SummonPlayer(lua_State *L, Player *player)
int GetBattlegroundId(lua_State *L, Player *player)
int CanTitanGrip(lua_State *L, Player *player)
int SendGuildInvite(lua_State *L, Player *player)
int GetSkillTempBonusValue(lua_State *L, Player *player)
int CanFly(lua_State *L, Player *player)
int SendTrainerList(lua_State *L, Player *player)
int DurabilityPointsLossAll(lua_State *L, Player *player)
int CanParry(lua_State *L, Player *player)
int InBattlegroundQueue(lua_State *L, Player *player)
int HasQuestForItem(lua_State *L, Player *player)
int SendPacketToGroup(lua_State *L, Player *player)
int KilledMonsterCredit(lua_State *L, Player *player)
int HasItem(lua_State *L, Player *player)
int DurabilityRepair(lua_State *L, Player *player)
int SendPacket(lua_State *L, Player *player)
int SendAuctionMenu(lua_State *L, Player *player)
int ToggleAFK(lua_State *L, Player *player)
int DurabilityPointLossForEquipSlot(lua_State *L, Player *player)
int LogoutPlayer(lua_State *L, Player *player)
int GetRestBonus(lua_State *L, Player *player)
int SendAreaTriggerMessage(lua_State *L, Player *player)
int GainSpellComboPoints(lua_State *L, Player *player)
int SummonPet(lua_State *L, Player *player)
int SetRestFlag(lua_State *L, Player *player)
int AddTalent(lua_State *L, Player *player)
int ResurrectPlayer(lua_State *L, Player *player)
int ResetAllCooldowns(lua_State *L, Player *player)
int GetBaseSkillValue(lua_State *L, Player *player)
int HasTalent(lua_State *L, Player *player)
int CanSpeak(lua_State *L, Player *player)
int SetGameMaster(lua_State *L, Player *player)
int GetGuildName(lua_State *L, Player *player)
int GetOriginalGroup(lua_State *L, Player *player)
int GetSelection(lua_State *L, Player *player)
int GetPureSkillValue(lua_State *L, Player *player)
int SetPvPDeath(lua_State *L, Player *player)
int IsFalling(lua_State *L, Player *player)
int GetSkillPermBonusValue(lua_State *L, Player *player)
int RemoveLifetimeKills(lua_State *L, Player *player)
int GetItemCount(lua_State *L, Player *player)
int CanBlock(lua_State *L, Player *player)
int GossipClearMenu(lua_State *L, Player *player)
int SetMovement(lua_State *L, Player *player)
int IsRested(lua_State *L, Player *player)
int GetEquippedItemBySlot(lua_State *L, Player *player)
int GetGroup(lua_State *L, Player *player)
int Regenerate(lua_State *L, Player *player)
int HasSpellCooldown(lua_State *L, Player *player)
int SendShowBank(lua_State *L, Player *player)
int IsHorde(lua_State *L, Player *player)
int GetAccountName(lua_State *L, Player *player)
int SendTaxiMenu(lua_State *L, Player *player)
int GetNextRandomRaidMember(lua_State *L, Player *player)
int GetLifetimeKills(lua_State *L, Player *player)
int ClearComboPoints(lua_State *L, Player *player)
int GetSpellCooldownDelay(lua_State *L, Player *player)
int IsInGroup(lua_State *L, Player *player)
int SetHonorPoints(lua_State *L, Player *player)
int ResetTypeCooldowns(lua_State *L, Player *player)
int SendBroadcastMessage(lua_State *L, Player *player)
int GetRestTime(lua_State *L, Player *player)
int GetSelectedUnit(lua_State *L, Player *player)
int CanFlyInZone(lua_State *L, Player *player)
int GetDifficulty(lua_State *L, Player *player)
int SendNotification(lua_State *L, Player *player)
int IsGM(lua_State *L, Player *player)
int ResetTalents(lua_State *L, Player *player)
int SetRestTime(lua_State *L, Player *player)
int SendQuestTemplate(lua_State *L, Player *player)
int GetQuestRewardStatus(lua_State *L, Player *player)
int BindToInstance(lua_State *L, Player *player)
int ResetAchievements(lua_State *L, Player *player)
int Yell(lua_State *L, Player *player)
int InRandomLfgDungeon(lua_State *L, Player *player)
int SetDrunkValue(lua_State *L, Player *player)
int SetFreeTalentPoints(lua_State *L, Player *player)
int IsDND(lua_State *L, Player *player)
int SetSheath(lua_State *L, Player *player)
int IsTaxiCheater(lua_State *L, Player *player)
int IsARecruiter(lua_State *L, Player *player)
int IsInSameRaidWith(lua_State *L, Player *player)
int SetPlayerLock(lua_State *L, Player *player)
int GetNearbyGameObject(lua_State *L, Player *player)
int RemoveFromBattlegroundOrBattlefieldRaid(lua_State *L, Player *player)
int GetBattlegroundTypeId(lua_State *L, Player *player)
int HasAchieved(lua_State *L, Player *player)
int GetHealthBonusFromStamina(lua_State *L, Player *player)
int SetAtLoginFlag(lua_State *L, Player *player)
int GetSkillValue(lua_State *L, Player *player)
int AddItem(lua_State *L, Player *player)
int HasReceivedQuestReward(lua_State *L, Player *player)
int HasSpell(lua_State *L, Player *player)
int RemoveRewardedQuest(lua_State *L, Player *player)
int HasRestFlag(lua_State *L, Player *player)
int GetLevelPlayedTime(lua_State *L, Player *player)
int IsActiveQuest(lua_State *L, Player *player)
int IsAcceptingWhispers(lua_State *L, Player *player)
int RewardQuest(lua_State *L, Player *player)
int StartTaxi(lua_State *L, Player *player)
int RegenerateAll(lua_State *L, Player *player)
int SetGMVisible(lua_State *L, Player *player)
int IsOutdoorPvPActive(lua_State *L, Player *player)
int GetOriginalSubGroup(lua_State *L, Player *player)
int CanShareQuest(lua_State *L, Player *player)
int IsGMVisible(lua_State *L, Player *player)
int AdvanceAllSkills(lua_State *L, Player *player)
int DurabilityPointsLoss(lua_State *L, Player *player)
int DurabilityRepairAll(lua_State *L, Player *player)
int GetActiveSpec(lua_State *L, Player *player)
int GetQuestStatus(lua_State *L, Player *player)
int RemovedInsignia(lua_State *L, Player *player)
int SendPacketToGuild(lua_State *L, Player *player)
int AddComboPoints(lua_State *L, Player *player)
int CanEquipItem(lua_State *L, Player *player)
int GetSpellCooldowns(lua_State *L, Player *player)
int DurabilityLoss(lua_State *L, Player *player)
int KickPlayer(lua_State *L, Player *player)
int AdvanceSkillsToMax(lua_State *L, Player *player)
int KillPlayer(lua_State *L, Player *player)
int TextEmote(lua_State *L, Player *player)
int SetGender(lua_State *L, Player *player)
int IsNeverVisible(lua_State *L, Player *player)
int GetComboPoints(lua_State *L, Player *player)
int LearnSpell(lua_State *L, Player *player)
int SetRestBonus(lua_State *L, Player *player)
int InArena(lua_State *L, Player *player)
int IsGMChat(lua_State *L, Player *player)
int DurabilityLossAll(lua_State *L, Player *player)
int ModifyHonorPoints(lua_State *L, Player *player)
int SetKnownTitle(lua_State *L, Player *player)
int CanTameExoticPets(lua_State *L, Player *player)
int SetBindPoint(lua_State *L, Player *player)
int SetFactionForRace(lua_State *L, Player *player)
int SetQuestStatus(lua_State *L, Player *player)
int IsInWater(lua_State *L, Player *player)
int IsInArenaTeam(lua_State *L, Player *player)
int IsImmuneToEnvironmentalDamage(lua_State *L, Player *player)
int GossipMenuAddItem(lua_State *L, Player *player)
int GossipSendPOI(lua_State *L, Player *player)
int AreaExploredOrEventHappens(lua_State *L, Player *player)
int RemoveActiveQuest(lua_State *L, Player *player)
int IsAlliance(lua_State *L, Player *player)
int IsAFK(lua_State *L, Player *player)
int FailQuest(lua_State *L, Player *player)
int IsUsingLfg(lua_State *L, Player *player)
int GetTeam(lua_State *L, Player *player)
int GetPhaseMaskForSpawn(lua_State *L, Player *player)
int HasQuestForGO(lua_State *L, Player *player)
int GetReputation(lua_State *L, Player *player)
int SendListInventory(lua_State *L, Player *player)
int RemoveFromGroup(lua_State *L, Player *player)
int InBattleground(lua_State *L, Player *player)
int SendPacketToRankedInGuild(lua_State *L, Player *player)
int SetGMChat(lua_State *L, Player *player)
int CanUseItem(lua_State *L, Player *player)
int PlaySoundToPlayer(lua_State *L, Player *player)
int HasSkill(lua_State *L, Player *player)
int GetInGameTime(lua_State *L, Player *player)
int GetItemByEntry(lua_State *L, Player *player)
int GetSelectedPlayer(lua_State *L, Player *player)
int HasQuest(lua_State *L, Player *player)
int GetGuildId(lua_State *L, Player *player)
int SendPacketToPlayer(lua_State *L, Player *player)
int ResetPetTalents(lua_State *L, Player *player)
int ToggleDND(lua_State *L, Player *player)
int GetArenaPoints(lua_State *L, Player *player)
int IsInSameGroupWith(lua_State *L, Player *player)
int SetReputation(lua_State *L, Player *player)
int IncompleteQuest(lua_State *L, Player *player)
int ModifyArenaPoints(lua_State *L, Player *player)
int ResetTalentsCost(lua_State *L, Player *player)
int CreateCorpse(lua_State *L, Player *player)
int RemoveItem(lua_State *L, Player *player)
int GetDrunkValue(lua_State *L, Player *player)
int SetSkill(lua_State *L, Player *player)
int SetCoinage(lua_State *L, Player *player)
int GetCorpse(lua_State *L, Player *player)
int GetHonorPoints(lua_State *L, Player *player)
int IsHonorOrXPTarget(lua_State *L, Player *player)
int SetTaxiCheat(lua_State *L, Player *player)
int GetComboTarget(lua_State *L, Player *player)
int GetLatency(lua_State *L, Player *player)
int GetChatTag(lua_State *L, Player *player)
int KillGOCredit(lua_State *L, Player *player)
int EquipItem(lua_State *L, Player *player)
int GetManaBonusFromIntellect(lua_State *L, Player *player)
int RegenerateHealth(lua_State *L, Player *player)
int GetSpecsCount(lua_State *L, Player *player)
int GetQuestLevel(lua_State *L, Player *player)
int GetChampioningFaction(lua_State *L, Player *player)
int UnsetKnownTitle(lua_State *L, Player *player)
int SendSpiritResurrect(lua_State *L, Player *player)
int GossipAddQuests(lua_State *L, Player *player)
int IsGroupVisibleFor(lua_State *L, Player *player)
int GetReputationRank(lua_State *L, Player *player)
int GetPureMaxSkillValue(lua_State *L, Player *player)
int GetMaxSkillValue(lua_State *L, Player *player)
int GetCoinage(lua_State *L, Player *player)
int HasAtLoginFlag(lua_State *L, Player *player)
int RemovePet(lua_State *L, Player *player)
int HasTitle(lua_State *L, Player *player)
int GossipComplete(lua_State *L, Player *player)
int GetXPRestBonus(lua_State *L, Player *player)
int SendMailMenu(lua_State *L, Player *player)
int SetAcceptWhispers(lua_State *L, Player *player)
int SaveToDB(lua_State *L, Player *player)
int GetAccountId(lua_State *L, Player *player)
int SendClearCooldowns(lua_State *L, Player *player)
int UnbindInstance(lua_State *L, Player *player)
int GetReqKillOrCastCurrentCount(lua_State *L, Player *player)
int HasAura(lua_State *L, Player *player)
int Teleport(lua_State *L, Player *player)
int GroupEventHappens(lua_State *L, Player *player)
int GetRecruiterId(lua_State *L, Player *player)
int SendTabardVendorActivate(lua_State *L, Player *player)
int GetDbLocaleIndex(lua_State *L, Player *player)
int Mute(lua_State *L, Player *player)
int GetItemByPos(lua_State *L, Player *player)
int TalkedToCreature(lua_State *L, Player *player)
int GetDbcLocale(lua_State *L, Player *player)
int CanUninviteFromGroup(lua_State *L, Player *player)
int SetGuildRank(lua_State *L, Player *player)
int KilledPlayerCredit(lua_State *L, Player *player)
int SendVendorWindow(lua_State *L, Player *player)
int AdvanceSkill(lua_State *L, Player *player)
int RemoveSpell(lua_State *L, Player *player)
int GetGuildRank(lua_State *L, Player *player)
int GiveLevel(lua_State *L, Player *player)
int ResetSpellCooldown(lua_State *L, Player *player)
int CompleteQuest(lua_State *L, Player *player)
int AddLifetimeKills(lua_State *L, Player *player)
int LeaveBattleground(lua_State *L, Player *player)
int IsInGuild(lua_State *L, Player *player)
int SpawnBones(lua_State *L, Player *player)
int GetShieldBlockValue(lua_State *L, Player *player)
int GossipSendMenu(lua_State *L, Player *player)
int GetGroupInvite(lua_State *L, Player *player)
int GetGMRank(lua_State *L, Player *player)
uint32 houseId