Add Heavy and Amphibious trainer bots
parent
3f04654cd3
commit
723c552783
|
@ -521,6 +521,8 @@ void InitializeRestext()
|
|||
stringsObject[OBJECT_MOBILEtt] = TR("Practice bot");
|
||||
stringsObject[OBJECT_MOBILEwt] = TR("Practice bot");
|
||||
stringsObject[OBJECT_MOBILEit] = TR("Practice bot");
|
||||
stringsObject[OBJECT_MOBILErp] = TR("Practice bot");
|
||||
stringsObject[OBJECT_MOBILEst] = TR("Practice bot");
|
||||
stringsObject[OBJECT_MOBILEfa] = TR("Winged grabber");
|
||||
stringsObject[OBJECT_MOBILEta] = TR("Tracked grabber");
|
||||
stringsObject[OBJECT_MOBILEwa] = TR("Wheeled grabber");
|
||||
|
|
|
@ -1285,6 +1285,8 @@ void CPyro::DisplayError(PyroType type, CObject* obj)
|
|||
oType == OBJECT_MOBILEtt ||
|
||||
oType == OBJECT_MOBILEft ||
|
||||
oType == OBJECT_MOBILEit ||
|
||||
oType == OBJECT_MOBILErp ||
|
||||
oType == OBJECT_MOBILEst ||
|
||||
oType == OBJECT_MOBILEdr )
|
||||
{
|
||||
err = ERR_DELETEMOBILE;
|
||||
|
@ -2053,11 +2055,14 @@ void CPyro::BurnStart()
|
|||
m_burnType == OBJECT_MOBILEtc ||
|
||||
m_burnType == OBJECT_MOBILEti ||
|
||||
m_burnType == OBJECT_MOBILEts ||
|
||||
m_burnType == OBJECT_MOBILEtt ||
|
||||
m_burnType == OBJECT_MOBILErt ||
|
||||
m_burnType == OBJECT_MOBILErc ||
|
||||
m_burnType == OBJECT_MOBILErr ||
|
||||
m_burnType == OBJECT_MOBILErs ||
|
||||
m_burnType == OBJECT_MOBILErp ||
|
||||
m_burnType == OBJECT_MOBILEsa ||
|
||||
m_burnType == OBJECT_MOBILEst ||
|
||||
m_burnType == OBJECT_MOBILEdr ) // caterpillars?
|
||||
{
|
||||
pos.x = 0.0f;
|
||||
|
@ -2102,7 +2107,8 @@ void CPyro::BurnStart()
|
|||
m_burnType == OBJECT_MOBILEib ||
|
||||
m_burnType == OBJECT_MOBILEic ||
|
||||
m_burnType == OBJECT_MOBILEii ||
|
||||
m_burnType == OBJECT_MOBILEis ) // legs?
|
||||
m_burnType == OBJECT_MOBILEis ||
|
||||
m_burnType == OBJECT_MOBILEit ) // legs?
|
||||
{
|
||||
for (int i = 0; i < 6; i++)
|
||||
{
|
||||
|
|
|
@ -592,6 +592,8 @@ float CWater::GetLevel(CObject* object)
|
|||
type == OBJECT_MOBILEtt ||
|
||||
type == OBJECT_MOBILEwt ||
|
||||
type == OBJECT_MOBILEit ||
|
||||
type == OBJECT_MOBILErp ||
|
||||
type == OBJECT_MOBILEst ||
|
||||
type == OBJECT_MOBILEdr )
|
||||
{
|
||||
return m_level-2.0f;
|
||||
|
|
|
@ -343,6 +343,8 @@ ObjectType CLevelParserParam::ToObjectType(std::string value)
|
|||
if (value == "TrackedTrainer" ) return OBJECT_MOBILEtt;
|
||||
if (value == "WheeledTrainer" ) return OBJECT_MOBILEwt;
|
||||
if (value == "LeggedTrainer" ) return OBJECT_MOBILEit;
|
||||
if (value == "HeavyTrainer" ) return OBJECT_MOBILErp;
|
||||
if (value == "AmphibiousTrainer" ) return OBJECT_MOBILEst;
|
||||
if (value == "WingedGrabber" ) return OBJECT_MOBILEfa;
|
||||
if (value == "TrackedGrabber" ) return OBJECT_MOBILEta;
|
||||
if (value == "WheeledGrabber" ) return OBJECT_MOBILEwa;
|
||||
|
@ -551,6 +553,8 @@ const std::string CLevelParserParam::FromObjectType(ObjectType value)
|
|||
if (value == OBJECT_MOBILEft ) return "WingedTrainer";
|
||||
if (value == OBJECT_MOBILEtt ) return "TrackedTrainer";
|
||||
if (value == OBJECT_MOBILEit ) return "LeggedTrainer";
|
||||
if (value == OBJECT_MOBILErp ) return "HeavyTrainer";
|
||||
if (value == OBJECT_MOBILEst ) return "AmphibiousTrainer";
|
||||
if (value == OBJECT_MOBILEfa ) return "WingedGrabber";
|
||||
if (value == OBJECT_MOBILEta ) return "TrackedGrabber";
|
||||
if (value == OBJECT_MOBILEwa ) return "WheeledGrabber";
|
||||
|
@ -764,12 +768,13 @@ ObjectType CLevelParserParam::AsObjectType(ObjectType def)
|
|||
|
||||
DriveType CLevelParserParam::ToDriveType(std::string value)
|
||||
{
|
||||
if (value == "Wheeled") return DriveType::Wheeled;
|
||||
if (value == "Tracked") return DriveType::Tracked;
|
||||
if (value == "Winged" ) return DriveType::Winged;
|
||||
if (value == "Legged" ) return DriveType::Legged;
|
||||
if (value == "BigTracked") return DriveType::BigTracked;
|
||||
if (value == "Other" ) return DriveType::Other;
|
||||
if (value == "Wheeled" ) return DriveType::Wheeled;
|
||||
if (value == "Tracked" ) return DriveType::Tracked;
|
||||
if (value == "Winged" ) return DriveType::Winged;
|
||||
if (value == "Legged" ) return DriveType::Legged;
|
||||
if (value == "Heavy" ) return DriveType::Heavy;
|
||||
if (value == "Amphibious") return DriveType::Amphibious;
|
||||
if (value == "Other" ) return DriveType::Other;
|
||||
return static_cast<DriveType>(Cast<int>(value, "drive"));
|
||||
}
|
||||
|
||||
|
|
|
@ -1839,6 +1839,8 @@ void CRobotMain::SelectOneObject(CObject* obj, bool displayError)
|
|||
type == OBJECT_MOBILEtt ||
|
||||
type == OBJECT_MOBILEwt ||
|
||||
type == OBJECT_MOBILEit ||
|
||||
type == OBJECT_MOBILErp ||
|
||||
type == OBJECT_MOBILEst ||
|
||||
type == OBJECT_MOBILEdr ||
|
||||
type == OBJECT_APOLLO2 )
|
||||
{
|
||||
|
@ -2225,6 +2227,8 @@ void CRobotMain::ChangeCamera()
|
|||
oType != OBJECT_MOBILEtt &&
|
||||
oType != OBJECT_MOBILEwt &&
|
||||
oType != OBJECT_MOBILEit &&
|
||||
oType != OBJECT_MOBILErp &&
|
||||
oType != OBJECT_MOBILEst &&
|
||||
oType != OBJECT_MOBILEdr &&
|
||||
oType != OBJECT_APOLLO2 ) return;
|
||||
|
||||
|
@ -5734,13 +5738,14 @@ Error CRobotMain::CanFactoryError(ObjectType type, int team)
|
|||
if (drive == DriveType::Tracked && !IsResearchDone(RESEARCH_TANK, team)) return ERR_BUILD_RESEARCH;
|
||||
if (drive == DriveType::Winged && !IsResearchDone(RESEARCH_FLY, team)) return ERR_BUILD_RESEARCH;
|
||||
if (drive == DriveType::Legged && !IsResearchDone(RESEARCH_iPAW, team)) return ERR_BUILD_RESEARCH;
|
||||
if (drive == DriveType::BigTracked && !IsResearchDone(RESEARCH_TANK, team)) return ERR_BUILD_RESEARCH; // NOTE: Subber is not BigTracked! It currently counts as Other
|
||||
if (drive == DriveType::Heavy && !IsResearchDone(RESEARCH_TANK, team)) return ERR_BUILD_RESEARCH;
|
||||
|
||||
if (type == OBJECT_MOBILErt && !IsResearchDone(RESEARCH_THUMP, team)) return ERR_BUILD_RESEARCH;
|
||||
if (type == OBJECT_MOBILErc && !IsResearchDone(RESEARCH_PHAZER, team)) return ERR_BUILD_RESEARCH;
|
||||
if (type == OBJECT_MOBILErr && !IsResearchDone(RESEARCH_RECYCLER, team)) return ERR_BUILD_RESEARCH;
|
||||
if (type == OBJECT_MOBILErs && !IsResearchDone(RESEARCH_SHIELD, team)) return ERR_BUILD_RESEARCH;
|
||||
if (type == OBJECT_MOBILEsa && !IsResearchDone(RESEARCH_SUBM, team)) return ERR_BUILD_DISABLED; // Can be only researched manually in Scene file
|
||||
if (type == OBJECT_MOBILEst && !IsResearchDone(RESEARCH_SUBM, team)) return ERR_BUILD_DISABLED;
|
||||
if (type == OBJECT_MOBILEtg && !IsResearchDone(RESEARCH_TARGET, team)) return ERR_BUILD_RESEARCH;
|
||||
|
||||
return ERR_OK;
|
||||
|
|
|
@ -618,6 +618,8 @@ bool CAutoFactory::NearestVehicle()
|
|||
type != OBJECT_MOBILEtt &&
|
||||
type != OBJECT_MOBILEwt &&
|
||||
type != OBJECT_MOBILEit &&
|
||||
type != OBJECT_MOBILErp &&
|
||||
type != OBJECT_MOBILEst &&
|
||||
type != OBJECT_MOBILEdr &&
|
||||
type != OBJECT_MOTHER &&
|
||||
type != OBJECT_ANT &&
|
||||
|
|
|
@ -262,6 +262,8 @@ bool CAutoMush::SearchTarget()
|
|||
type != OBJECT_MOBILEtt &&
|
||||
type != OBJECT_MOBILEwt &&
|
||||
type != OBJECT_MOBILEit &&
|
||||
type != OBJECT_MOBILErp &&
|
||||
type != OBJECT_MOBILEst &&
|
||||
type != OBJECT_MOBILEdr &&
|
||||
type != OBJECT_DERRICK &&
|
||||
type != OBJECT_STATION &&
|
||||
|
|
|
@ -371,6 +371,8 @@ bool CAutoNuclearPlant::SearchVehicle()
|
|||
type != OBJECT_MOBILEtt &&
|
||||
type != OBJECT_MOBILEwt &&
|
||||
type != OBJECT_MOBILEit &&
|
||||
type != OBJECT_MOBILErp &&
|
||||
type != OBJECT_MOBILEst &&
|
||||
type != OBJECT_MOBILEdr &&
|
||||
type != OBJECT_MOTHER &&
|
||||
type != OBJECT_ANT &&
|
||||
|
|
|
@ -434,6 +434,8 @@ bool CAutoPowerPlant::SearchVehicle()
|
|||
type != OBJECT_MOBILEtt &&
|
||||
type != OBJECT_MOBILEwt &&
|
||||
type != OBJECT_MOBILEit &&
|
||||
type != OBJECT_MOBILErp &&
|
||||
type != OBJECT_MOBILEst &&
|
||||
type != OBJECT_MOBILEdr &&
|
||||
type != OBJECT_MOTHER &&
|
||||
type != OBJECT_ANT &&
|
||||
|
|
|
@ -278,6 +278,8 @@ CObject* CAutoPowerStation::SearchVehicle()
|
|||
type != OBJECT_MOBILEtt &&
|
||||
type != OBJECT_MOBILEwt &&
|
||||
type != OBJECT_MOBILEit &&
|
||||
type != OBJECT_MOBILErp &&
|
||||
type != OBJECT_MOBILEst &&
|
||||
type != OBJECT_MOBILEtg &&
|
||||
type != OBJECT_MOBILEdr ) continue;
|
||||
|
||||
|
|
|
@ -55,12 +55,15 @@ DriveType GetDriveFromObject(ObjectType type)
|
|||
case OBJECT_MOBILEib:
|
||||
return DriveType::Legged;
|
||||
|
||||
case OBJECT_MOBILErp:
|
||||
case OBJECT_MOBILErt:
|
||||
case OBJECT_MOBILErc:
|
||||
case OBJECT_MOBILErr:
|
||||
case OBJECT_MOBILErs:
|
||||
// NOTE: Subber is not BigTracked!
|
||||
return DriveType::BigTracked;
|
||||
return DriveType::Heavy;
|
||||
|
||||
case OBJECT_MOBILEsa:
|
||||
return DriveType::Amphibious;
|
||||
|
||||
default:
|
||||
return DriveType::Other;
|
||||
|
|
|
@ -28,7 +28,8 @@ enum class DriveType : unsigned int
|
|||
Tracked,
|
||||
Winged,
|
||||
Legged,
|
||||
BigTracked,
|
||||
Heavy,
|
||||
Amphibious
|
||||
};
|
||||
|
||||
DriveType GetDriveFromObject(ObjectType type);
|
||||
|
|
|
@ -360,6 +360,8 @@ bool CMotionToto::EventFrame(const Event &event)
|
|||
type == OBJECT_MOBILEtt ||
|
||||
type == OBJECT_MOBILEft ||
|
||||
type == OBJECT_MOBILEit ||
|
||||
type == OBJECT_MOBILErp ||
|
||||
type == OBJECT_MOBILEst ||
|
||||
type == OBJECT_MOBILEtg ||
|
||||
type == OBJECT_MOBILEdr ) ) // vehicle?
|
||||
{
|
||||
|
|
|
@ -100,11 +100,23 @@ void CMotionVehicle::Create(Math::Vector pos, float angle, ObjectType type,
|
|||
m_engine->SetObjectType(rank, Gfx::ENG_OBJTYPE_VEHICLE); // this is a moving object
|
||||
m_object->SetObjectRank(0, rank);
|
||||
|
||||
if (m_object->GetTrainer() ||
|
||||
type == OBJECT_MOBILEwt ||
|
||||
type == OBJECT_MOBILEtt ||
|
||||
type == OBJECT_MOBILEft ||
|
||||
type == OBJECT_MOBILEit)
|
||||
if ((m_object->GetTrainer() && type == OBJECT_MOBILEsa) || type == OBJECT_MOBILEst)
|
||||
{
|
||||
modelManager->AddModelReference("trainers.mod", false, rank, m_object->GetTeam());
|
||||
}
|
||||
else if ((m_object->GetTrainer() &&
|
||||
( type == OBJECT_MOBILErt ||
|
||||
type == OBJECT_MOBILErc ||
|
||||
type == OBJECT_MOBILErr ||
|
||||
type == OBJECT_MOBILErs)) || type == OBJECT_MOBILErp)
|
||||
{
|
||||
modelManager->AddModelReference("trainerr.mod", false, rank, m_object->GetTeam());
|
||||
}
|
||||
else if (m_object->GetTrainer() ||
|
||||
type == OBJECT_MOBILEwt ||
|
||||
type == OBJECT_MOBILEtt ||
|
||||
type == OBJECT_MOBILEft ||
|
||||
type == OBJECT_MOBILEit)
|
||||
{
|
||||
modelManager->AddModelReference("trainer.mod", false, rank, m_object->GetTeam());
|
||||
}
|
||||
|
@ -201,14 +213,15 @@ void CMotionVehicle::Create(Math::Vector pos, float angle, ObjectType type,
|
|||
modelManager->AddModelReference("trainera.mod", false, rank, m_object->GetTeam());
|
||||
}
|
||||
}
|
||||
else if (type == OBJECT_MOBILErt ||
|
||||
else if (!m_object->GetTrainer() &&
|
||||
(type == OBJECT_MOBILErt ||
|
||||
type == OBJECT_MOBILErc ||
|
||||
type == OBJECT_MOBILErr ||
|
||||
type == OBJECT_MOBILErs)
|
||||
type == OBJECT_MOBILErs))
|
||||
{
|
||||
modelManager->AddModelReference("roller1.mod", false, rank, m_object->GetTeam());
|
||||
}
|
||||
else if (type == OBJECT_MOBILEsa)
|
||||
else if (type == OBJECT_MOBILEsa && !m_object->GetTrainer())
|
||||
{
|
||||
modelManager->AddModelReference("subm1.mod", false, rank, m_object->GetTeam());
|
||||
}
|
||||
|
@ -265,12 +278,14 @@ void CMotionVehicle::Create(Math::Vector pos, float angle, ObjectType type,
|
|||
if (type == OBJECT_MOBILErt ||
|
||||
type == OBJECT_MOBILErc ||
|
||||
type == OBJECT_MOBILErr ||
|
||||
type == OBJECT_MOBILErs)
|
||||
type == OBJECT_MOBILErs ||
|
||||
type == OBJECT_MOBILErp)
|
||||
{
|
||||
m_object->AddCrashSphere(CrashSphere(Math::Vector(0.0f, 4.0f, 0.0f), 6.5f, SOUND_BOUMm, 0.45f));
|
||||
m_object->SetCameraCollisionSphere(Math::Sphere(Math::Vector(0.0f, 3.0f, 0.0f), 7.0f));
|
||||
}
|
||||
else if (type == OBJECT_MOBILEsa)
|
||||
else if (type == OBJECT_MOBILEsa ||
|
||||
type == OBJECT_MOBILEst)
|
||||
{
|
||||
m_object->AddCrashSphere(CrashSphere(Math::Vector(0.0f, 3.0f, 0.0f), 4.5f, SOUND_BOUMm, 0.45f));
|
||||
m_object->SetCameraCollisionSphere(Math::Sphere(Math::Vector(0.0f, 3.0f, 0.0f), 6.0f));
|
||||
|
@ -548,7 +563,8 @@ void CMotionVehicle::Create(Math::Vector pos, float angle, ObjectType type,
|
|||
if (type == OBJECT_MOBILErt ||
|
||||
type == OBJECT_MOBILErc ||
|
||||
type == OBJECT_MOBILErr ||
|
||||
type == OBJECT_MOBILErs) // large caterpillars?
|
||||
type == OBJECT_MOBILErs ||
|
||||
type == OBJECT_MOBILErp) // large caterpillars?
|
||||
{
|
||||
// Creates the right caterpillar.
|
||||
rank = m_engine->CreateObject();
|
||||
|
@ -567,7 +583,8 @@ void CMotionVehicle::Create(Math::Vector pos, float angle, ObjectType type,
|
|||
m_object->SetPartPosition(7, Math::Vector(0.0f, 2.0f, 3.0f));
|
||||
}
|
||||
|
||||
if (type == OBJECT_MOBILEsa) // underwater caterpillars?
|
||||
if (type == OBJECT_MOBILEsa ||
|
||||
type == OBJECT_MOBILEst) // underwater caterpillars?
|
||||
{
|
||||
// Creates the right caterpillar.
|
||||
rank = m_engine->CreateObject();
|
||||
|
@ -978,7 +995,8 @@ void CMotionVehicle::Create(Math::Vector pos, float angle, ObjectType type,
|
|||
if (type == OBJECT_MOBILErt ||
|
||||
type == OBJECT_MOBILErc ||
|
||||
type == OBJECT_MOBILErr ||
|
||||
type == OBJECT_MOBILErs)
|
||||
type == OBJECT_MOBILErs ||
|
||||
type == OBJECT_MOBILErp)
|
||||
{
|
||||
m_object->CreateShadowCircle(6.0f, 1.0f);
|
||||
}
|
||||
|
@ -988,7 +1006,8 @@ void CMotionVehicle::Create(Math::Vector pos, float angle, ObjectType type,
|
|||
type == OBJECT_MOBILEti ||
|
||||
type == OBJECT_MOBILEts ||
|
||||
type == OBJECT_MOBILEtt ||
|
||||
type == OBJECT_MOBILEsa)
|
||||
type == OBJECT_MOBILEsa ||
|
||||
type == OBJECT_MOBILEst)
|
||||
{
|
||||
m_object->CreateShadowCircle(5.0f, 1.0f);
|
||||
}
|
||||
|
@ -1225,7 +1244,8 @@ void CMotionVehicle::CreatePhysics(ObjectType type)
|
|||
if ( type == OBJECT_MOBILErt ||
|
||||
type == OBJECT_MOBILErc ||
|
||||
type == OBJECT_MOBILErr ||
|
||||
type == OBJECT_MOBILErs ) // large caterpillars?
|
||||
type == OBJECT_MOBILErs ||
|
||||
type == OBJECT_MOBILErp) // large caterpillars?
|
||||
{
|
||||
character->wheelFront = 5.0f;
|
||||
character->wheelBack = 5.0f;
|
||||
|
@ -1251,7 +1271,8 @@ void CMotionVehicle::CreatePhysics(ObjectType type)
|
|||
m_physics->SetCirMotionY(MO_STOACCEL, 4.0f);
|
||||
}
|
||||
|
||||
if ( type == OBJECT_MOBILEsa )
|
||||
if ( type == OBJECT_MOBILEsa ||
|
||||
type == OBJECT_MOBILEst )
|
||||
{
|
||||
character->wheelFront = 4.0f;
|
||||
character->wheelBack = 4.0f;
|
||||
|
@ -1541,7 +1562,9 @@ bool CMotionVehicle::EventFrame(const Event &event)
|
|||
type == OBJECT_MOBILErc ||
|
||||
type == OBJECT_MOBILErr ||
|
||||
type == OBJECT_MOBILErs ||
|
||||
type == OBJECT_MOBILErp ||
|
||||
type == OBJECT_MOBILEsa ||
|
||||
type == OBJECT_MOBILEst ||
|
||||
type == OBJECT_MOBILEdr ) // caterpillars?
|
||||
{
|
||||
s = m_physics->GetLinMotionX(MO_MOTSPEED)*0.7f;
|
||||
|
@ -1573,7 +1596,8 @@ bool CMotionVehicle::EventFrame(const Event &event)
|
|||
limit[0] = 8.0f*Math::PI/180.0f;
|
||||
limit[1] = -12.0f*Math::PI/180.0f;
|
||||
}
|
||||
else if ( type == OBJECT_MOBILEsa )
|
||||
else if ( type == OBJECT_MOBILEsa ||
|
||||
type == OBJECT_MOBILEst )
|
||||
{
|
||||
limit[0] = 15.0f*Math::PI/180.0f;
|
||||
limit[1] = -15.0f*Math::PI/180.0f;
|
||||
|
|
|
@ -309,6 +309,8 @@ CObjectUPtr CObjectFactory::CreateObject(const ObjectCreateParams& params)
|
|||
case OBJECT_MOBILEtt:
|
||||
case OBJECT_MOBILEwt:
|
||||
case OBJECT_MOBILEit:
|
||||
case OBJECT_MOBILErp:
|
||||
case OBJECT_MOBILEst:
|
||||
case OBJECT_MOBILEdr:
|
||||
case OBJECT_APOLLO2:
|
||||
case OBJECT_CONTROLLER:
|
||||
|
|
|
@ -105,6 +105,8 @@ enum ObjectType
|
|||
OBJECT_MOBILEtt = 101, //!< TrackedTrainer
|
||||
OBJECT_MOBILEft = 102, //!< WingedTrainer
|
||||
OBJECT_MOBILEit = 103, //!< LeggedTrainer
|
||||
OBJECT_MOBILErp = 104, //!< HeavyTrainer
|
||||
OBJECT_MOBILEst = 105, //!< AmphibiousTrainer
|
||||
OBJECT_MOBILEwa = 110, //!< WheeledGrabber
|
||||
OBJECT_MOBILEta = 111, //!< TrackedGrabber
|
||||
OBJECT_MOBILEfa = 112, //!< WingedGrabber
|
||||
|
|
|
@ -742,6 +742,8 @@ void COldObject::SetType(ObjectType type)
|
|||
m_type == OBJECT_MOBILEtt ||
|
||||
m_type == OBJECT_MOBILEwt ||
|
||||
m_type == OBJECT_MOBILEit ||
|
||||
m_type == OBJECT_MOBILErp ||
|
||||
m_type == OBJECT_MOBILEst ||
|
||||
m_type == OBJECT_TOWER ||
|
||||
m_type == OBJECT_RESEARCH ||
|
||||
m_type == OBJECT_ENERGY ||
|
||||
|
@ -807,6 +809,8 @@ void COldObject::SetType(ObjectType type)
|
|||
m_type == OBJECT_MOBILEtt ||
|
||||
m_type == OBJECT_MOBILEwt ||
|
||||
m_type == OBJECT_MOBILEit ||
|
||||
m_type == OBJECT_MOBILErp ||
|
||||
m_type == OBJECT_MOBILEst ||
|
||||
m_type == OBJECT_FACTORY ||
|
||||
m_type == OBJECT_REPAIR ||
|
||||
m_type == OBJECT_DESTROYER||
|
||||
|
@ -911,6 +915,8 @@ void COldObject::SetType(ObjectType type)
|
|||
m_type == OBJECT_MOBILEtt ||
|
||||
m_type == OBJECT_MOBILEwt ||
|
||||
m_type == OBJECT_MOBILEit ||
|
||||
m_type == OBJECT_MOBILErp ||
|
||||
m_type == OBJECT_MOBILEst ||
|
||||
m_type == OBJECT_MOBILEtg ||
|
||||
m_type == OBJECT_MOBILEdr ||
|
||||
m_type == OBJECT_APOLLO2 ||
|
||||
|
@ -2312,7 +2318,8 @@ void COldObject::AdjustCamera(Math::Vector &eye, float &dirH, float &dirV,
|
|||
}
|
||||
else if ( m_type == OBJECT_MOBILErt ||
|
||||
m_type == OBJECT_MOBILErr ||
|
||||
m_type == OBJECT_MOBILErs )
|
||||
m_type == OBJECT_MOBILErs ||
|
||||
m_type == OBJECT_MOBILErp )
|
||||
{
|
||||
eye.x = -1.1f; // on the cap
|
||||
eye.y = 7.9f;
|
||||
|
@ -2354,7 +2361,8 @@ void COldObject::AdjustCamera(Math::Vector &eye, float &dirH, float &dirV,
|
|||
eye.y = 11.0f;
|
||||
eye.z = 0.0f;
|
||||
}
|
||||
else if ( m_type == OBJECT_MOBILEsa )
|
||||
else if ( m_type == OBJECT_MOBILEsa ||
|
||||
m_type == OBJECT_MOBILEst )
|
||||
{
|
||||
eye.x = 3.0f;
|
||||
eye.y = 4.5f;
|
||||
|
@ -2901,6 +2909,8 @@ void COldObject::CreateSelectParticle()
|
|||
m_type == OBJECT_MOBILEtt ||
|
||||
m_type == OBJECT_MOBILEwt ||
|
||||
m_type == OBJECT_MOBILEit ||
|
||||
m_type == OBJECT_MOBILErp ||
|
||||
m_type == OBJECT_MOBILEst ||
|
||||
m_type == OBJECT_MOBILEdr ) // vehicle?
|
||||
{
|
||||
pos = Math::Vector(0.0f, 0.0f, 0.0f);
|
||||
|
@ -2937,14 +2947,16 @@ void COldObject::UpdateSelectParticle()
|
|||
if ( m_type == OBJECT_MOBILErt ||
|
||||
m_type == OBJECT_MOBILErc ||
|
||||
m_type == OBJECT_MOBILErr ||
|
||||
m_type == OBJECT_MOBILErs ) // large caterpillars?
|
||||
m_type == OBJECT_MOBILErs ||
|
||||
m_type == OBJECT_MOBILErp ) // large caterpillars?
|
||||
{
|
||||
pos[0] = Math::Vector(4.2f, 2.8f, 1.5f);
|
||||
pos[1] = Math::Vector(4.2f, 2.8f, -1.5f);
|
||||
dim[0].x = 1.5f;
|
||||
dim[1].x = 1.5f;
|
||||
}
|
||||
else if ( m_type == OBJECT_MOBILEsa ) // submarine?
|
||||
else if ( m_type == OBJECT_MOBILEsa ||
|
||||
m_type == OBJECT_MOBILEst ) // submarine?
|
||||
{
|
||||
pos[0] = Math::Vector(3.6f, 4.0f, 2.0f);
|
||||
pos[1] = Math::Vector(3.6f, 4.0f, -2.0f);
|
||||
|
@ -3027,12 +3039,14 @@ void COldObject::UpdateSelectParticle()
|
|||
if ( m_type == OBJECT_MOBILErt ||
|
||||
m_type == OBJECT_MOBILErc ||
|
||||
m_type == OBJECT_MOBILErr ||
|
||||
m_type == OBJECT_MOBILErs ) // large caterpillars?
|
||||
m_type == OBJECT_MOBILErs ||
|
||||
m_type == OBJECT_MOBILErp ) // large caterpillars?
|
||||
{
|
||||
pos[2] = Math::Vector(-5.0f, 5.2f, 2.5f);
|
||||
pos[3] = Math::Vector(-5.0f, 5.2f, -2.5f);
|
||||
}
|
||||
if ( m_type == OBJECT_MOBILEsa ) // submarine?
|
||||
if ( m_type == OBJECT_MOBILEsa ||
|
||||
m_type == OBJECT_MOBILEst ) // submarine?
|
||||
{
|
||||
pos[2] = Math::Vector(-3.6f, 4.0f, 2.0f);
|
||||
pos[3] = Math::Vector(-3.6f, 4.0f, -2.0f);
|
||||
|
@ -3276,6 +3290,8 @@ float COldObject::GetLightningHitProbability()
|
|||
m_type == OBJECT_MOBILEtt ||
|
||||
m_type == OBJECT_MOBILEwt ||
|
||||
m_type == OBJECT_MOBILEit ||
|
||||
m_type == OBJECT_MOBILErp ||
|
||||
m_type == OBJECT_MOBILEst ||
|
||||
m_type == OBJECT_MOBILEtg ||
|
||||
m_type == OBJECT_MOBILEdr ) // robot?
|
||||
{
|
||||
|
|
|
@ -582,6 +582,8 @@ CObject* CTaskGoto::WormSearch(Math::Vector &impact)
|
|||
oType != OBJECT_MOBILEtt &&
|
||||
oType != OBJECT_MOBILEwt &&
|
||||
oType != OBJECT_MOBILEit &&
|
||||
oType != OBJECT_MOBILErp &&
|
||||
oType != OBJECT_MOBILEst &&
|
||||
oType != OBJECT_MOBILEdr &&
|
||||
oType != OBJECT_DERRICK &&
|
||||
oType != OBJECT_STATION &&
|
||||
|
@ -725,7 +727,8 @@ Error CTaskGoto::Start(Math::Vector goal, float altitude,
|
|||
type == OBJECT_MOBILErt ||
|
||||
type == OBJECT_MOBILErc ||
|
||||
type == OBJECT_MOBILErr ||
|
||||
type == OBJECT_MOBILErs )
|
||||
type == OBJECT_MOBILErs ||
|
||||
type == OBJECT_MOBILErp )
|
||||
{
|
||||
m_bApprox = true;
|
||||
}
|
||||
|
@ -1194,6 +1197,8 @@ bool CTaskGoto::AdjustTarget(CObject* pObj, Math::Vector &pos, float &distance)
|
|||
type == OBJECT_MOBILEtt ||
|
||||
type == OBJECT_MOBILEwt ||
|
||||
type == OBJECT_MOBILEit ||
|
||||
type == OBJECT_MOBILErp ||
|
||||
type == OBJECT_MOBILEst ||
|
||||
type == OBJECT_MOBILEdr )
|
||||
{
|
||||
assert(pObj->Implements(ObjectInterfaceType::Powered));
|
||||
|
@ -1996,12 +2001,14 @@ void CTaskGoto::BitmapTerrain(int minx, int miny, int maxx, int maxy)
|
|||
if ( type == OBJECT_MOBILErt ||
|
||||
type == OBJECT_MOBILErc ||
|
||||
type == OBJECT_MOBILErr ||
|
||||
type == OBJECT_MOBILErs ) // large caterpillars?
|
||||
type == OBJECT_MOBILErs ||
|
||||
type == OBJECT_MOBILErp ) // large caterpillars?
|
||||
{
|
||||
aLimit = 35.0f*Math::PI/180.0f;
|
||||
}
|
||||
|
||||
if ( type == OBJECT_MOBILEsa ) // submarine caterpillars?
|
||||
if ( type == OBJECT_MOBILEsa ||
|
||||
type == OBJECT_MOBILEst ) // submarine caterpillars?
|
||||
{
|
||||
aLimit = 35.0f*Math::PI/180.0f;
|
||||
bAcceptWater = true;
|
||||
|
|
|
@ -380,6 +380,8 @@ CObject* CTaskTake::SearchFriendObject(float &angle,
|
|||
type != OBJECT_MOBILEtt &&
|
||||
type != OBJECT_MOBILEwt &&
|
||||
type != OBJECT_MOBILEit &&
|
||||
type != OBJECT_MOBILErp &&
|
||||
type != OBJECT_MOBILEst &&
|
||||
type != OBJECT_TOWER &&
|
||||
type != OBJECT_RESEARCH &&
|
||||
type != OBJECT_ENERGY &&
|
||||
|
|
|
@ -1828,6 +1828,7 @@ void CPhysics::WaterFrame(float aTime, float rTime)
|
|||
type == OBJECT_MOBILEtt ||
|
||||
type == OBJECT_MOBILEwt ||
|
||||
type == OBJECT_MOBILEit ||
|
||||
type == OBJECT_MOBILErp ||
|
||||
type == OBJECT_MOBILEdr ||
|
||||
type == OBJECT_APOLLO2 )
|
||||
{
|
||||
|
@ -1877,7 +1878,8 @@ void CPhysics::SoundMotorFull(float rTime, ObjectType type)
|
|||
return;
|
||||
}
|
||||
|
||||
if ( type == OBJECT_MOBILEsa )
|
||||
if ( type == OBJECT_MOBILEsa ||
|
||||
type == OBJECT_MOBILEst )
|
||||
{
|
||||
sound = SOUND_MOTORs;
|
||||
amplitude = 0.6f;
|
||||
|
@ -1886,7 +1888,8 @@ void CPhysics::SoundMotorFull(float rTime, ObjectType type)
|
|||
else if ( type == OBJECT_MOBILErt ||
|
||||
type == OBJECT_MOBILErc ||
|
||||
type == OBJECT_MOBILErr ||
|
||||
type == OBJECT_MOBILErs )
|
||||
type == OBJECT_MOBILErs ||
|
||||
type == OBJECT_MOBILErp )
|
||||
{
|
||||
sound = SOUND_MOTORr;
|
||||
amplitude = 1.0f;
|
||||
|
@ -1979,7 +1982,8 @@ void CPhysics::SoundMotorSlow(float rTime, ObjectType type)
|
|||
return;
|
||||
}
|
||||
|
||||
if ( type == OBJECT_MOBILEsa )
|
||||
if ( type == OBJECT_MOBILEsa ||
|
||||
type == OBJECT_MOBILEst )
|
||||
{
|
||||
sound = SOUND_MOTORs;
|
||||
amplitude = 0.4f;
|
||||
|
@ -1987,7 +1991,8 @@ void CPhysics::SoundMotorSlow(float rTime, ObjectType type)
|
|||
else if ( type == OBJECT_MOBILErt ||
|
||||
type == OBJECT_MOBILErc ||
|
||||
type == OBJECT_MOBILErr ||
|
||||
type == OBJECT_MOBILErs )
|
||||
type == OBJECT_MOBILErs ||
|
||||
type == OBJECT_MOBILErp )
|
||||
{
|
||||
sound = SOUND_MOTORr;
|
||||
amplitude = 0.9f;
|
||||
|
@ -2046,7 +2051,8 @@ void CPhysics::SoundMotorSlow(float rTime, ObjectType type)
|
|||
if ( type == OBJECT_MOBILErt ||
|
||||
type == OBJECT_MOBILErc ||
|
||||
type == OBJECT_MOBILErr ||
|
||||
type == OBJECT_MOBILErs )
|
||||
type == OBJECT_MOBILErs ||
|
||||
type == OBJECT_MOBILErp )
|
||||
{
|
||||
m_soundTimePshhh -= rTime;
|
||||
|
||||
|
@ -2777,7 +2783,9 @@ bool CPhysics::ExploOther(ObjectType iType,
|
|||
oType == OBJECT_MOBILEwt ||
|
||||
oType == OBJECT_MOBILEtt ||
|
||||
oType == OBJECT_MOBILEft ||
|
||||
oType == OBJECT_MOBILEit ) // vehicle?
|
||||
oType == OBJECT_MOBILEit ||
|
||||
oType == OBJECT_MOBILErp ||
|
||||
oType == OBJECT_MOBILEst ) // vehicle?
|
||||
{
|
||||
assert(pObj->Implements(ObjectInterfaceType::Damageable));
|
||||
// TODO: implement "killer"?
|
||||
|
@ -2843,6 +2851,8 @@ int CPhysics::ExploHimself(ObjectType iType, ObjectType oType, float force)
|
|||
iType == OBJECT_MOBILEtt ||
|
||||
iType == OBJECT_MOBILEft ||
|
||||
iType == OBJECT_MOBILEit ||
|
||||
iType == OBJECT_MOBILErp ||
|
||||
iType == OBJECT_MOBILEst ||
|
||||
iType == OBJECT_MOBILEdr ||
|
||||
iType == OBJECT_APOLLO2 ) // vehicle?
|
||||
{
|
||||
|
@ -3182,7 +3192,8 @@ void CPhysics::MotorParticle(float aTime, float rTime)
|
|||
if ( type == OBJECT_MOBILErt ||
|
||||
type == OBJECT_MOBILErc ||
|
||||
type == OBJECT_MOBILErr ||
|
||||
type == OBJECT_MOBILErs ) // large caterpillars?
|
||||
type == OBJECT_MOBILErs ||
|
||||
type == OBJECT_MOBILErp ) // large caterpillars?
|
||||
{
|
||||
if ( aTime-m_lastSlideParticle >= m_engine->ParticleAdapt(0.05f) )
|
||||
{
|
||||
|
@ -3456,7 +3467,7 @@ void CPhysics::MotorParticle(float aTime, float rTime)
|
|||
}
|
||||
}
|
||||
|
||||
if ( type == OBJECT_MOBILEsa && m_bSwim )
|
||||
if ( (type == OBJECT_MOBILEsa || type == OBJECT_MOBILEst) && m_bSwim )
|
||||
{
|
||||
h = Math::Mod(aTime, 3.0f);
|
||||
if ( h < 1.5f && ( h < 0.5f || h > 0.9f ) ) return;
|
||||
|
@ -3490,7 +3501,8 @@ void CPhysics::MotorParticle(float aTime, float rTime)
|
|||
if ( type == OBJECT_MOBILErt ||
|
||||
type == OBJECT_MOBILErc ||
|
||||
type == OBJECT_MOBILErr ||
|
||||
type == OBJECT_MOBILErs )
|
||||
type == OBJECT_MOBILErs ||
|
||||
type == OBJECT_MOBILErp )
|
||||
{
|
||||
if ( !m_bMotor ) return;
|
||||
|
||||
|
|
|
@ -86,6 +86,8 @@ const char* GetObjectName(ObjectType type)
|
|||
if ( type == OBJECT_MOBILEtt ) return "TrackedTrainer";
|
||||
if ( type == OBJECT_MOBILEft ) return "WingedTrainer";
|
||||
if ( type == OBJECT_MOBILEit ) return "LeggedTrainer";
|
||||
if ( type == OBJECT_MOBILErp ) return "HeavyTrainer";
|
||||
if ( type == OBJECT_MOBILEst ) return "AmphibiousTrainer";
|
||||
if ( type == OBJECT_MOBILEwa ) return "WheeledGrabber";
|
||||
if ( type == OBJECT_MOBILEta ) return "TrackedGrabber";
|
||||
if ( type == OBJECT_MOBILEfa ) return "WingedGrabber";
|
||||
|
@ -217,6 +219,8 @@ std::string GetHelpFilename(ObjectType type)
|
|||
if ( type == OBJECT_MOBILEtt ) helpfile = "object/bottr";
|
||||
if ( type == OBJECT_MOBILEft ) helpfile = "object/bottr";
|
||||
if ( type == OBJECT_MOBILEit ) helpfile = "object/bottr";
|
||||
if ( type == OBJECT_MOBILErp ) helpfile = "object/bottr";
|
||||
if ( type == OBJECT_MOBILEst ) helpfile = "object/bottr";
|
||||
if ( type == OBJECT_MOBILEtg ) helpfile = "object/bottarg";
|
||||
if ( type == OBJECT_MOBILEdr ) helpfile = "object/botdraw";
|
||||
if ( type == OBJECT_MOBILEpr ) helpfile = "object/bottr";
|
||||
|
|
|
@ -815,6 +815,8 @@ bool runSearch(CBotVar* var, Math::Vector pos, int& exception, std::function<boo
|
|||
type_v.push_back(OBJECT_MOBILEtt);
|
||||
type_v.push_back(OBJECT_MOBILEft);
|
||||
type_v.push_back(OBJECT_MOBILEit);
|
||||
type_v.push_back(OBJECT_MOBILErp);
|
||||
type_v.push_back(OBJECT_MOBILEst);
|
||||
}
|
||||
type_v.push_back(static_cast<ObjectType>(array->GetValInt()));
|
||||
array = array->GetNext();
|
||||
|
@ -832,6 +834,8 @@ bool runSearch(CBotVar* var, Math::Vector pos, int& exception, std::function<boo
|
|||
type_v.push_back(OBJECT_MOBILEtt);
|
||||
type_v.push_back(OBJECT_MOBILEft);
|
||||
type_v.push_back(OBJECT_MOBILEit);
|
||||
type_v.push_back(OBJECT_MOBILErp);
|
||||
type_v.push_back(OBJECT_MOBILEst);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1004,6 +1008,8 @@ bool runRadar(CBotVar* var, std::function<bool(std::vector<ObjectType>, float, f
|
|||
type_v.push_back(OBJECT_MOBILEtt);
|
||||
type_v.push_back(OBJECT_MOBILEft);
|
||||
type_v.push_back(OBJECT_MOBILEit);
|
||||
type_v.push_back(OBJECT_MOBILErp);
|
||||
type_v.push_back(OBJECT_MOBILEst);
|
||||
}
|
||||
type_v.push_back(static_cast<ObjectType>(array->GetValInt()));
|
||||
array = array->GetNext();
|
||||
|
@ -1021,6 +1027,8 @@ bool runRadar(CBotVar* var, std::function<bool(std::vector<ObjectType>, float, f
|
|||
type_v.push_back(OBJECT_MOBILEtt);
|
||||
type_v.push_back(OBJECT_MOBILEft);
|
||||
type_v.push_back(OBJECT_MOBILEit);
|
||||
type_v.push_back(OBJECT_MOBILErp);
|
||||
type_v.push_back(OBJECT_MOBILEst);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1189,6 +1197,8 @@ bool CScriptFunctions::rDetect(CBotVar* var, CBotVar* result, int& exception, vo
|
|||
type_v.push_back(OBJECT_MOBILEtt);
|
||||
type_v.push_back(OBJECT_MOBILEft);
|
||||
type_v.push_back(OBJECT_MOBILEit);
|
||||
type_v.push_back(OBJECT_MOBILErp);
|
||||
type_v.push_back(OBJECT_MOBILEst);
|
||||
}
|
||||
type_v.push_back(static_cast<ObjectType>(array->GetValInt()));
|
||||
array = array->GetNext();
|
||||
|
@ -1206,6 +1216,8 @@ bool CScriptFunctions::rDetect(CBotVar* var, CBotVar* result, int& exception, vo
|
|||
type_v.push_back(OBJECT_MOBILEtt);
|
||||
type_v.push_back(OBJECT_MOBILEft);
|
||||
type_v.push_back(OBJECT_MOBILEit);
|
||||
type_v.push_back(OBJECT_MOBILErp);
|
||||
type_v.push_back(OBJECT_MOBILEst);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -880,6 +880,8 @@ void CMap::DrawObjectIcon(Math::Point pos, Math::Point dim, MapColor color,
|
|||
case OBJECT_MOBILEtt: icon = 5; break;
|
||||
case OBJECT_MOBILEwt: icon = 30; break;
|
||||
case OBJECT_MOBILEit: icon = 7; break;
|
||||
case OBJECT_MOBILErp: icon = 9; break;
|
||||
case OBJECT_MOBILEst: icon = 10; break;
|
||||
case OBJECT_MOBILEtg: icon = 45; break;
|
||||
case OBJECT_MOBILEdr: icon = 48; break;
|
||||
case OBJECT_APOLLO2: icon = 49; break;
|
||||
|
@ -903,6 +905,8 @@ void CMap::DrawObjectIcon(Math::Point pos, Math::Point dim, MapColor color,
|
|||
case OBJECT_MOBILEft:
|
||||
case OBJECT_MOBILEtt:
|
||||
case OBJECT_MOBILEit:
|
||||
case OBJECT_MOBILErp:
|
||||
case OBJECT_MOBILEst:
|
||||
m_engine->SetTexture("textures/interface/button4.png"); break;
|
||||
default: ; // button3.png
|
||||
}
|
||||
|
@ -1277,6 +1281,8 @@ void CMap::UpdateObject(CObject* pObj)
|
|||
type == OBJECT_MOBILEtt ||
|
||||
type == OBJECT_MOBILEft ||
|
||||
type == OBJECT_MOBILEit ||
|
||||
type == OBJECT_MOBILErp ||
|
||||
type == OBJECT_MOBILEst ||
|
||||
type == OBJECT_MOBILEdr ||
|
||||
type == OBJECT_APOLLO2 ) // moving vehicle?
|
||||
{
|
||||
|
|
|
@ -238,6 +238,8 @@ int CMainShort::GetShortcutIcon(ObjectType type)
|
|||
case OBJECT_MOBILEtt: icon = 5; break;
|
||||
case OBJECT_MOBILEwt: icon = 30; break;
|
||||
case OBJECT_MOBILEit: icon = 7; break;
|
||||
case OBJECT_MOBILErp: icon = 9; break;
|
||||
case OBJECT_MOBILEst: icon = 10; break;
|
||||
case OBJECT_MOBILEtg: icon = 45; break;
|
||||
case OBJECT_MOBILEdr: icon = 48; break;
|
||||
case OBJECT_APOLLO2: icon = 49; break;
|
||||
|
@ -254,6 +256,8 @@ int CMainShort::GetShortcutIcon(ObjectType type)
|
|||
case OBJECT_MOBILEft:
|
||||
case OBJECT_MOBILEtt:
|
||||
case OBJECT_MOBILEit:
|
||||
case OBJECT_MOBILErp:
|
||||
case OBJECT_MOBILEst:
|
||||
return 192+icon;
|
||||
default:
|
||||
return 128+icon;
|
||||
|
|
|
@ -875,6 +875,8 @@ bool CObjectInterface::CreateInterface(bool bSelect)
|
|||
type == OBJECT_MOBILEtt ||
|
||||
type == OBJECT_MOBILEwt ||
|
||||
type == OBJECT_MOBILEit ||
|
||||
type == OBJECT_MOBILErp ||
|
||||
type == OBJECT_MOBILEst ||
|
||||
type == OBJECT_MOBILEdr ||
|
||||
type == OBJECT_MOTHER ||
|
||||
type == OBJECT_ANT ||
|
||||
|
@ -1920,6 +1922,8 @@ void CObjectInterface::UpdateInterface()
|
|||
type == OBJECT_MOBILEtt ||
|
||||
type == OBJECT_MOBILEwt ||
|
||||
type == OBJECT_MOBILEit ||
|
||||
type == OBJECT_MOBILErp ||
|
||||
type == OBJECT_MOBILEst ||
|
||||
type == OBJECT_MOBILEdr ||
|
||||
type == OBJECT_MOTHER ||
|
||||
type == OBJECT_ANT ||
|
||||
|
|
Loading…
Reference in New Issue