mirror of
				https://github.com/vcmi/vcmi.git
				synced 2025-10-31 00:07:39 +02:00 
			
		
		
		
	[refactor] a few more cleanups
This commit is contained in:
		| @@ -687,18 +687,13 @@ int CGHeroInstance::maxMovePoints(bool onLand) const | ||||
| 		base = 1500; //on water base movement is always 1500 (speed of army doesn't matter) | ||||
| 	} | ||||
|  | ||||
| 	int bonus = valOfBonuses(Bonus::MOVEMENT) + (onLand ? valOfBonuses(Bonus::LAND_MOVEMENT) : valOfBonuses(Bonus::SEA_MOVEMENT)); | ||||
| 	const Bonus::BonusType bt = onLand ? Bonus::LAND_MOVEMENT : Bonus::SEA_MOVEMENT; | ||||
| 	const int bonus = valOfBonuses(Bonus::MOVEMENT) + valOfBonuses(bt); | ||||
|  | ||||
| 	double modifier = 0; | ||||
| 	if(onLand) | ||||
| 	{ | ||||
| 		modifier = valOfBonuses(Bonus::SECONDARY_SKILL_PREMY, LOGISTICS) / 100.0; | ||||
| 	} | ||||
| 	else | ||||
| 	{ | ||||
| 		modifier = valOfBonuses(Bonus::SECONDARY_SKILL_PREMY, NAVIGATION) / 100.0; | ||||
| 	} | ||||
| 	return int(base + base*modifier) + bonus; | ||||
| 	const int subtype = onLand ? LOGISTICS : NAVIGATION; | ||||
| 	const double modifier = valOfBonuses(Bonus::SECONDARY_SKILL_PREMY, subtype) / 100.0; | ||||
|  | ||||
| 	return int(base* (1+modifier)) + bonus; | ||||
| } | ||||
|  | ||||
| CGHeroInstance::CGHeroInstance() | ||||
| @@ -930,27 +925,27 @@ void CGHeroInstance::initObj() //TODO: use bonus system | ||||
| 	speciality.growthsWithLevel = false; | ||||
|  | ||||
| 	if(!type) | ||||
| 		return; //TODO support prison | ||||
| 		return; //TODO: support prison | ||||
|  | ||||
| 	for (std::vector<SSpecialtyInfo>::const_iterator it = type->spec.begin(); it != type->spec.end(); it++) | ||||
| 	BOOST_FOREACH(const auto &spec, type->spec) | ||||
| 	{ | ||||
| 		Bonus *bonus = new Bonus(); | ||||
| 		bonus->val = it->val; | ||||
| 		bonus->val = spec.val; | ||||
| 		bonus->sid = id; //from the hero, speciality has no unique id | ||||
| 		bonus->duration = Bonus::PERMANENT; | ||||
| 		bonus->source = Bonus::HERO_SPECIAL; | ||||
| 		switch (it->type) | ||||
| 		switch (spec.type) | ||||
| 		{ | ||||
| 			case 1:// creature speciality | ||||
| 				{ | ||||
| 					speciality.growthsWithLevel = true; | ||||
|  | ||||
| 					const CCreature &specCreature = *VLC->creh->creatures[it->additionalinfo]; //creature in which we have specialty | ||||
| 					const CCreature &specCreature = *VLC->creh->creatures[spec.additionalinfo]; //creature in which we have specialty | ||||
|  | ||||
| 					int creLevel = specCreature.level; | ||||
| 					if(!creLevel) | ||||
| 					{ | ||||
| 						if(it->additionalinfo == 146) | ||||
| 						if(spec.additionalinfo == 146) | ||||
| 							creLevel = 5; //treat ballista as 5-level | ||||
| 						else | ||||
| 						{ | ||||
| @@ -961,7 +956,7 @@ void CGHeroInstance::initObj() //TODO: use bonus system | ||||
|  | ||||
| 					bonus->limiter.reset(new CCreatureTypeLimiter (specCreature, true)); //with upgrades | ||||
| 					bonus->type = Bonus::PRIMARY_SKILL; | ||||
| 					bonus->additionalInfo = it->additionalinfo; | ||||
| 					bonus->additionalInfo = spec.additionalinfo; | ||||
| 					bonus->valType = Bonus::ADDITIVE_VALUE; | ||||
|  | ||||
| 					bonus->subtype = PrimarySkill::ATTACK; | ||||
| @@ -982,12 +977,12 @@ void CGHeroInstance::initObj() //TODO: use bonus system | ||||
| 				speciality.growthsWithLevel = true; | ||||
| 				bonus->type = Bonus::SPECIAL_SECONDARY_SKILL; //needs to be recalculated with level, based on this value | ||||
| 				bonus->valType = Bonus::BASE_NUMBER; // to receive nonzero value | ||||
| 				bonus->subtype = it->subtype; //skill id | ||||
| 				bonus->val = it->val; //value per level, in percent | ||||
| 				bonus->subtype = spec.subtype; //skill id | ||||
| 				bonus->val = spec.val; //value per level, in percent | ||||
| 				speciality.addNewBonus(bonus); | ||||
| 				bonus = new Bonus(*bonus); | ||||
|  | ||||
| 				switch (it->additionalinfo) | ||||
| 				switch (spec.additionalinfo) | ||||
| 				{ | ||||
| 					case 0: //normal | ||||
| 						bonus->valType = Bonus::PERCENT_TO_BASE; | ||||
| @@ -1001,11 +996,11 @@ void CGHeroInstance::initObj() //TODO: use bonus system | ||||
| 				break; | ||||
| 			case 3://spell damage bonus, level dependent but calculated elsewhere | ||||
| 				bonus->type = Bonus::SPECIAL_SPELL_LEV; | ||||
| 				bonus->subtype = it->subtype; | ||||
| 				bonus->subtype = spec.subtype; | ||||
| 				speciality.addNewBonus(bonus); | ||||
| 				break; | ||||
| 			case 4://creature stat boost | ||||
| 				switch (it->subtype) | ||||
| 				switch (spec.subtype) | ||||
| 				{ | ||||
| 					case 1://attack | ||||
| 						bonus->type = Bonus::PRIMARY_SKILL; | ||||
| @@ -1029,45 +1024,44 @@ void CGHeroInstance::initObj() //TODO: use bonus system | ||||
| 						continue; | ||||
| 				} | ||||
| 				bonus->valType = Bonus::ADDITIVE_VALUE; | ||||
| 				bonus->limiter.reset(new CCreatureTypeLimiter (*VLC->creh->creatures[it->additionalinfo], true)); | ||||
| 				bonus->limiter.reset(new CCreatureTypeLimiter (*VLC->creh->creatures[spec.additionalinfo], true)); | ||||
| 				speciality.addNewBonus(bonus); | ||||
| 				break; | ||||
| 			case 5://spell damage bonus in percent | ||||
| 				bonus->type = Bonus::SPECIFIC_SPELL_DAMAGE; | ||||
| 				bonus->valType = Bonus::BASE_NUMBER; // current spell system is screwed | ||||
| 				bonus->subtype = it->subtype; //spell id | ||||
| 				bonus->subtype = spec.subtype; //spell id | ||||
| 				speciality.addNewBonus(bonus); | ||||
| 				break; | ||||
| 			case 6://damage bonus for bless (Adela) | ||||
| 				bonus->type = Bonus::SPECIAL_BLESS_DAMAGE; | ||||
| 				bonus->subtype = it->subtype; //spell id if you ever wanted to use it otherwise | ||||
| 				bonus->additionalInfo = it->additionalinfo; //damage factor | ||||
| 				bonus->subtype = spec.subtype; //spell id if you ever wanted to use it otherwise | ||||
| 				bonus->additionalInfo = spec.additionalinfo; //damage factor | ||||
| 				speciality.addNewBonus(bonus); | ||||
| 				break; | ||||
| 			case 7://maxed mastery for spell | ||||
| 				bonus->type = Bonus::MAXED_SPELL; | ||||
| 				bonus->subtype = it->subtype; //spell i | ||||
| 				bonus->subtype = spec.subtype; //spell i | ||||
| 				speciality.addNewBonus(bonus); | ||||
| 				break; | ||||
| 			case 8://peculiar spells - enchantments | ||||
| 				bonus->type = Bonus::SPECIAL_PECULIAR_ENCHANT; | ||||
| 				bonus->subtype = it->subtype; //spell id | ||||
| 				bonus->additionalInfo = it->additionalinfo;//0, 1 for Coronius | ||||
| 				bonus->subtype = spec.subtype; //spell id | ||||
| 				bonus->additionalInfo = spec.additionalinfo;//0, 1 for Coronius | ||||
| 				speciality.addNewBonus(bonus); | ||||
| 				break; | ||||
| 			case 9://upgrade creatures | ||||
| 			{ | ||||
| 				std::vector< ConstTransitivePtr<CCreature> >* creatures = &VLC->creh->creatures; | ||||
| 				const auto &creatures = VLC->creh->creatures; | ||||
| 				bonus->type = Bonus::SPECIAL_UPGRADE; | ||||
| 				bonus->subtype = it->subtype; //base id | ||||
| 				bonus->additionalInfo = it->additionalinfo; //target id | ||||
| 				bonus->subtype = spec.subtype; //base id | ||||
| 				bonus->additionalInfo = spec.additionalinfo; //target id | ||||
| 				speciality.addNewBonus(bonus); | ||||
| 				bonus = new Bonus(*bonus); | ||||
|  | ||||
| 				for (std::set<ui32>::iterator i = (*creatures)[it->subtype]->upgrades.begin(); | ||||
| 					i != (*creatures)[it->subtype]->upgrades.end(); i++) | ||||
| 				BOOST_FOREACH(auto cre_id, creatures[spec.subtype]->upgrades) | ||||
| 				{ | ||||
| 					bonus->subtype = *i; //propagate for regular upgrades of base creature | ||||
| 					bonus->subtype = cre_id; //propagate for regular upgrades of base creature | ||||
| 					speciality.addNewBonus(bonus); | ||||
| 					bonus = new Bonus(*bonus); | ||||
| 				} | ||||
| @@ -1076,11 +1070,11 @@ void CGHeroInstance::initObj() //TODO: use bonus system | ||||
| 			} | ||||
| 			case 10://resource generation | ||||
| 				bonus->type = Bonus::GENERATE_RESOURCE; | ||||
| 				bonus->subtype = it->subtype; | ||||
| 				bonus->subtype = spec.subtype; | ||||
| 				speciality.addNewBonus(bonus); | ||||
| 				break; | ||||
| 			case 11://starting skill with mastery (Adrienne) | ||||
| 				cb->changeSecSkill(id, it->val, it->additionalinfo); //simply give it and forget | ||||
| 				cb->changeSecSkill(id, spec.val, spec.additionalinfo); //simply give it and forget | ||||
| 				break; | ||||
| 			case 12://army speed | ||||
| 				bonus->type = Bonus::STACKS_SPEED; | ||||
| @@ -1089,7 +1083,7 @@ void CGHeroInstance::initObj() //TODO: use bonus system | ||||
| 			case 13://Dragon bonuses (Mutare) | ||||
| 				bonus->type = Bonus::PRIMARY_SKILL; | ||||
| 				bonus->valType = Bonus::ADDITIVE_VALUE; | ||||
| 				switch (it->subtype) | ||||
| 				switch (spec.subtype) | ||||
| 				{ | ||||
| 					case 1: | ||||
| 						bonus->subtype = PrimarySkill::ATTACK; | ||||
| @@ -1106,8 +1100,8 @@ void CGHeroInstance::initObj() //TODO: use bonus system | ||||
| 		} | ||||
| 	} | ||||
| 	//initialize bonuses | ||||
| 	for (std::vector<std::pair<ui8,ui8> >::iterator it = secSkills.begin(); it != secSkills.end(); it++) | ||||
| 		updateSkill(it->first, it->second); | ||||
| 	BOOST_FOREACH(auto skill_info, secSkills) | ||||
| 		updateSkill(skill_info.first, skill_info.second); | ||||
| 	UpdateSpeciality(); | ||||
|  | ||||
| 	mana = manaLimit(); //after all bonuses are taken into account, make sure this line is the last one | ||||
| @@ -1117,7 +1111,7 @@ void CGHeroInstance::UpdateSpeciality() //TODO: calculate special value of bonus | ||||
| { | ||||
| 	if (speciality.growthsWithLevel) | ||||
| 	{ | ||||
| 		std::vector< ConstTransitivePtr<CCreature> > & creatures = VLC->creh->creatures; | ||||
| 		const auto &creatures = VLC->creh->creatures; | ||||
|  | ||||
| 		BOOST_FOREACH(Bonus *it, speciality.getBonusList()) | ||||
| 		{ | ||||
| @@ -2535,7 +2529,7 @@ void CGVisitableOPH::treeSelected( int heroID, int resType, int resVal, TExpType | ||||
| } | ||||
| void CGVisitableOPH::onNAHeroVisit(int heroID, bool alreadyVisited) const | ||||
| { | ||||
| 	Component::EComponentType id = (Component::EComponentType)0; | ||||
| 	Component::EComponentType c_id = Component::PRIM_SKILL; //most used here | ||||
| 	int subid=0, ot=0, sound = 0; | ||||
| 	TExpType val=1; | ||||
| 	switch(ID) | ||||
| @@ -2546,33 +2540,33 @@ void CGVisitableOPH::onNAHeroVisit(int heroID, bool alreadyVisited) const | ||||
| 		break; | ||||
| 	case Obj::MERCENARY_CAMP: | ||||
| 		sound = soundBase::NOMAD; | ||||
| 		subid=0; | ||||
| 		subid=PrimarySkill::ATTACK; | ||||
| 		ot=80; | ||||
| 		break; | ||||
| 	case Obj::MARLETTO_TOWER: | ||||
| 		sound = soundBase::NOMAD; | ||||
| 		subid=1; | ||||
| 		subid=PrimarySkill::DEFENSE; | ||||
| 		ot=39; | ||||
| 		break; | ||||
| 	case Obj::STAR_AXIS: | ||||
| 		sound = soundBase::gazebo; | ||||
| 		subid=2; | ||||
| 		subid=PrimarySkill::SPELL_POWER; | ||||
| 		ot=100; | ||||
| 		break; | ||||
| 	case Obj::GARDEN_OF_REVELATION: | ||||
| 		sound = soundBase::GETPROTECTION; | ||||
| 		subid=3; | ||||
| 		subid=PrimarySkill::KNOWLEDGE; | ||||
| 		ot=59; | ||||
| 		break; | ||||
| 	case Obj::LEARNING_STONE: | ||||
| 		sound = soundBase::gazebo; | ||||
| 		id=Component::EXPERIENCE; | ||||
| 		c_id=Component::EXPERIENCE; | ||||
| 		ot=143; | ||||
| 		val=1000; | ||||
| 		break; | ||||
| 	case Obj::TREE_OF_KNOWLEDGE: | ||||
| 		sound = soundBase::gazebo; | ||||
| 		id = Component::EXPERIENCE; | ||||
| 		c_id = Component::EXPERIENCE; | ||||
| 		subid = 1; | ||||
| 		ot = 147; | ||||
| 		val = 1; | ||||
| @@ -2586,6 +2580,7 @@ void CGVisitableOPH::onNAHeroVisit(int heroID, bool alreadyVisited) const | ||||
| 		ot = 71; | ||||
| 		break; | ||||
| 	case Obj::SCHOOL_OF_WAR: | ||||
| 		c_id=Component::PRIM_SKILL; | ||||
| 		sound = soundBase::MILITARY; | ||||
| 		ot = 158; | ||||
| 		break; | ||||
| @@ -2599,8 +2594,8 @@ void CGVisitableOPH::onNAHeroVisit(int heroID, bool alreadyVisited) const | ||||
| 				BlockingDialog sd(false,true); | ||||
| 				sd.soundID = sound; | ||||
| 				sd.text.addTxt(MetaString::ADVOB_TXT,ot); | ||||
| 				sd.components.push_back(Component(Component::PRIM_SKILL, PrimarySkill::ATTACK, 2, 0)); | ||||
| 				sd.components.push_back(Component(Component::PRIM_SKILL, PrimarySkill::DEFENSE, 2, 0)); | ||||
| 				sd.components.push_back(Component(c_id, PrimarySkill::ATTACK, 2, 0)); | ||||
| 				sd.components.push_back(Component(c_id, PrimarySkill::DEFENSE, 2, 0)); | ||||
| 				sd.player = cb->getOwner(heroID); | ||||
| 				cb->showBlockingDialog(&sd,boost::bind(&CGVisitableOPH::arenaSelected,this,heroID,_1)); | ||||
| 				return; | ||||
| @@ -2613,7 +2608,7 @@ void CGVisitableOPH::onNAHeroVisit(int heroID, bool alreadyVisited) const | ||||
| 				cb->changePrimSkill(heroID,subid,val); | ||||
| 				InfoWindow iw; | ||||
| 				iw.soundID = sound; | ||||
| 				iw.components.push_back(Component(Component::PRIM_SKILL, subid,val,0)); | ||||
| 				iw.components.push_back(Component(c_id, subid,val,0)); | ||||
| 				iw.text.addTxt(MetaString::ADVOB_TXT,ot); | ||||
| 				iw.player = cb->getOwner(heroID); | ||||
| 				cb->showInfoDialog(&iw); | ||||
| @@ -2625,10 +2620,9 @@ void CGVisitableOPH::onNAHeroVisit(int heroID, bool alreadyVisited) const | ||||
| 				val = h->calculateXp(val); | ||||
| 				InfoWindow iw; | ||||
| 				iw.soundID = sound; | ||||
| 				iw.components.push_back(Component(id,subid,val,0)); | ||||
| 				iw.components.push_back(Component(c_id,subid,val,0)); | ||||
| 				iw.player = cb->getOwner(heroID); | ||||
| 				iw.text.addTxt(MetaString::ADVOB_TXT,ot); | ||||
| 				iw.soundID = soundBase::gazebo; | ||||
| 				cb->showInfoDialog(&iw); | ||||
| 				cb->changePrimSkill(heroID,4,val); | ||||
| 				break; | ||||
| @@ -2639,10 +2633,10 @@ void CGVisitableOPH::onNAHeroVisit(int heroID, bool alreadyVisited) const | ||||
| 				val = VLC->heroh->reqExp(h->level+val) - VLC->heroh->reqExp(h->level); | ||||
| 				if(!ttype) | ||||
| 				{ | ||||
| 					cb->setObjProperty(this->id, ObjProperty::VISITORS, heroID); //add to the visitors | ||||
| 					cb->setObjProperty(id, ObjProperty::VISITORS, heroID); //add to the visitors | ||||
| 					InfoWindow iw; | ||||
| 					iw.soundID = sound; | ||||
| 					iw.components.push_back(Component(id,subid,1,0)); | ||||
| 					iw.components.push_back(Component(c_id,subid,1,0)); | ||||
| 					iw.player = cb->getOwner(heroID); | ||||
| 					iw.text.addTxt(MetaString::ADVOB_TXT,148); | ||||
| 					cb->showInfoDialog(&iw); | ||||
| @@ -2692,11 +2686,11 @@ void CGVisitableOPH::onNAHeroVisit(int heroID, bool alreadyVisited) const | ||||
| 				} | ||||
| 				else | ||||
| 				{ | ||||
| 					cb->setObjProperty(this->id, ObjProperty::VISITORS, heroID); //add to the visitors | ||||
| 					cb->changePrimSkill(heroID,0,2); | ||||
| 					cb->changePrimSkill(heroID,1,2); | ||||
| 					cb->changePrimSkill(heroID,2,2); | ||||
| 					cb->changePrimSkill(heroID,3,2); | ||||
| 					cb->setObjProperty(id, ObjProperty::VISITORS, heroID); //add to the visitors | ||||
| 					cb->changePrimSkill(heroID,PrimarySkill::ATTACK,2); | ||||
| 					cb->changePrimSkill(heroID,PrimarySkill::DEFENSE,2); | ||||
| 					cb->changePrimSkill(heroID,PrimarySkill::KNOWLEDGE,2); | ||||
| 					cb->changePrimSkill(heroID,PrimarySkill::SPELL_POWER,2); | ||||
| 				} | ||||
| 				showInfoDialog(h,txt_id,sound); | ||||
| 				break; | ||||
| @@ -2715,8 +2709,8 @@ void CGVisitableOPH::onNAHeroVisit(int heroID, bool alreadyVisited) const | ||||
| 					sd.soundID = sound; | ||||
| 					sd.player = cb->getOwner(heroID); | ||||
| 					sd.text.addTxt(MetaString::ADVOB_TXT,ot); | ||||
| 					sd.components.push_back(Component(Component::PRIM_SKILL, skill, +1, 0)); | ||||
| 					sd.components.push_back(Component(Component::PRIM_SKILL, skill+1, +1, 0)); | ||||
| 					sd.components.push_back(Component(c_id, skill, +1, 0)); | ||||
| 					sd.components.push_back(Component(c_id, skill+1, +1, 0)); | ||||
| 					cb->showBlockingDialog(&sd,boost::bind(&CGVisitableOPH::schoolSelected,this,heroID,_1)); | ||||
| 				} | ||||
| 			} | ||||
| @@ -3933,7 +3927,6 @@ void CGPickable::initObj() | ||||
|  | ||||
| void CGPickable::onHeroVisit( const CGHeroInstance * h ) const | ||||
| { | ||||
|  | ||||
| 	switch(ID) | ||||
| 	{ | ||||
| 	case Obj::CAMPFIRE: | ||||
| @@ -3951,8 +3944,8 @@ void CGPickable::onHeroVisit( const CGHeroInstance * h ) const | ||||
| 		} | ||||
| 	case Obj::FLOTSAM: | ||||
| 		{ | ||||
| 			cb->giveResource(h->tempOwner,0,val1); //wood | ||||
| 			cb->giveResource(h->tempOwner,6,val2);//gold | ||||
| 			cb->giveResource(h->tempOwner,Res::WOOD,val1); //wood | ||||
| 			cb->giveResource(h->tempOwner,Res::GOLD,val2);//gold | ||||
| 			InfoWindow iw; | ||||
| 			iw.soundID = soundBase::GENIE; | ||||
| 			iw.player = h->tempOwner; | ||||
| @@ -3989,7 +3982,6 @@ void CGPickable::onHeroVisit( const CGHeroInstance * h ) const | ||||
| 		} | ||||
| 	case Obj::SHIPWRECK_SURVIVOR: | ||||
| 		{ | ||||
| 			//TODO: what if no space in backpack? | ||||
| 			InfoWindow iw; | ||||
| 			iw.soundID = soundBase::experience; | ||||
| 			iw.player = h->tempOwner; | ||||
| @@ -4491,7 +4483,7 @@ void CGSeerHut::getCompletionText(MetaString &text, std::vector<Component> &comp | ||||
| 	quest->getCompletionText (text, components, isCustom, h); | ||||
| 	switch (rewardType) | ||||
| 	{ | ||||
| 		case 1: components.push_back(Component (Component::EXPERIENCE, 0, rVal*(100+h->getSecSkillLevel(CGHeroInstance::LEARNING)*5)/100.0, 0)); | ||||
| 		case 1: components.push_back(Component (Component::EXPERIENCE, 0, h->calculateXp(rVal), 0)); | ||||
| 			break; | ||||
| 		case 2: components.push_back(Component (Component::PRIM_SKILL, 5, rVal, 0)); | ||||
| 			break; | ||||
| @@ -4799,6 +4791,7 @@ void CGBonusingObject::onHeroVisit( const CGHeroInstance * h ) const | ||||
| 	bool visited = h->hasBonusFrom(Bonus::OBJECT,ID); | ||||
| 	int messageID=0; | ||||
| 	int bonusMove = 0, sound = -1; | ||||
| 	ui32 descr_id = 0; | ||||
| 	InfoWindow iw; | ||||
| 	iw.player = h->tempOwner; | ||||
| 	GiveBonus gbonus; | ||||
| @@ -4817,14 +4810,14 @@ void CGBonusingObject::onHeroVisit( const CGHeroInstance * h ) const | ||||
| 		sound = soundBase::MORALE; | ||||
| 		gbonus.bonus.type = Bonus::MORALE; | ||||
| 		gbonus.bonus.val = +1; | ||||
| 		gbonus.bdescr <<  std::pair<ui8,ui32>(6,94); | ||||
| 		descr_id = 94; | ||||
| 		break; | ||||
| 	case Obj::SWAN_POND: | ||||
| 		messageID = 29; | ||||
| 		sound = soundBase::LUCK; | ||||
| 		gbonus.bonus.type = Bonus::LUCK; | ||||
| 		gbonus.bonus.val = 2; | ||||
| 		gbonus.bdescr <<  std::pair<ui8,ui32>(6,67); | ||||
| 		descr_id = 67; | ||||
| 		bonusMove = -h->movement; | ||||
| 		break; | ||||
| 	case Obj::FAERIE_RING: | ||||
| @@ -4832,14 +4825,14 @@ void CGBonusingObject::onHeroVisit( const CGHeroInstance * h ) const | ||||
| 		sound = soundBase::LUCK; | ||||
| 		gbonus.bonus.type = Bonus::LUCK; | ||||
| 		gbonus.bonus.val = 1; | ||||
| 		gbonus.bdescr <<  std::pair<ui8,ui32>(6,71); | ||||
| 		descr_id = 71; | ||||
| 		break; | ||||
| 	case Obj::FOUNTAIN_OF_FORTUNE: | ||||
| 		messageID = 55; | ||||
| 		sound = soundBase::LUCK; | ||||
| 		gbonus.bonus.type = Bonus::LUCK; | ||||
| 		gbonus.bonus.val = rand()%5 - 1; | ||||
| 		gbonus.bdescr <<  std::pair<ui8,ui32>(6,69); | ||||
| 		descr_id = 69; | ||||
| 		gbonus.bdescr.addReplacement((gbonus.bonus.val<0 ? "-" : "+") + boost::lexical_cast<std::string>(gbonus.bonus.val)); | ||||
| 		break; | ||||
| 	case Obj::IDOL_OF_FORTUNE: | ||||
| @@ -4847,7 +4840,7 @@ void CGBonusingObject::onHeroVisit( const CGHeroInstance * h ) const | ||||
| 		sound = soundBase::experience; | ||||
|  | ||||
| 		gbonus.bonus.val = 1; | ||||
| 		gbonus.bdescr <<  std::pair<ui8,ui32>(6,68); | ||||
| 		descr_id = 68; | ||||
| 		if(cb->getDate(1) == 7) //7th day of week | ||||
| 		{ | ||||
| 			gbonus.bonus.type = Bonus::MORALE; | ||||
| @@ -4865,14 +4858,14 @@ void CGBonusingObject::onHeroVisit( const CGHeroInstance * h ) const | ||||
| 		sound = soundBase::LUCK; | ||||
| 		gbonus.bonus.type = Bonus::LUCK; | ||||
| 		gbonus.bonus.val = 1; | ||||
| 		gbonus.bdescr <<  std::pair<ui8,ui32>(6,72); | ||||
| 		descr_id = 72; | ||||
| 		break; | ||||
| 	case Obj::RALLY_FLAG: | ||||
| 		sound = soundBase::MORALE; | ||||
| 		messageID = 111; | ||||
| 		gbonus.bonus.type = Bonus::MORALE; | ||||
| 		gbonus.bonus.val = 1; | ||||
| 		gbonus.bdescr <<  std::pair<ui8,ui32>(6,102); | ||||
| 		descr_id = 102; | ||||
|  | ||||
| 		second = true; | ||||
| 		secondBonus = gbonus.bonus; | ||||
| @@ -4884,7 +4877,7 @@ void CGBonusingObject::onHeroVisit( const CGHeroInstance * h ) const | ||||
| 		messageID = 95; | ||||
| 		gbonus.bonus.type = Bonus::MORALE; | ||||
| 		gbonus.bonus.val = 1; | ||||
| 		gbonus.bdescr <<  std::pair<ui8,ui32>(6,95); | ||||
| 		descr_id = 95; | ||||
| 		bonusMove = 800; | ||||
| 		break; | ||||
| 	case Obj::TEMPLE: | ||||
| @@ -4894,12 +4887,12 @@ void CGBonusingObject::onHeroVisit( const CGHeroInstance * h ) const | ||||
| 		if(cb->getDate(1)==7) //sunday | ||||
| 		{ | ||||
| 			gbonus.bonus.val = 2; | ||||
| 			gbonus.bdescr <<  std::pair<ui8,ui32>(6,97); | ||||
| 			descr_id = 97; | ||||
| 		} | ||||
| 		else | ||||
| 		{ | ||||
| 			gbonus.bonus.val = 1; | ||||
| 			gbonus.bdescr <<  std::pair<ui8,ui32>(6,96); | ||||
| 			descr_id = 96; | ||||
| 		} | ||||
| 		break; | ||||
| 	case Obj::WATERING_HOLE: | ||||
| @@ -4907,7 +4900,7 @@ void CGBonusingObject::onHeroVisit( const CGHeroInstance * h ) const | ||||
| 		messageID = 166; | ||||
| 		gbonus.bonus.type = Bonus::MORALE; | ||||
| 		gbonus.bonus.val = 1; | ||||
| 		gbonus.bdescr <<  std::pair<ui8,ui32>(6,100); | ||||
| 		descr_id = 100; | ||||
| 		bonusMove = 400; | ||||
| 		break; | ||||
| 	case Obj::FOUNTAIN_OF_YOUTH: | ||||
| @@ -4915,7 +4908,7 @@ void CGBonusingObject::onHeroVisit( const CGHeroInstance * h ) const | ||||
| 		messageID = 57; | ||||
| 		gbonus.bonus.type = Bonus::MORALE; | ||||
| 		gbonus.bonus.val = 1; | ||||
| 		gbonus.bdescr <<  std::pair<ui8,ui32>(6,103); | ||||
| 		descr_id = 103; | ||||
| 		bonusMove = 400; | ||||
| 		break; | ||||
| 	case Obj::STABLES: | ||||
| @@ -4942,9 +4935,11 @@ void CGBonusingObject::onHeroVisit( const CGHeroInstance * h ) const | ||||
| 		gbonus.bonus.val = 600; | ||||
| 		bonusMove = 600; | ||||
| 		gbonus.bonus.duration = Bonus::ONE_WEEK; | ||||
| 		gbonus.bdescr <<  std::pair<ui8,ui32>(6, 100); | ||||
| 		//gbonus.bdescr <<  std::pair<ui8,ui32>(6, 100); | ||||
| 		break; | ||||
| 	} | ||||
| 	if (descr_id != 0) | ||||
| 		gbonus.bdescr.addTxt(MetaString::ARRAY_TXT,descr_id); | ||||
| 	assert(messageID); | ||||
| 	if(visited) | ||||
| 	{ | ||||
| @@ -6004,7 +5999,7 @@ void CBank::onHeroVisit (const CGHeroInstance * h) const | ||||
| 		BlockingDialog bd (true, false); | ||||
| 		bd.player = h->getOwner(); | ||||
| 		bd.soundID = soundBase::ROGUE; | ||||
| 		bd.text << VLC->generaltexth->advobtxt[banktext]; | ||||
| 		bd.text.addTxt(MetaString::ADVOB_TXT,banktext); | ||||
| 		if (ID == Obj::CREATURE_BANK) | ||||
| 			bd.text.addReplacement(VLC->objh->creBanksNames[index]); | ||||
| 		cb->showBlockingDialog (&bd, boost::bind (&CBank::fightGuards, this, h, _1)); | ||||
|   | ||||
		Reference in New Issue
	
	Block a user