static int l_fac_description(lua_State *L) { Faction *fac = l_fac_check(L, 1); fac->description = luaL_checkstring(L, 2); lua_settop(L, 1); return 1; }
//military logo static int l_fac_police_name(lua_State *L) { Faction *fac = l_fac_check(L, 1); fac->police_name = luaL_checkstring(L, 2); lua_settop(L, 1); return 1; }
// weightings to use when picking a government type static int l_fac_govtype_weight(lua_State *L) { Faction *fac = l_fac_check(L, 1); const char *typeName = luaL_checkstring(L, 2); const Polit::GovType g = static_cast<Polit::GovType>(LuaConstants::GetConstant(L, "PolitGovType", typeName)); const Sint32 weight = luaL_checkinteger(L, 3); // signed as we will need to compare with signed out of Random.Int32 if (g < Polit::GOV_RAND_MIN || g > Polit::GOV_RAND_MAX) { pi_lua_warn(L, "government type out of range: Faction{%s}:govtype_weight('%s', %d)", fac->name.c_str(), typeName, weight); return 0; } if (weight < 0) { pi_lua_warn(L, "weight must a postive integer: Faction{%s}:govtype_weight('%s', %d)", fac->name.c_str(), typeName, weight); return 0; } fac->govtype_weights.push_back(std::make_pair(g, weight)); fac->govtype_weights_total += weight; lua_settop(L, 1); return 1; }
//police logo //goods/equipment availability (1-per-economy-type: aka agricultural, industrial, tourist, etc) //goods/equipment legality static int l_fac_illegal_goods_probability(lua_State *L) { Faction *fac = l_fac_check(L, 1); const char *typeName = luaL_checkstring(L, 2); const Equip::Type e = static_cast<Equip::Type>(LuaConstants::GetConstant(L, "EquipType", typeName)); const Uint32 probability = luaL_checkunsigned(L, 3); if (e < Equip::FIRST_COMMODITY || e > Equip::LAST_COMMODITY) { pi_lua_warn(L, "argument out of range: Faction{%s}:IllegalGoodsProbability('%s', %d)", fac->name.c_str(), typeName, probability); return 0; } if (probability > 100) { pi_lua_warn(L, "argument (probability 0-100) out of range: Faction{%s}:IllegalGoodsProbability('%s', %d)", fac->name.c_str(), typeName, probability); return 0; } fac->equip_legality[e] = probability; lua_settop(L, 1); return 1; }
//ship availability static int l_fac_colour(lua_State *L) { Faction *fac = l_fac_check(L, 1); const float r = luaL_checknumber(L, 2); const float g = luaL_checknumber(L, 3); const float b = luaL_checknumber(L, 4); fac->colour = Color(r*255,g*255,b*255); lua_settop(L, 1); return 1; }
//commodity legality static int l_fac_illegal_goods_probability(lua_State *L) { Faction *fac = l_fac_check(L, 1); const char *typeName = luaL_checkstring(L, 2); const GalacticEconomy::Commodity e = static_cast<GalacticEconomy::Commodity>( LuaConstants::GetConstant(L, "CommodityType", typeName)); const Uint32 probability = luaL_checkunsigned(L, 3); if (probability > 100) { pi_lua_warn(L, "argument (probability 0-100) out of range: Faction{%s}:IllegalGoodsProbability('%s', %d)", fac->name.c_str(), typeName, probability); return 0; } fac->commodity_legality[e] = probability; lua_settop(L, 1); return 1; }