Big re-organization of repository [W.I.P]
This commit is contained in:
parent
c62a72c0a8
commit
0f85ce1c54
3016 changed files with 1271 additions and 1 deletions
|
|
@ -1,287 +0,0 @@
|
|||
/*
|
||||
* Copyright (C)
|
||||
* Copyright (C)
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License as published by the
|
||||
* Free Software Foundation; either version 2 of the License, or (at your
|
||||
* option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
|
||||
* more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along
|
||||
* with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
/* ScriptData
|
||||
SDName: Item_Scripts
|
||||
SD%Complete: 100
|
||||
SDComment: Items for a range of different items. See content below (in script)
|
||||
SDCategory: Items
|
||||
EndScriptData */
|
||||
|
||||
/* ContentData
|
||||
item_nether_wraith_beacon(i31742) Summons creatures for quest Becoming a Spellfire Tailor (q10832)
|
||||
item_flying_machine(i34060, i34061) Engineering crafted flying machines
|
||||
item_gor_dreks_ointment(i30175) Protecting Our Own(q10488)
|
||||
item_only_for_flight Items which should only useable while flying
|
||||
EndContentData */
|
||||
|
||||
#include "ScriptMgr.h"
|
||||
#include "ScriptedCreature.h"
|
||||
#include "Spell.h"
|
||||
#include "Player.h"
|
||||
|
||||
/*#####
|
||||
# item_only_for_flight
|
||||
#####*/
|
||||
|
||||
enum OnlyForFlight
|
||||
{
|
||||
SPELL_ARCANE_CHARGES = 45072
|
||||
};
|
||||
|
||||
class item_only_for_flight : public ItemScript
|
||||
{
|
||||
public:
|
||||
item_only_for_flight() : ItemScript("item_only_for_flight") { }
|
||||
|
||||
bool OnUse(Player* player, Item* item, SpellCastTargets const& /*targets*/)
|
||||
{
|
||||
uint32 itemId = item->GetEntry();
|
||||
bool disabled = false;
|
||||
|
||||
//for special scripts
|
||||
switch (itemId)
|
||||
{
|
||||
case 24538:
|
||||
if (player->GetAreaId() != 3628)
|
||||
disabled = true;
|
||||
break;
|
||||
case 34489:
|
||||
if (player->GetZoneId() != 4080)
|
||||
disabled = true;
|
||||
break;
|
||||
case 34475:
|
||||
if (const SpellInfo* spellInfo = sSpellMgr->GetSpellInfo(SPELL_ARCANE_CHARGES))
|
||||
Spell::SendCastResult(player, spellInfo, 1, SPELL_FAILED_NOT_ON_GROUND);
|
||||
break;
|
||||
}
|
||||
|
||||
// allow use in flight only
|
||||
if (player->IsInFlight() && !disabled)
|
||||
return false;
|
||||
|
||||
// error
|
||||
player->SendEquipError(EQUIP_ERR_CANT_DO_RIGHT_NOW, item, NULL);
|
||||
return true;
|
||||
}
|
||||
};
|
||||
|
||||
/*#####
|
||||
# item_nether_wraith_beacon
|
||||
#####*/
|
||||
|
||||
class item_nether_wraith_beacon : public ItemScript
|
||||
{
|
||||
public:
|
||||
item_nether_wraith_beacon() : ItemScript("item_nether_wraith_beacon") { }
|
||||
|
||||
bool OnUse(Player* player, Item* /*item*/, SpellCastTargets const& /*targets*/)
|
||||
{
|
||||
if (player->GetQuestStatus(10832) == QUEST_STATUS_INCOMPLETE)
|
||||
{
|
||||
if (Creature* nether = player->SummonCreature(22408, player->GetPositionX(), player->GetPositionY()+20, player->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN, 180000))
|
||||
nether->AI()->AttackStart(player);
|
||||
|
||||
if (Creature* nether = player->SummonCreature(22408, player->GetPositionX(), player->GetPositionY()-20, player->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN, 180000))
|
||||
nether->AI()->AttackStart(player);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
};
|
||||
|
||||
/*#####
|
||||
# item_gor_dreks_ointment
|
||||
#####*/
|
||||
|
||||
class item_gor_dreks_ointment : public ItemScript
|
||||
{
|
||||
public:
|
||||
item_gor_dreks_ointment() : ItemScript("item_gor_dreks_ointment") { }
|
||||
|
||||
bool OnUse(Player* player, Item* item, SpellCastTargets const& targets)
|
||||
{
|
||||
if (targets.GetUnitTarget() && targets.GetUnitTarget()->GetTypeId() == TYPEID_UNIT &&
|
||||
targets.GetUnitTarget()->GetEntry() == 20748 && !targets.GetUnitTarget()->HasAura(32578))
|
||||
return false;
|
||||
|
||||
player->SendEquipError(EQUIP_ERR_CANT_DO_RIGHT_NOW, item, NULL);
|
||||
return true;
|
||||
}
|
||||
};
|
||||
|
||||
/*#####
|
||||
# item_incendiary_explosives
|
||||
#####*/
|
||||
|
||||
class item_incendiary_explosives : public ItemScript
|
||||
{
|
||||
public:
|
||||
item_incendiary_explosives() : ItemScript("item_incendiary_explosives") { }
|
||||
|
||||
bool OnUse(Player* player, Item* item, SpellCastTargets const & /*targets*/)
|
||||
{
|
||||
if (player->FindNearestCreature(26248, 15) || player->FindNearestCreature(26249, 15))
|
||||
return false;
|
||||
else
|
||||
{
|
||||
player->SendEquipError(EQUIP_ERR_OUT_OF_RANGE, item, NULL);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
/*#####
|
||||
# item_mysterious_egg
|
||||
#####*/
|
||||
|
||||
class item_mysterious_egg : public ItemScript
|
||||
{
|
||||
public:
|
||||
item_mysterious_egg() : ItemScript("item_mysterious_egg") { }
|
||||
|
||||
bool OnExpire(Player* player, ItemTemplate const* /*pItemProto*/)
|
||||
{
|
||||
ItemPosCountVec dest;
|
||||
uint8 msg = player->CanStoreNewItem(NULL_BAG, NULL_SLOT, dest, 39883, 1); // Cracked Egg
|
||||
if (msg == EQUIP_ERR_OK)
|
||||
player->StoreNewItem(dest, 39883, true, Item::GenerateItemRandomPropertyId(39883));
|
||||
|
||||
return true;
|
||||
}
|
||||
};
|
||||
|
||||
/*#####
|
||||
# item_disgusting_jar
|
||||
#####*/
|
||||
|
||||
class item_disgusting_jar : public ItemScript
|
||||
{
|
||||
public:
|
||||
item_disgusting_jar() : ItemScript("item_disgusting_jar") { }
|
||||
|
||||
bool OnExpire(Player* player, ItemTemplate const* /*pItemProto*/)
|
||||
{
|
||||
ItemPosCountVec dest;
|
||||
uint8 msg = player->CanStoreNewItem(NULL_BAG, NULL_SLOT, dest, 44718, 1); // Ripe Disgusting Jar
|
||||
if (msg == EQUIP_ERR_OK)
|
||||
player->StoreNewItem(dest, 44718, true, Item::GenerateItemRandomPropertyId(44718));
|
||||
|
||||
return true;
|
||||
}
|
||||
};
|
||||
|
||||
/*#####
|
||||
# item_petrov_cluster_bombs
|
||||
#####*/
|
||||
|
||||
enum PetrovClusterBombs
|
||||
{
|
||||
SPELL_PETROV_BOMB = 42406,
|
||||
AREA_ID_SHATTERED_STRAITS = 4064,
|
||||
ZONE_ID_HOWLING = 495
|
||||
};
|
||||
|
||||
class item_petrov_cluster_bombs : public ItemScript
|
||||
{
|
||||
public:
|
||||
item_petrov_cluster_bombs() : ItemScript("item_petrov_cluster_bombs") { }
|
||||
|
||||
bool OnUse(Player* player, Item* item, const SpellCastTargets & /*targets*/)
|
||||
{
|
||||
if (player->GetZoneId() != ZONE_ID_HOWLING)
|
||||
return false;
|
||||
|
||||
if (!player->GetTransport() || player->GetAreaId() != AREA_ID_SHATTERED_STRAITS)
|
||||
{
|
||||
player->SendEquipError(EQUIP_ERR_NONE, item, NULL);
|
||||
|
||||
if (const SpellInfo* spellInfo = sSpellMgr->GetSpellInfo(SPELL_PETROV_BOMB))
|
||||
Spell::SendCastResult(player, spellInfo, 1, SPELL_FAILED_NOT_HERE);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
};
|
||||
|
||||
enum TheEmissary
|
||||
{
|
||||
QUEST_THE_EMISSARY = 11626,
|
||||
NPC_LEVIROTH = 26452
|
||||
};
|
||||
|
||||
class item_trident_of_nazjan : public ItemScript
|
||||
{
|
||||
public:
|
||||
item_trident_of_nazjan() : ItemScript("item_Trident_of_Nazjan") { }
|
||||
|
||||
bool OnUse(Player* player, Item* item, const SpellCastTargets & /*targets*/)
|
||||
{
|
||||
if (player->GetQuestStatus(QUEST_THE_EMISSARY) == QUEST_STATUS_INCOMPLETE)
|
||||
{
|
||||
if (Creature* pLeviroth = player->FindNearestCreature(NPC_LEVIROTH, 10.0f)) // spell range
|
||||
{
|
||||
pLeviroth->AI()->AttackStart(player);
|
||||
return false;
|
||||
} else
|
||||
player->SendEquipError(EQUIP_ERR_OUT_OF_RANGE, item, NULL);
|
||||
} else
|
||||
player->SendEquipError(EQUIP_ERR_CANT_DO_RIGHT_NOW, item, NULL);
|
||||
return true;
|
||||
}
|
||||
};
|
||||
|
||||
enum CapturedFrog
|
||||
{
|
||||
QUEST_THE_PERFECT_SPIES = 25444,
|
||||
NPC_VANIRAS_SENTRY_TOTEM = 40187
|
||||
};
|
||||
|
||||
class item_captured_frog : public ItemScript
|
||||
{
|
||||
public:
|
||||
item_captured_frog() : ItemScript("item_captured_frog") { }
|
||||
|
||||
bool OnUse(Player* player, Item* item, SpellCastTargets const& /*targets*/)
|
||||
{
|
||||
if (player->GetQuestStatus(QUEST_THE_PERFECT_SPIES) == QUEST_STATUS_INCOMPLETE)
|
||||
{
|
||||
if (player->FindNearestCreature(NPC_VANIRAS_SENTRY_TOTEM, 10.0f))
|
||||
return false;
|
||||
else
|
||||
player->SendEquipError(EQUIP_ERR_OUT_OF_RANGE, item, NULL);
|
||||
}
|
||||
else
|
||||
player->SendEquipError(EQUIP_ERR_CANT_DO_RIGHT_NOW, item, NULL);
|
||||
return true;
|
||||
}
|
||||
};
|
||||
|
||||
void AddSC_item_scripts()
|
||||
{
|
||||
new item_only_for_flight();
|
||||
new item_nether_wraith_beacon();
|
||||
new item_gor_dreks_ointment();
|
||||
new item_incendiary_explosives();
|
||||
new item_mysterious_egg();
|
||||
new item_disgusting_jar();
|
||||
new item_petrov_cluster_bombs();
|
||||
new item_trident_of_nazjan();
|
||||
new item_captured_frog();
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue