void TradeData::SetItem(TradeSlots slot, Item* item, bool update /*= false*/) { ObjectGuid itemGuid; if (item) itemGuid = item->GetGUID(); if (_items[slot] == itemGuid && !update) return; _items[slot] = itemGuid; SetAccepted(false); GetTraderData()->SetAccepted(false); UpdateServerStateIndex(); Update(); // need remove possible trader spell applied to changed item if (slot == TRADE_SLOT_NONTRADED) GetTraderData()->SetSpell(0); // need remove possible player spell applied (possible move reagent) SetSpell(0); }
static void create() { spell::create(); SetSpell("greater fireball"); SetRules("", "LIV"); SetSpellType(SPELL_COMBAT); SetRequiredMagic(100); SetSkills(([ "conjuring" : 24, "magic attack" : 24 ])); SetMagicCost(49, 49); SetStaminaCost(10, 10); SetDifficulty(10); SetMorality(-20); SetAutoDamage(0); SetDamage(MAGIC|HEAT, ({ 60, 45 }) );
static void create() { spell::create(); SetSpell("fireball"); SetRules("", "LIV"); SetSpellType(SPELL_COMBAT); SetRequiredMagic(50); SetSkills(([ "conjuring" : 8, "magic attack" : 0 ])); SetMagicCost(30, 24); SetStaminaCost(20, 16); SetDifficulty(10); SetMorality(-20); SetAutoDamage(0); SetDamage(MAGIC|HEAT, ({ 20, 15 }) );
static void create() { spell::create(); SetSpell("healing"); SetRules("for LIV"); SetSpellType(SPELL_HEALING); SetRequiredMagic(300); SetSkills(([ "healing" : 1 ])); SetMagicCost( 20, 10); SetDifficulty(1); SetVerb("pray"); SetHelp("Syntax: <pray for healing for LIV>\n\n" "This minor healing spell provides some minimal " "aid to the wounded."); }
static void create() { spell::create(); SetSpell("buffer"); SetRules("", "LIV"); SetSpellType(SPELL_DEFENSE); SetRequiredMagic(50); SetSkills(([ "magic defense" : 1 ])); SetMagicCost(40, 40); SetDifficulty(50); SetMorality(10); SetHelp("Syntax: <cast buffer>\n" " <cast buffer on LIV>\n\n" "A magical defense spell that allows the caster to create " "a glowing shield around the LIVing object named.\n\n"); }
void Daggerstorm::Cast(ObjectRef user, ObjectRef enemy) { for (int i = 0; i < 8; i++) { auto projectileObject = Object::Create(); projectileObject->SetJustEnabled(); static int projectileNumber = 0; std::string name = std::string("projectile") + std::to_string(projectileNumber++); projectileObject->SetName(name); auto projectileComp = projectileObject->AddComponent<ProjectileComponent>(); auto spriteComp = projectileObject->AddComponent<SpriteComponent>(); auto colliderComp = projectileObject->AddComponent<ColliderComponent>(); Vector2f direction = directions[i]; projectileComp->SetDirection(direction); projectileComp->SetSpeed(projectileSpeed); projectileComp->SetSpell(this); projectileComp->SetUser(user); projectileComp->SetCanApplyOnUser(false); spriteComp->SetTexture("dagger.png"); spriteComp->SetSize(Vector2f(20, 40)); colliderComp->InitShape("rectangle", "20, 20"); colliderComp->SetIsStatic(false); colliderComp->SetIsPhantom(true); Vector2f userPos = user->GetComponent<SpriteComponent>()->GetSize(); Vector2f startingPos = user->GetPos() + userPos/2.f; Vector2f projectileSize = spriteComp->GetSize(); float magic = (sqrt(pow(projectileSize.x, 2) + pow(projectileSize.y, 2))) / 2; projectileObject->SetPos(startingPos + magic * direction); g_menuHandler->GetCurrentMenu()->AddChild(std::move(projectileObject)); } r_cooldown = cooldown; }