Bazaar developer reference

CustomMods::getOption(string, int)

Defined in
CustomMods.cpp, line 221
Class
CustomMods
Hook name
CivHooks::CustomMods_getOption_with_string_int

Hooks

static bool BeforeCustomMods_getOption_with_string_int(CustomMods* self, string sOption, int defValue, int& result);static void AfterCustomMods_getOption_with_string_int(CustomMods* self, string sOption, int defValue, int& result);static int ReplaceCustomMods_getOption_with_string_int(int (*original)(CustomMods*, string, int), CustomMods* self, string sOption, int defValue);CivRegisterBefore<CivHooks::CustomMods_getOption_with_string_int>(host, &BeforeCustomMods_getOption_with_string_int);CivRegisterAfter<CivHooks::CustomMods_getOption_with_string_int>(host, &AfterCustomMods_getOption_with_string_int);CivRegisterReplace<CivHooks::CustomMods_getOption_with_string_int>(host, &ReplaceCustomMods_getOption_with_string_int);

Code

221int CustomMods::getOption(string sOption, int defValue) {222	if (!m_bInit) {223		const char* szBadPrefix = "MOD_";224225		Database::Results kResults;226		DB.SelectAll(kResults, MOD_DB_TABLE);227228		while (kResults.Step()) {229			const char* szName = kResults.GetText(MOD_DB_COL_NAME);230			const int iDbUpdates = kResults.GetInt(MOD_DB_COL_DBUPDATES);231			int iValue = kResults.GetInt(MOD_DB_COL_VALUE);232233			bool bPrefixError = (strncmp(szName, szBadPrefix, strlen(szBadPrefix)) == 0);234235			if (iValue && iDbUpdates) {236				Database::Results kUpdates;237				char szQuery[512] = {0};238239				// Did the required mods to the database occur?  We'll assume they didn't, unless proven otherwise!240				bool bOK = false;241242				sprintf_s(szQuery, "Name='%s' AND Value=1", szName);243				if (DB.SelectWhere(kUpdates, MOD_DB_UPDATES, szQuery)) {244					if (kUpdates.Step()) {245						// BINGO!  We have our updates246						bOK = true;247					} else {248						// All is not lost as there could be BOTH xml and sql updates249						sprintf_s(szQuery, "Name='%s_SQL' AND Value=1", szName);250						if (DB.SelectWhere(kUpdates, MOD_DB_UPDATES, szQuery)) {251							if (kUpdates.Step()) {252								sprintf_s(szQuery, "Name='%s_XML' AND Value=1", szName);253								if (DB.SelectWhere(kUpdates, MOD_DB_UPDATES, szQuery)) {254									if (kUpdates.Step()) {255										// BINGO!  We have BOTH our updates256										bOK = true;257									}258								}259							}260						}261					}262				}263264				if (bOK) {265					CUSTOMLOG("%s: %s appears to have the required database updates", (bPrefixError ? "PREFIX ERROR" : "Cache"), szName);266				} else {267					CUSTOMLOG("%s: %s has missing database updates!", (bPrefixError ? "PREFIX ERROR" : "Cache"), szName);268					iValue = 0;269				}270			}271272			CUSTOMLOG("%s: %s = %d", (bPrefixError ? "PREFIX ERROR" : "Cache"), szName, iValue);273			m_options[string(szName)] = iValue;274		}275276		MOD_OPT_CACHE(GLOBAL_EARLY_COOP_WAR_LOCK);277		MOD_OPT_CACHE(GLOBAL_STACKING_RULES);278		MOD_OPT_CACHE(GLOBAL_BREAK_CIVILIAN_1UPT);279		MOD_OPT_CACHE(GLOBAL_BREAK_CIVILIAN_RESTRICTIONS);280		MOD_OPT_CACHE(GLOBAL_LOCAL_GENERALS);281		MOD_OPT_CACHE(GLOBAL_SEPARATE_GREAT_ADMIRAL);282		MOD_OPT_CACHE(GLOBAL_PROMOTION_CLASSES);283		MOD_OPT_CACHE(GLOBAL_PASSABLE_FORTS);284		MOD_OPT_CACHE(GLOBAL_PASSABLE_FORTS_ANY);285		MOD_OPT_CACHE(GLOBAL_ANYTIME_GOODY_GOLD);286		MOD_OPT_CACHE(GLOBAL_CITY_FOREST_BONUS);287		MOD_OPT_CACHE(GLOBAL_CITY_JUNGLE_BONUS);288		MOD_OPT_CACHE(GLOBAL_CITY_WORKING);289		MOD_OPT_CACHE(GLOBAL_CITY_AUTOMATON_WORKERS);290		MOD_OPT_CACHE(GLOBAL_RELOCATION);291		MOD_OPT_CACHE(GLOBAL_ALPINE_PASSES);292		MOD_OPT_CACHE(GLOBAL_CS_GIFT_SHIPS);293		MOD_OPT_CACHE(GLOBAL_CS_UPGRADES);294		MOD_OPT_CACHE(GLOBAL_CS_RAZE_RARELY);295		MOD_OPT_CACHE(GLOBAL_CS_LIBERATE_AFTER_BUYOUT);296		MOD_OPT_CACHE(GLOBAL_CS_GIFTS);297		MOD_OPT_CACHE(GLOBAL_CS_GIFTS_LOCAL_XP);298		MOD_OPT_CACHE(GLOBAL_CS_OVERSEAS_TERRITORY);299		MOD_OPT_CACHE(GLOBAL_CS_NO_ALLIED_SKIRMISHES);300		MOD_OPT_CACHE(GLOBAL_VENICE_KEEPS_RESOURCES);301		MOD_OPT_CACHE(GLOBAL_CS_MARRIAGE_KEEPS_RESOURCES);302		MOD_OPT_CACHE(GLOBAL_NO_FOLLOWUP);303		MOD_OPT_CACHE(GLOBAL_NO_FOLLOWUP_FROM_CITIES);304		MOD_OPT_CACHE(GLOBAL_CAPTURE_AFTER_ATTACKING);305		MOD_OPT_CACHE(GLOBAL_NO_OCEAN_PLUNDERING);306		MOD_OPT_CACHE(GLOBAL_NO_CONQUERED_SPACESHIPS);307		MOD_OPT_CACHE(GLOBAL_ADJACENT_BLOCKADES);308		MOD_OPT_CACHE(GLOBAL_ALLIES_BLOCK_BLOCKADES);309		MOD_OPT_CACHE(GLOBAL_SHORT_EMBARKED_BLOCKADES);310		MOD_OPT_CACHE(GLOBAL_GRATEFUL_SETTLERS);311		MOD_OPT_CACHE(GLOBAL_RELIGIOUS_SETTLERS);312		MOD_OPT_CACHE(GLOBAL_QUICK_ROUTES);313		MOD_OPT_CACHE(GLOBAL_SUBS_UNDER_ICE_IMMUNITY);314		MOD_OPT_CACHE(GLOBAL_PARATROOPS_MOVEMENT);315		MOD_OPT_CACHE(GLOBAL_PARATROOPS_AA_DAMAGE);316		MOD_OPT_CACHE(GLOBAL_NUKES_MELT_ICE); 317		MOD_OPT_CACHE(GLOBAL_GREATWORK_YIELDTYPES); 318		MOD_OPT_CACHE(GLOBAL_NO_LOST_GREATWORKS); 319		MOD_OPT_CACHE(GLOBAL_EXCLUDE_FROM_GIFTS);320		MOD_OPT_CACHE(GLOBAL_MOVE_AFTER_UPGRADE);321		MOD_OPT_CACHE(GLOBAL_CANNOT_EMBARK);322		MOD_OPT_CACHE(GLOBAL_SEPARATE_GP_COUNTERS);323		MOD_OPT_CACHE(GLOBAL_TRULY_FREE_GP);324		325		MOD_OPT_CACHE(DIPLOMACY_BY_NUMBERS);326		MOD_OPT_CACHE(DIPLOMACY_TECH_BONUSES);327		MOD_OPT_CACHE(DIPLOMACY_AUTO_DENOUNCE);328		MOD_OPT_CACHE(DIPLOMACY_STFU);329		MOD_OPT_CACHE(DIPLOMACY_NO_LEADERHEADS);330		331		MOD_OPT_CACHE(TRAITS_GG_FROM_BARBARIANS);332		MOD_OPT_CACHE(TRAITS_CROSSES_ICE);333		MOD_OPT_CACHE(TRAITS_CITY_WORKING);334		MOD_OPT_CACHE(TRAITS_CITY_AUTOMATON_WORKERS);335		MOD_OPT_CACHE(TRAITS_OTHER_PREREQS);336		MOD_OPT_CACHE(TRAITS_ANY_BELIEF);337		MOD_OPT_CACHE(TRAITS_TRADE_ROUTE_BONUSES);338		MOD_OPT_CACHE(TRAITS_EXTRA_SUPPLY);339340		MOD_OPT_CACHE(POLICIES_CITY_WORKING);341		MOD_OPT_CACHE(POLICIES_CITY_AUTOMATON_WORKERS);342343		MOD_OPT_CACHE(TECHS_CITY_WORKING);344		MOD_OPT_CACHE(TECHS_CITY_AUTOMATON_WORKERS);345346		MOD_OPT_CACHE(PROMOTIONS_AURA_CHANGE);347		MOD_OPT_CACHE(PROMOTIONS_GG_FROM_BARBARIANS);348		MOD_OPT_CACHE(PROMOTIONS_VARIABLE_RECON);349		MOD_OPT_CACHE(PROMOTIONS_CROSS_MOUNTAINS);350		MOD_OPT_CACHE(PROMOTIONS_CROSS_OCEANS);351		MOD_OPT_CACHE(PROMOTIONS_CROSS_ICE);352		MOD_OPT_CACHE(PROMOTIONS_HALF_MOVE);353		MOD_OPT_CACHE(PROMOTIONS_DEEP_WATER_EMBARKATION);354		MOD_OPT_CACHE(PROMOTIONS_FLAGSHIP);355		MOD_OPT_CACHE(PROMOTIONS_UNIT_NAMING);356		MOD_OPT_CACHE(PROMOTIONS_IMPROVEMENT_BONUS);357358		MOD_OPT_CACHE(UI_CITY_PRODUCTION);359		MOD_OPT_CACHE(UI_CITY_EXPANSION);360361		MOD_OPT_CACHE(BUILDINGS_NW_EXCLUDE_RAZING);362		MOD_OPT_CACHE(BUILDINGS_PRO_RATA_PURCHASE);363		MOD_OPT_CACHE(BUILDINGS_CITY_WORKING);364		MOD_OPT_CACHE(BUILDINGS_CITY_AUTOMATON_WORKERS);365366		MOD_OPT_CACHE(TRADE_ROUTE_SCALING);367		MOD_OPT_CACHE(TRADE_WONDER_RESOURCE_ROUTES);368369		MOD_OPT_CACHE(UNITS_NO_SUPPLY);370		MOD_OPT_CACHE(UNITS_MAX_HP);371		MOD_OPT_CACHE(UNITS_XP_TIMES_100);372		MOD_OPT_CACHE(UNITS_LOCAL_WORKERS);373		MOD_OPT_CACHE(UNITS_HOVERING_LAND_ONLY_HEAL);374		MOD_OPT_CACHE(UNITS_HOVERING_COASTAL_ATTACKS);375376		MOD_OPT_CACHE(RELIGION_NO_PREFERRENCES);377		MOD_OPT_CACHE(RELIGION_RANDOMISE);378		MOD_OPT_CACHE(RELIGION_CONVERSION_MODIFIERS);379		MOD_OPT_CACHE(RELIGION_KEEP_PROPHET_OVERFLOW);380		MOD_OPT_CACHE(RELIGION_ALLIED_INQUISITORS);381		MOD_OPT_CACHE(RELIGION_RECURRING_PURCHASE_NOTIFIY);382		MOD_OPT_CACHE(RELIGION_PLOT_YIELDS);383		MOD_OPT_CACHE(RELIGION_POLICY_BRANCH_FAITH_GP);384		MOD_OPT_CACHE(RELIGION_LOCAL_RELIGIONS);385386		MOD_OPT_CACHE(PROCESS_STOCKPILE);387388		MOD_OPT_CACHE(AI_NO_ZERO_VALUE_TRADE_ITEMS);389		MOD_OPT_CACHE(AI_SECONDARY_WORKERS);390		MOD_OPT_CACHE(AI_SECONDARY_SETTLERS);391		MOD_OPT_CACHE(AI_GREAT_PEOPLE_CHOICES);392		MOD_OPT_CACHE(AI_MP_DIPLOMACY);393		MOD_OPT_CACHE(AI_SMART_V3);394		395		MOD_OPT_CACHE(EVENTS_TERRAFORMING);396		MOD_OPT_CACHE(EVENTS_TILE_IMPROVEMENTS);397		MOD_OPT_CACHE(EVENTS_TILE_REVEALED);398		MOD_OPT_CACHE(EVENTS_CIRCUMNAVIGATION);399		MOD_OPT_CACHE(EVENTS_NEW_ERA);400		MOD_OPT_CACHE(EVENTS_NW_DISCOVERY);401		MOD_OPT_CACHE(EVENTS_DIPLO_EVENTS);402		MOD_OPT_CACHE(EVENTS_DIPLO_MODIFIERS);403		MOD_OPT_CACHE(EVENTS_MINORS);404		MOD_OPT_CACHE(EVENTS_MINORS_GIFTS);405		MOD_OPT_CACHE(EVENTS_MINORS_INTERACTION);406		MOD_OPT_CACHE(EVENTS_QUESTS);407		MOD_OPT_CACHE(EVENTS_BARBARIANS);408		MOD_OPT_CACHE(EVENTS_GOODY_CHOICE);409		MOD_OPT_CACHE(EVENTS_GOODY_TECH);410		MOD_OPT_CACHE(EVENTS_AI_OVERRIDE_TECH);411		MOD_OPT_CACHE(EVENTS_GREAT_PEOPLE);412		MOD_OPT_CACHE(EVENTS_FOUND_RELIGION);413		MOD_OPT_CACHE(EVENTS_ACQUIRE_BELIEFS);414		MOD_OPT_CACHE(EVENTS_RELIGION);415		MOD_OPT_CACHE(EVENTS_ESPIONAGE);416		MOD_OPT_CACHE(EVENTS_PLOT);417		MOD_OPT_CACHE(EVENTS_PLAYER_TURN);418		MOD_OPT_CACHE(EVENTS_GOLDEN_AGE);419		MOD_OPT_CACHE(EVENTS_CITY);420		MOD_OPT_CACHE(EVENTS_CITY_CAPITAL);421		MOD_OPT_CACHE(EVENTS_CITY_BORDERS);422		MOD_OPT_CACHE(EVENTS_CITY_FOUNDING);423		MOD_OPT_CACHE(EVENTS_LIBERATION);424		MOD_OPT_CACHE(EVENTS_CITY_RAZING);425		MOD_OPT_CACHE(EVENTS_CITY_AIRLIFT);426		MOD_OPT_CACHE(EVENTS_CITY_BOMBARD);427		MOD_OPT_CACHE(EVENTS_CITY_CONNECTIONS);428		MOD_OPT_CACHE(EVENTS_AREA_RESOURCES);429		MOD_OPT_CACHE(EVENTS_PARADROPS);430		MOD_OPT_CACHE(EVENTS_UNIT_RANGEATTACK);431		MOD_OPT_CACHE(EVENTS_UNIT_CREATED);432		MOD_OPT_CACHE(EVENTS_UNIT_FOUNDED);433		MOD_OPT_CACHE(EVENTS_UNIT_PREKILL);434		MOD_OPT_CACHE(EVENTS_UNIT_CAPTURE);435		MOD_OPT_CACHE(EVENTS_CAN_MOVE_INTO);436		MOD_OPT_CACHE(EVENTS_UNIT_ACTIONS);437		MOD_OPT_CACHE(EVENTS_UNIT_UPGRADES);438		MOD_OPT_CACHE(EVENTS_UNIT_DATA);439		MOD_OPT_CACHE(EVENTS_WAR_AND_PEACE);440		MOD_OPT_CACHE(EVENTS_TRADE_ROUTES);441		MOD_OPT_CACHE(EVENTS_TRADE_ROUTE_PLUNDERED);442		MOD_OPT_CACHE(EVENTS_RESOLUTIONS);443		MOD_OPT_CACHE(EVENTS_IDEOLOGIES);444		MOD_OPT_CACHE(EVENTS_NUCLEAR_DETONATION);445		MOD_OPT_CACHE(EVENTS_AIRLIFT);446		MOD_OPT_CACHE(EVENTS_REBASE);447		MOD_OPT_CACHE(EVENTS_COMMAND);448		MOD_OPT_CACHE(EVENTS_CUSTOM_MISSIONS);449		MOD_OPT_CACHE(EVENTS_BATTLES);450		MOD_OPT_CACHE(EVENTS_BATTLES_DAMAGE);451452		MOD_OPT_CACHE(API_PLAYER_LOGS);453		MOD_OPT_CACHE(API_ESPIONAGE);454		MOD_OPT_CACHE(API_TRADEROUTES);455		MOD_OPT_CACHE(API_RELIGION);456		MOD_OPT_CACHE(API_PLOT_BASED_DAMAGE);457		MOD_OPT_CACHE(API_PLOT_YIELDS);458		MOD_OPT_CACHE(API_ACHIEVEMENTS);459		MOD_OPT_CACHE(API_EXTENSIONS);460		MOD_OPT_CACHE(API_LUA_EXTENSIONS);461462		MOD_OPT_CACHE(CONFIG_GAME_IN_XML);463		MOD_OPT_CACHE(CONFIG_AI_IN_XML);464465		MOD_OPT_CACHE(BUGFIX_DUMMY_POLICIES);466		MOD_OPT_CACHE(BUGFIX_RADARING);467		MOD_OPT_CACHE(BUGFIX_RESEARCH_OVERFLOW);468		MOD_OPT_CACHE(BUGFIX_LUA_CHANGE_VISIBILITY_COUNT);469		MOD_OPT_CACHE(BUGFIX_RELIGIOUS_SPY_PRESSURE);470		MOD_OPT_CACHE(BUGFIX_MOVE_AFTER_PURCHASE);471		MOD_OPT_CACHE(BUGFIX_UNITCLASS_NOT_UNIT);472		MOD_OPT_CACHE(BUGFIX_BUILDINGCLASS_NOT_BUILDING);473		MOD_OPT_CACHE(BUGFIX_FREE_FOOD_BUILDING);474		MOD_OPT_CACHE(BUGFIX_NAVAL_FREE_UNITS);475		MOD_OPT_CACHE(BUGFIX_NAVAL_NEAREST_WATER);476		MOD_OPT_CACHE(BUGFIX_CITY_STACKING);477		MOD_OPT_CACHE(BUGFIX_BARB_CAMP_TERRAINS);478		MOD_OPT_CACHE(BUGFIX_BARB_CAMP_SPAWNING);479		MOD_OPT_CACHE(BUGFIX_BARB_GP_XP);480		MOD_OPT_CACHE(BUGFIX_REMOVE_GHOST_ROUTES);481		MOD_OPT_CACHE(BUGFIX_UNITS_AWAKE_IN_DANGER);482		MOD_OPT_CACHE(BUGFIX_WORKERS_VISIBLE_DANGER);483		MOD_OPT_CACHE(BUGFIX_FEATURE_REMOVAL);484		MOD_OPT_CACHE(BUGFIX_INTERCEPTOR_STRENGTH);485		MOD_OPT_CACHE(BUGFIX_UNIT_POWER_CALC);486		MOD_OPT_CACHE(BUGFIX_UNIT_POWER_BONUS_VS_DOMAIN_ONLY);487		MOD_OPT_CACHE(BUGFIX_UNIT_POWER_NAVAL_CONSISTENCY);488		MOD_OPT_CACHE(BUGFIX_UNIT_PREREQ_PROJECT);489		MOD_OPT_CACHE(BUGFIX_NO_HOVERING_REBELS);490		MOD_OPT_CACHE(BUGFIX_HOVERING_PATHFINDER);491		MOD_OPT_CACHE(BUGFIX_EMBARKING_PATHFINDER);492493		m_bInit = true;494	}495496	if (m_options.find(sOption) == m_options.end()) {497		return defValue;498	}499500	return m_options[sOption];501}

Calls

Called by