SpellCaster::SpellCaster(const std::string& name, int hitPoints, int damage, int manaPoints) : Unit(name, hitPoints, damage) { this->manaPoints = manaPoints; this->manaPointsLimit = manaPoints; ability = new BattleCasterAbility(this); addSpell(new Fireball()); addSpell(new Heal()); }
//slot for loading buffs when main char struct is loaded void SpellShell::buffLoad(const spellBuff* c) { #ifdef DIAG_SPELLSHELL seqDebug("Loading buff - id=%d.",c->spellid); #endif // DIAG_SPELLSHELL const Spell* spell = m_spells->spell(c->spellid); int duration = c->duration * 6; SpellItem *item = findSpell(c->spellid, m_player->id(), m_player->name()); if (item) { // exists item->update(c->spellid, spell, duration, 0, "Buff", m_player->id(), m_player->name()); emit changeSpell(item); } else { // new spell item = new SpellItem(); item->update(c->spellid, spell, duration, 0, "Buff", m_player->id(), m_player->name()); m_spellList.append(item); if ((m_spellList.count() > 0) && (!m_timer->isActive())) m_timer->start(1000 * pSEQPrefs->getPrefInt("SpellTimer", "SpellList", 6)); emit addSpell(item); } }
void SpellBuyingWindow::startSpellBuying(const MWWorld::Ptr& actor) { center(); mPtr = actor; clearSpells(); MWMechanics::Spells& merchantSpells = MWWorld::Class::get (actor).getCreatureStats (actor).getSpells(); for (MWMechanics::Spells::TIterator iter = merchantSpells.begin(); iter!=merchantSpells.end(); ++iter) { const ESM::Spell* spell = MWBase::Environment::get().getWorld()->getStore().get<ESM::Spell>().find (iter->first); if (spell->mData.mType!=ESM::Spell::ST_Spell) continue; // don't try to sell diseases, curses or powers if (playerHasSpell(iter->first)) continue; addSpell (iter->first); } updateLabels(); mSpellsView->setCanvasSize (MyGUI::IntSize(mSpellsView->getWidth(), std::max(mSpellsView->getHeight(), mCurrentY))); }
//Overloaded InsertSpell for buffLoad SpellItem* SpellShell::InsertSpell(const spellBuff *c) { if (c) { SpellItem *item = FindSpell(c->spellid); if (item) { // exists UpdateSpell(item, c); emit changeSpell(item); return item; } else { // new spell item = new SpellItem(); UpdateSpell(item, c); m_spellList.append(item); if ((m_spellList.count() > 0) && (!m_timer->isActive())) m_timer->start(1000 * pSEQPrefs->getPrefInt("SpellTimer", "SpellList", 6)); emit addSpell(item); return item; } } return NULL; }
void SpellShell::action(const uint8_t* data, size_t, uint8_t) { const actionStruct* a = (const actionStruct*)data; if (a->type != 0xe7) // only things to do if action is a spell return; const Item* s; QString targetName; if (a->target && ((s = m_spawnShell->findID(tSpawn, a->target)))) targetName = s->name(); SpellItem *item = findSpell(a->spell, a->target, targetName); if (item || (a->target == m_player->id())) { int duration = 0; const Spell* spell = m_spells->spell(a->spell); if (spell) duration = spell->calcDuration(a->level) * 6; QString casterName; if (a->source && ((s = m_spawnShell->findID(tSpawn, a->source)))) casterName = s->name(); if (item) { #ifdef DIAG_SPELLSHELL seqDebug("action - found - source=%d (lvl: %d) cast id=%d on target=%d causing %d damage", a->source, a->level, a->spell, a->target, a->damage); #endif // DIAG_SPELLSHELL item->update(a->spell, spell, duration, a->source, casterName, a->target, targetName); emit changeSpell(item); } else { // otherwise check for spells cast on us #ifdef DIAG_SPELLSHELL seqDebug("action - new - source=%d (lvl: %d) cast id=%d on target=%d causing %d damage", a->source, a->level, a->spell, a->target, a->damage); #endif // DIAG_SPELLSHELL // only way to get here is if there wasn't an existing spell, so... item = new SpellItem(); item->update(a->spell, spell, duration, a->source, casterName, a->target, targetName); m_spellList.append(item); if ((m_spellList.count() > 0) && (!m_timer->isActive())) m_timer->start(1000 * pSEQPrefs->getPrefInt("SpellTimer", "SpellList", 6)); emit addSpell(item); } } }
void SpellManager::fillSpells() { CommandsDB::load(); CommandsMap &commands = CommandsDB::getAll(); FOR_EACH (CommandsMapIter, it, commands) addSpell((*it).second); for (unsigned f = 0; f < SPELL_SHORTCUT_ITEMS * SPELL_SHORTCUT_TABS; f++) { const std::map<unsigned int, TextCommand*>::const_iterator it = mSpells.find(f); if (it == mSpells.end()) addSpell(new TextCommand(f)); } CommandsDB::unload(); }
void SpellShell::selfStartSpellCast(const uint8_t* data) { const startCastStruct *c = (const startCastStruct *)data; #ifdef DIAG_SPELLSHELL seqDebug("selfStartSpellCast - id=%d (slot=%d, inv=%d) on spawnid=%d", c->spellId, c->slot, c->inventorySlot, c->targetId); #endif // DIAG_SPELLSHELL // get the target const Item* s; QString targetName; int duration = 0; const Spell* spell = m_spells->spell(c->spellId); SpellItem *item; if (spell) duration = spell->calcDuration(m_player->level()) * 6; if (!spell || spell->targetType() != 6) { if (c->targetId && ((s = m_spawnShell->findID(tSpawn, c->targetId)))) targetName = s->name(); item = findSpell(c->spellId, c->targetId, targetName); } else { targetName = m_player->name(); item = findSpell(c->spellId); } if (item) { // exists item->update(c->spellId, spell, duration, m_player->id(), m_player->name(), c->targetId, targetName); emit changeSpell(item); } else { // new spell item = new SpellItem(); item->update(c->spellId, spell, duration, m_player->id(), m_player->name(), c->targetId, targetName); m_spellList.append(item); if ((m_spellList.count() > 0) && (!m_timer->isActive())) m_timer->start(1000 * pSEQPrefs->getPrefInt("SpellTimer", "SpellList", 6)); emit addSpell(item); m_lastPlayerSpell = item; } }
void SpellBuyingWindow::setPtr(const MWWorld::Ptr& actor, int startOffset) { center(); mPtr = actor; clearSpells(); MWMechanics::Spells& merchantSpells = actor.getClass().getCreatureStats (actor).getSpells(); std::vector<const ESM::Spell*> spellsToSort; for (MWMechanics::Spells::TIterator iter = merchantSpells.begin(); iter!=merchantSpells.end(); ++iter) { const ESM::Spell* spell = iter->first; if (spell->mData.mType!=ESM::Spell::ST_Spell) continue; // don't try to sell diseases, curses or powers if (actor.getClass().isNpc()) { const ESM::Race* race = MWBase::Environment::get().getWorld()->getStore().get<ESM::Race>().find( actor.get<ESM::NPC>()->mBase->mRace); if (race->mPowers.exists(spell->mId)) continue; } if (playerHasSpell(iter->first->mId)) continue; spellsToSort.push_back(iter->first); } std::stable_sort(spellsToSort.begin(), spellsToSort.end(), sortSpells); for (std::vector<const ESM::Spell*>::iterator it = spellsToSort.begin() ; it != spellsToSort.end(); ++it) { addSpell(**it); } spellsToSort.clear(); updateLabels(); // Canvas size must be expressed with VScroll disabled, otherwise MyGUI would expand the scroll area when the scrollbar is hidden mSpellsView->setVisibleVScroll(false); mSpellsView->setCanvasSize (MyGUI::IntSize(mSpellsView->getWidth(), std::max(mSpellsView->getHeight(), mCurrentY))); mSpellsView->setVisibleVScroll(true); mSpellsView->setViewOffset(MyGUI::IntPoint(0, startOffset)); }
MagicEffects Spells::getMagicEffects() const { MagicEffects effects; for (TIterator iter = mSpells.begin(); iter!=mSpells.end(); ++iter) { const ESM::Spell *spell = MWBase::Environment::get().getWorld()->getStore().spells.find (*iter); if (spell->mData.mType==ESM::Spell::ST_Ability || spell->mData.mType==ESM::Spell::ST_Blight || spell->mData.mType==ESM::Spell::ST_Disease || spell->mData.mType==ESM::Spell::ST_Curse) addSpell (spell, effects); } return effects; }
void Pet::_LoadSpells() { QueryResult result = CharacterDatabase.PQuery("SELECT spell, active FROM pet_spell WHERE guid = '%u'", m_charmInfo->GetPetNumber()); if (result) { do { Field* fields = result->Fetch(); addSpell(fields[0].GetUInt32(), ActiveStates(fields[1].GetUInt8()), PETSPELL_UNCHANGED); } while (result->NextRow()); } }
CCGSpell* STGCharacter::castSpell(std::string dataName) { CCGDataCache *dataCache = CCGDataCache::getInstance(); STGSpellData* data = dynamic_cast<STGSpellData*>(dataCache->getData(dataName)); if (data != nullptr) { STGSpell* spell = STGSpell::createWithSpellData(static_cast<STGSpellData*>(data)); addSpell(spell); Vec2 pos = getPosition(); spell->setPosition(getPosition() + data->startPosition); spell->setRotation(getRotation()); spell->runState(STGSpell::SPELL_STATE_START); spell->runLuaScript(data->scriptName); return spell; } return nullptr; }
SpellItem* SpellShell::InsertSpell(const castStruct *c) { if (c) { SpellItem *item = FindSpell(c->spellId, m_player->getPlayerID(), c->targetId); if (item) { // exists UpdateSpell(c); return item; } else { // new spell item = new SpellItem(m_spawnShell, m_player->getPlayerID(), c); m_spellList.append(item); if ((m_spellList.count() > 0) && (!m_timer->isActive())) m_timer->start(1000 * SPELLTIMER); emit addSpell(item); return item; } } return NULL; }
void SpellShell::action(const actionStruct* a, uint32_t, uint8_t) { if (a->type != 0xe7) // only things to do if action is a spell return; SpellItem* item; // find a spell with a matching spellid and target - used for updating // buffs that we had cast previously that are now be updated by someone // else. item = FindSpell(a->spell, a->target); if (item) { #ifdef DIAG_SPELLSHELL printf("action - source=%d (lvl: %d) cast id=%d on target=%d causing %d damage\n", a->source, a->level, a->spell, a->target, a->damage); #endif // DIAG_SPELLSHELL UpdateSpell(item, a); emit changeSpell(item); return; } // otherwise check for spells cast on us if (a->target == m_player->id()) { #ifdef DIAG_SPELLSHELL printf("action - source=%d (lvl: %d) cast id=%d on target=%d causing %d damage\n", a->source, a->level, a->spell, a->target, a->damage); #endif // DIAG_SPELLSHELL // only way to get here is if there wasn't an existing spell, so... item = new SpellItem(); UpdateSpell(item, a); m_spellList.append(item); if ((m_spellList.count() > 0) && (!m_timer->isActive())) m_timer->start(1000 * pSEQPrefs->getPrefInt("SpellTimer", "SpellList", 6)); emit addSpell(item); } }
void spellRecognitionInit() { for(size_t i = 0; i < ARRAY_SIZE(allSpells); i++) { addSpell(allSpells[i].symbols, allSpells[i].spell, allSpells[i].name); } }
int Cconfigurator::loadConfig(QByteArray path, QByteArray filename) { int size; QSettings conf(path + filename, QSettings::IniFormat); conf.beginGroup("General"); setBaseFile( conf.value("mapFile", "database/mume.pmf").toByteArray() ); setWindowRect( conf.value("windowRect").toRect() ); setAlwaysOnTop( conf.value("alwaysOnTop", true ).toBool() ); setStartupMode( conf.value("startupMode", 1).toInt() ); setLogFileEnabled( conf.value("isLogFileEnabled", false).toBool() ); conf.endGroup(); conf.beginGroup("Networking"); setLocalPort( conf.value("localPort", 4242).toInt() ); setRemoteHost( conf.value("remoteHost", "193.134.218.111").toByteArray() ); setRemotePort( conf.value("remotePort", 443).toInt() ); conf.endGroup(); conf.beginGroup("OpenGL"); setTextureVisibility( conf.value("texturesVisibility", 500).toInt() ); setDetailsVisibility( conf.value("detailsVisibility", 300).toInt() ); setVisibleLayers( conf.value("visibleLayers", 5).toInt() ); setShowNotesRenderer( conf.value("showNotes", true).toBool() ); setShowRegionsInfo( conf.value("showRegions", false). toBool() ); setDisplayRegionsRenderer( conf.value("displayRegions", false).toBool() ); setMultisampling( conf.value("multisampling", true).toBool() ); setSelectOAnyLayer( conf.value("selectOnAnyLayer", true).toBool() ); setRendererAngles(conf.value("angleX", 0).toFloat(), conf.value("angleY", 0).toFloat(), conf.value("angleZ", 0).toFloat()); setRendererPosition(conf.value("userX", 0).toFloat(), conf.value("userY", 0).toFloat(), conf.value("userZ", 0).toFloat()); setNoteColor( conf.value("noteColor", "#F28003").toByteArray() ); setDrawPrespam( conf.value("drawPrespam", true).toBool() ); conf.endGroup(); conf.beginGroup("Engine"); setExitsCheck( conf.value("checkExits", false).toBool() ); setTerrainCheck( conf.value("checkTerrain", true).toBool() ); setBriefMode( conf.value("briefmode", true ).toBool() ); setAutomerge( conf.value("autoMerge", true ).toBool() ); setAngrylinker( conf.value("angryLinker", true ).toBool() ); setDuallinker( conf.value("dualLinker", false ).toBool() ); setAutorefresh( conf.value("autoRefresh", true ).toBool() ); setNameQuote( conf.value("roomNameQuote", 10 ).toInt() ); setDescQuote( conf.value("descQuote", 10 ).toInt() ); setRegionsAutoReplace( conf.value("regionsAutoReplace", false ).toBool() ); setRegionsAutoSet( conf.value("regionsAutoSet", false ).toBool() ); setMactionUsesPrespam( conf.value("mactionUsesPrespam", true).toBool() ); setPrespamTTL( conf.value("prespamTTL", 5000).toInt() ); conf.endGroup(); conf.beginGroup("Patterns"); setExitsPattern( conf.value("exitsPattern", "Exits: ").toByteArray() ); spells_pattern = conf.value("spellsEffectPattern", "Affected by:").toByteArray(); setScorePattern( conf.value("scorePattern", "[0-9]*/* hits, */* mana, and */* moves.").toByteArray() ); setShortScorePattern( conf.value("scorePatternShort", "[0-9]*/* hits and */* moves.").toByteArray() ); conf.endGroup(); conf.beginGroup("GroupManager"); setGroupManagerHost( conf.value("remoteHost", "localhost").toByteArray() ); setGroupManagerRemotePort( conf.value("remotePort", 4243 ).toInt() ); setGroupManagerLocalPort( conf.value("localServerPort", 4243 ).toInt() ); setGroupManagerCharName( conf.value("charName", "Charname" ).toByteArray() ); setGroupManagerColor( QColor( conf.value("charColor", "#F28003").toString() ) ); setGroupManagerShowSelf( conf.value("showSelf", false ).toBool() ); setGroupManagerNotifyArmour( conf.value("notifyArm", true ).toBool() ); setGroupManagerNotifySanc( conf.value("notifySanc", true ).toBool() ); setGroupManagerNotifyBash( conf.value("notifyBash", true ).toBool() ); setGroupManagerShowManager( conf.value("showGroupManager", true ).toBool() ); setGroupManagerRect( conf.value("windowRect").toRect() ); conf.endGroup(); size = conf.beginReadArray("Spells"); for (int i = 0; i < size; ++i) { conf.setArrayIndex(i); TSpell spell; spell.up = false; spell.silently_up = false; spell.addon = conf.value("addon", 0).toBool(); spell.name = conf.value("name").toByteArray(); spell.up_mes = conf.value("upMessage").toByteArray(); spell.refresh_mes = conf.value("refreshMessage").toByteArray(); spell.down_mes = conf.value("downMessage").toByteArray(); addSpell(spell); } conf.endArray(); conf.beginGroup("Movement tracking"); size = conf.beginReadArray("Cancel Patterns"); for (int i = 0; i < size; ++i) { conf.setArrayIndex(i); moveCancelPatterns.append( conf.value("pattern").toByteArray() ); } conf.endArray(); size = conf.beginReadArray("Force Patterns"); for (int i = 0; i < size; ++i) { conf.setArrayIndex(i); moveForcePatterns.append( conf.value("pattern").toByteArray() ); } conf.endArray(); conf.endGroup(); size = conf.beginReadArray("Debug Settings"); for (int i = 0; i < size; ++i) { conf.setArrayIndex(i); QString s = conf.value("name").toString(); unsigned int z = 0; while (debug_data[z].name != NULL) { if (debug_data[z].name == s) break; z++; } if (debug_data[z].name == NULL) { print_debug(DEBUG_CONFIG, "Warning, %s is a wrong debug descriptor/name!", qPrintable(s)); continue; } debug_data[i].state = conf.value("state", 0 ).toInt(); } conf.endArray(); configFile = filename; configPath = path; setConfigModified(false); return true; }