本文整理汇总了C++中Monster::addSpell方法的典型用法代码示例。如果您正苦于以下问题:C++ Monster::addSpell方法的具体用法?C++ Monster::addSpell怎么用?C++ Monster::addSpell使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Monster
的用法示例。
在下文中一共展示了Monster::addSpell方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: initCreatures
//.........这里部分代码省略.........
int rareness = node->getValueAsInt( "rareness" );
int speed = node->getValueAsInt( "speed" );
float scale = node->getValueAsFloat( "scale" );
bool npc = node->getValueAsBool( "npc" );
bool harmless = node->getValueAsBool( "harmless" );
bool special = node->getValueAsBool( "special" );
GLuint statemod = node->getValueAsInt( "statemod" );
Monster *m =
new Monster( name, displayName,
type,
level, hp, mp,
model_name, skin_name,
rareness, speed, armor,
scale, npc, portrait,
harmless );
if( strlen( combatMusic ) ) {
m->setCombatMusic( combatMusic );
}
if ( npc ) {
npcs.push_back( m );
m->setStartingStateMod( statemod );
} else if ( harmless ) {
harmlessCreatures.push_back( m );
} else if ( special ) {
// don't add to random monsters list
// these are placed monsters like Mycotharsius.
} else {
vector<Monster*> *list = NULL;
if ( monsters.find( level ) == monsters.end() ) {
list = new vector<Monster*>();
monsters[level] = list;
} else {
list = monsters[level];
}
list->push_back( m );
}
string s = name;
for ( int i = 0; monstersByName.find( s ) != monstersByName.end(); ++i ) {
cerr << "*** Monster::initCreatures() '" << s << "' occurs multiple times." << endl;
stringstream numbered;
numbered << name << " " << i+2;
s = numbered.str();
}
monstersByName[s] = m;
// store type and add sounds
string typeStr = m->getModelName();
bool found = false;
for ( int i = 0; i < static_cast<int>( monsterTypes.size() ); i++ ) {
if ( !strcmp( monsterTypes[i].c_str(), m->getModelName() ) ) {
found = true;
break;
}
}
if ( !found ) {
if ( !( npc || harmless ) ) monsterTypes.push_back( typeStr );
if ( soundMap.find( typeStr ) == soundMap.end() ) {
currentSoundMap = new map<int, vector<string>*>();
soundMap[typeStr] = currentSoundMap;
} else {
currentSoundMap = soundMap[typeStr];
}
addMd2Sounds( m->getModelName(), currentSoundMap );
}
// backpack
strcpy( tmp, node->getValueAsString( "inventory" ) );
char *p = strtok( tmp, "," );
while ( p ) {
m->addItem( RpgItem::getItemByName( p ) );
p = strtok( NULL, "," );
}
// spells
strcpy( tmp, node->getValueAsString( "spells" ) );
p = strtok( tmp, "," );
while ( p ) {
m->addSpell( Spell::getSpellByName( p ) );
p = strtok( NULL, "," );
}
// skills
vector<ConfigNode*> *vv = config->getDocument()->
getChildrenByName( "skills" );
if ( vv && !vv->empty() ) {
ConfigNode *n = ( *vv )[0];
set<string> names;
n->getKeys( &names );
for ( set<string>::iterator e = names.begin(); e != names.end(); ) {
string skillStr = *e;
int value = n->getValueAsInt( name );
m->skills[ skillStr ] = value;
}
}
}
}