Give a boosted AI to some AI karts in races and GP
This commit is contained in:
parent
c8305012f8
commit
46c2c88461
@ -1063,7 +1063,6 @@ void SkiddingAI::evaluateItems(const Item *item, Vec3 kart_aim_direction,
|
|||||||
* Level 2 to 5 AI : strategy detailed before each item
|
* Level 2 to 5 AI : strategy detailed before each item
|
||||||
* Each successive level is overall stronger (5 the strongest, 2 the weakest of
|
* Each successive level is overall stronger (5 the strongest, 2 the weakest of
|
||||||
* non-random strategies), but two levels may share a strategy for a given item.
|
* non-random strategies), but two levels may share a strategy for a given item.
|
||||||
* (level 5 is not yet used ; meant for SuperTux GP preferred karts or boss races)
|
|
||||||
* \param dt Time step size.
|
* \param dt Time step size.
|
||||||
* STATE: shield on -> avoid usage of offensive items (with certain tolerance)
|
* STATE: shield on -> avoid usage of offensive items (with certain tolerance)
|
||||||
* STATE: swatter on -> avoid usage of shield
|
* STATE: swatter on -> avoid usage of shield
|
||||||
|
@ -229,8 +229,8 @@ void World::init()
|
|||||||
global_player_id, race_manager->getKartType(i),
|
global_player_id, race_manager->getKartType(i),
|
||||||
race_manager->getPlayerDifficulty(i));
|
race_manager->getPlayerDifficulty(i));
|
||||||
}
|
}
|
||||||
|
new_kart->setBoostAI(race_manager->hasBoostedAI(i));
|
||||||
m_karts.push_back(new_kart);
|
m_karts.push_back(new_kart);
|
||||||
|
|
||||||
} // for i
|
} // for i
|
||||||
|
|
||||||
// Load other custom models if needed
|
// Load other custom models if needed
|
||||||
|
@ -511,6 +511,31 @@ void RaceManager::startNextRace()
|
|||||||
}
|
}
|
||||||
} // not first race
|
} // not first race
|
||||||
|
|
||||||
|
// set boosted AI status for AI karts
|
||||||
|
int boosted_ai_count = std::min<int>(m_ai_kart_list.size(),
|
||||||
|
(m_kart_status.size()-2)/4 + 1);
|
||||||
|
if (boosted_ai_count > 4) boosted_ai_count = 4;
|
||||||
|
int ai_count = m_ai_kart_list.size();
|
||||||
|
|
||||||
|
for (unsigned int i=0;i<m_kart_status.size();i++)
|
||||||
|
{
|
||||||
|
if (m_kart_status[i].m_kart_type == KT_AI)
|
||||||
|
{
|
||||||
|
if (boosted_ai_count > 0 &&
|
||||||
|
(UserConfigParams::m_gp_most_points_first ||
|
||||||
|
ai_count == boosted_ai_count))
|
||||||
|
{
|
||||||
|
m_kart_status[i].m_boosted_ai = true;
|
||||||
|
boosted_ai_count--;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
m_kart_status[i].m_boosted_ai = false;
|
||||||
|
}
|
||||||
|
ai_count--;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// the constructor assigns this object to the global
|
// the constructor assigns this object to the global
|
||||||
// variable world. Admittedly a bit ugly, but simplifies
|
// variable world. Admittedly a bit ugly, but simplifies
|
||||||
// handling of objects which get created in the constructor
|
// handling of objects which get created in the constructor
|
||||||
|
@ -276,6 +276,8 @@ public:
|
|||||||
/** In GPs, at the end, will hold the overall rank of this kart
|
/** In GPs, at the end, will hold the overall rank of this kart
|
||||||
* (0<=m_gp_rank < num_karts-1). */
|
* (0<=m_gp_rank < num_karts-1). */
|
||||||
int m_gp_rank;
|
int m_gp_rank;
|
||||||
|
/** Boosted status (AI only). */
|
||||||
|
bool m_boosted_ai;
|
||||||
/** The difficulty for this player. */
|
/** The difficulty for this player. */
|
||||||
PerPlayerDifficulty m_difficulty;
|
PerPlayerDifficulty m_difficulty;
|
||||||
|
|
||||||
@ -289,7 +291,7 @@ public:
|
|||||||
m_local_player_id(local_player_id),
|
m_local_player_id(local_player_id),
|
||||||
m_global_player_id(global_player_id),
|
m_global_player_id(global_player_id),
|
||||||
m_gp_rank(init_gp_rank), m_difficulty(difficulty)
|
m_gp_rank(init_gp_rank), m_difficulty(difficulty)
|
||||||
{}
|
{ m_boosted_ai = false; }
|
||||||
|
|
||||||
}; // KartStatus
|
}; // KartStatus
|
||||||
private:
|
private:
|
||||||
@ -643,6 +645,11 @@ public:
|
|||||||
return m_kart_status[kart].m_difficulty;
|
return m_kart_status[kart].m_difficulty;
|
||||||
} // getPlayerDifficulty
|
} // getPlayerDifficulty
|
||||||
// ------------------------------------------------------------------------
|
// ------------------------------------------------------------------------
|
||||||
|
float hasBoostedAI(int kart) const
|
||||||
|
{
|
||||||
|
return m_kart_status[kart].m_boosted_ai;
|
||||||
|
} // getKartRaceTime
|
||||||
|
// ------------------------------------------------------------------------
|
||||||
int getCoinTarget() const { return m_coin_target; }
|
int getCoinTarget() const { return m_coin_target; }
|
||||||
// ------------------------------------------------------------------------
|
// ------------------------------------------------------------------------
|
||||||
float getTimeTarget() const { return m_time_target; }
|
float getTimeTarget() const { return m_time_target; }
|
||||||
|
Loading…
x
Reference in New Issue
Block a user