From 05f1b225a03adeab4cda01a6c96595359464ac0e Mon Sep 17 00:00:00 2001 From: "FWoltermann@gmail.com" Date: Sun, 17 Jun 2012 06:38:09 +0000 Subject: (Hopefully) Allows SWACS ships to do more than sit around. Needs testing. --- Stars45/CampaignMissionStarship.cpp | 1 + Stars45/CampaignSituationReport.cpp | 2 +- Stars45/CombatUnit.cpp | 23 +++-------------------- Stars45/CombatUnit.h | 1 - Stars45/MsnElemDlg.cpp | 2 +- Stars45/Ship.cpp | 2 +- Stars45/StarshipTacticalAI.cpp | 2 +- Stars45/TacticalAI.cpp | 4 ++-- 8 files changed, 10 insertions(+), 27 deletions(-) diff --git a/Stars45/CampaignMissionStarship.cpp b/Stars45/CampaignMissionStarship.cpp index 176aaed..654b045 100644 --- a/Stars45/CampaignMissionStarship.cpp +++ b/Stars45/CampaignMissionStarship.cpp @@ -811,6 +811,7 @@ CampaignMissionStarship::CreateTargetsAssault() case Ship::CRUISER: extra = 50e3; break; case Ship::BATTLESHIP: extra = 70e3; break; case Ship::DREADNAUGHT: extra = 80e3; break; + case Ship::SWACS: extra = 30e3; break; case Ship::CARRIER: extra = 90e3; break; } } diff --git a/Stars45/CampaignSituationReport.cpp b/Stars45/CampaignSituationReport.cpp index 2c85a70..123fd63 100644 --- a/Stars45/CampaignSituationReport.cpp +++ b/Stars45/CampaignSituationReport.cpp @@ -371,7 +371,7 @@ CampaignSituationReport::GetThreatInfo() mission_role == Mission::TRANSPORT) continue; - if (elem->GetDesign()->type >= Ship::MINE && elem->GetDesign()->type <= Ship::SWACS) + if (elem->GetDesign()->type >= Ship::MINE && elem->GetDesign()->type <= Ship::DEFSAT) enemy_sites += elem->Count(); else if (elem->IsDropship()) diff --git a/Stars45/CombatUnit.cpp b/Stars45/CombatUnit.cpp index 951cb87..f03b349 100644 --- a/Stars45/CombatUnit.cpp +++ b/Stars45/CombatUnit.cpp @@ -114,26 +114,6 @@ CombatUnit::GetDescription() const // +----------------------------------------------------------------------+ bool -CombatUnit::CanAssign() const -{ - bool result = false; - - switch (type) { - case Ship::FIGHTER: - case Ship::ATTACK: - case Ship::CORVETTE: - case Ship::FRIGATE: - case Ship::DESTROYER: - case Ship::CRUISER: - case Ship::CARRIER: result = true; break; - } - - return result; -} - -// +----------------------------------------------------------------------+ - -bool CombatUnit::CanLaunch() const { bool result = false; @@ -262,6 +242,9 @@ double CombatUnit::PowerVersus(CombatUnit* tgt) const else if (type == Ship::CARRIER) { return 0; } + else if (type == Ship::SWACS) { + return 0; + } else if (type == Ship::CRUISER) { if (tgt->type <= Ship::ATTACK) return type * effectiveness; diff --git a/Stars45/CombatUnit.h b/Stars45/CombatUnit.h index 5d60772..71d8e8f 100644 --- a/Stars45/CombatUnit.h +++ b/Stars45/CombatUnit.h @@ -43,7 +43,6 @@ public: int GetValue() const; int GetSingleValue() const; bool CanDefend(CombatUnit* unit) const; - bool CanAssign() const; bool CanLaunch() const; double PowerVersus(CombatUnit* tgt) const; int AssignMission(); diff --git a/Stars45/MsnElemDlg.cpp b/Stars45/MsnElemDlg.cpp index 3677b0e..a792b74 100644 --- a/Stars45/MsnElemDlg.cpp +++ b/Stars45/MsnElemDlg.cpp @@ -145,6 +145,7 @@ MsnElemDlg::Show() cmb_class->AddItem(Ship::ClassName(Ship::CRUISER)); cmb_class->AddItem(Ship::ClassName(Ship::BATTLESHIP)); cmb_class->AddItem(Ship::ClassName(Ship::CARRIER)); + cmb_class->AddItem(Ship::ClassName(Ship::SWACS)); cmb_class->AddItem(Ship::ClassName(Ship::DREADNAUGHT)); cmb_class->AddItem(Ship::ClassName(Ship::STATION)); cmb_class->AddItem(Ship::ClassName(Ship::FARCASTER)); @@ -152,7 +153,6 @@ MsnElemDlg::Show() cmb_class->AddItem(Ship::ClassName(Ship::MINE)); cmb_class->AddItem(Ship::ClassName(Ship::COMSAT)); cmb_class->AddItem(Ship::ClassName(Ship::DEFSAT)); - cmb_class->AddItem(Ship::ClassName(Ship::SWACS)); cmb_class->AddItem(Ship::ClassName(Ship::BUILDING)); cmb_class->AddItem(Ship::ClassName(Ship::FACTORY)); diff --git a/Stars45/Ship.cpp b/Stars45/Ship.cpp index 9063d01..c90038c 100644 --- a/Stars45/Ship.cpp +++ b/Stars45/Ship.cpp @@ -5261,6 +5261,7 @@ Ship::Value(int type) case CRUISER: value = 800; break; case BATTLESHIP: value = 1000; break; case CARRIER: value = 1500; break; + case SWACS: value = 500; break; case DREADNAUGHT: value = 1500; break; case STATION: value = 2500; break; @@ -5269,7 +5270,6 @@ Ship::Value(int type) case MINE: value = 20; break; case COMSAT: value = 200; break; case DEFSAT: value = 300; break; - case SWACS: value = 500; break; case BUILDING: value = 100; break; case FACTORY: value = 250; break; diff --git a/Stars45/StarshipTacticalAI.cpp b/Stars45/StarshipTacticalAI.cpp index 09d57e2..61c126d 100644 --- a/Stars45/StarshipTacticalAI.cpp +++ b/Stars45/StarshipTacticalAI.cpp @@ -202,7 +202,7 @@ void StarshipTacticalAI::CheckBugOut(Ship* c_ship, double rng) { // see if carrier should bug out... - if (!ship || !c_ship || ship->Class() != Ship::CARRIER) + if (!ship || !c_ship || ship->Class() != Ship::CARRIER || ship->Class() != Ship::SWACS) return; if (bugout) diff --git a/Stars45/TacticalAI.cpp b/Stars45/TacticalAI.cpp index 32d364a..f020298 100644 --- a/Stars45/TacticalAI.cpp +++ b/Stars45/TacticalAI.cpp @@ -630,7 +630,7 @@ TacticalAI::SelectTargetOpportunity() if (rogue || tgt_ok) { if (c_ship && c_ship != ship && !c_ship->InTransition()) { if (c_ship->Class() < Ship::DESTROYER || - (c_ship->Class() >= Ship::MINE && c_ship->Class() <= Ship::SWACS)) { + (c_ship->Class() >= Ship::MINE && c_ship->Class() <= Ship::DEFSAT)) { // found an enemy, check distance: double dist = (ship->Location() - c_ship->Location()).length(); @@ -736,7 +736,7 @@ TacticalAI::SelectTargetOpportunity() } } - if (ship->Class() != Ship::CARRIER) + if (ship->Class() != Ship::CARRIER || ship->Class() != Ship::SWACS) ship_ai->SetTarget(potential_target); } -- cgit v1.1