From 69209c38968c6f4066a772e0a51a2928749217de Mon Sep 17 00:00:00 2001 From: "FWoltermann@gmail.com" Date: Fri, 9 Dec 2011 19:00:23 +0000 Subject: Re-indenting the code to use standard tabs. Yes, I know this is pretty pointless, but who cares? --- Stars45/CampaignPlanEvent.cpp | 2278 ++++++++++++++++++++--------------------- 1 file changed, 1139 insertions(+), 1139 deletions(-) (limited to 'Stars45/CampaignPlanEvent.cpp') diff --git a/Stars45/CampaignPlanEvent.cpp b/Stars45/CampaignPlanEvent.cpp index bb1480d..10224c0 100644 --- a/Stars45/CampaignPlanEvent.cpp +++ b/Stars45/CampaignPlanEvent.cpp @@ -1,18 +1,18 @@ /* Project Starshatter 4.5 - Destroyer Studios LLC - Copyright © 1997-2004. All Rights Reserved. + Destroyer Studios LLC + Copyright © 1997-2004. All Rights Reserved. - SUBSYSTEM: Stars.exe - FILE: CampaignPlanEvent.cpp - AUTHOR: John DiCamillo + SUBSYSTEM: Stars.exe + FILE: CampaignPlanEvent.cpp + AUTHOR: John DiCamillo - OVERVIEW - ======== - CampaignPlanEvent generates simulated combat - events based on a statistical analysis of the - combatants within the context of a dynamic - campaign. + OVERVIEW + ======== + CampaignPlanEvent generates simulated combat + events based on a statistical analysis of the + combatants within the context of a dynamic + campaign. */ #include "MemDebug.h" @@ -34,11 +34,11 @@ // +--------------------------------------------------------------------+ CampaignPlanEvent::CampaignPlanEvent(Campaign* c) - : CampaignPlan(c), event_time(0) +: CampaignPlan(c), event_time(0) { - if (campaign) { - event_time = (int) campaign->GetTime(); - } + if (campaign) { + event_time = (int) campaign->GetTime(); + } } CampaignPlanEvent::~CampaignPlanEvent() @@ -49,26 +49,26 @@ CampaignPlanEvent::~CampaignPlanEvent() void CampaignPlanEvent::ExecFrame() { - if (campaign && campaign->IsActive()) { - if (!campaign->GetPlayerGroup()) - return; + if (campaign && campaign->IsActive()) { + if (!campaign->GetPlayerGroup()) + return; - // once every twenty minutes is plenty: - if (Campaign::Stardate() - exec_time < 1200) - return; + // once every twenty minutes is plenty: + if (Campaign::Stardate() - exec_time < 1200) + return; - if (!ExecScriptedEvents()) - ExecStatisticalEvents(); + if (!ExecScriptedEvents()) + ExecStatisticalEvents(); - exec_time = Campaign::Stardate(); - event_time = (int) campaign->GetTime(); - } + exec_time = Campaign::Stardate(); + event_time = (int) campaign->GetTime(); + } } void CampaignPlanEvent::SetLockout(int seconds) { - exec_time = Campaign::Stardate() + seconds; + exec_time = Campaign::Stardate() + seconds; } // +--------------------------------------------------------------------+ @@ -76,304 +76,304 @@ CampaignPlanEvent::SetLockout(int seconds) bool CampaignPlanEvent::ExecScriptedEvents() { - bool scripted_event = false; - - if (campaign) { - ListIter iter = campaign->GetActions(); - while (++iter) { - CombatAction* action = iter.value(); - - if (action->IsAvailable()) { - - switch (action->Type()) { - case CombatAction::COMBAT_EVENT: - { - CombatEvent* event = new(__FILE__,__LINE__) - CombatEvent(campaign, - action->Subtype(), - (int) campaign->GetTime(), - action->GetIFF(), - action->Source(), - action->Region()); - - if (!event) - return false; - - event->SetTitle(action->GetText()); - - if (*action->Filename() != 0) - event->SetFilename(action->Filename()); - - if (*action->ImageFile() != 0) - event->SetImageFile(action->ImageFile()); - - if (*action->SceneFile() != 0) - event->SetSceneFile(action->SceneFile()); - - event->Load(); - - ProsecuteKills(action); - campaign->GetEvents().append(event); - - action->FireAction(); - scripted_event = true; - - if (action->Subtype() == CombatEvent::CAMPAIGN_END) { - ::Print(">>>>> CAMPAIGN %d END (Action %03d) <<<<<\n", campaign->GetCampaignId(), action->Identity()); - campaign->SetStatus(Campaign::CAMPAIGN_SUCCESS); - } - - else if (action->Subtype() == CombatEvent::CAMPAIGN_FAIL) { - ::Print(">>>>> CAMPAIGN %d FAIL (Action %03d) <<<<<\n", campaign->GetCampaignId(), action->Identity()); - campaign->SetStatus(Campaign::CAMPAIGN_FAILED); - } - } - break; - - case CombatAction::STRATEGIC_DIRECTIVE: - { - CombatGroup* g = campaign->FindGroup(action->GetIFF(), - action->AssetType(), - action->AssetId()); - - if (g) { - g->SetStrategicDirection(action->GetText()); - action->FireAction(); - } - else { - action->FailAction(); - } - - scripted_event = true; - } - break; - - case CombatAction::CAMPAIGN_SITUATION: - { - campaign->SetSituation(action->GetText()); - action->FireAction(); - scripted_event = true; - } - break; - - case CombatAction::CAMPAIGN_ORDERS: - { - campaign->SetOrders(action->GetText()); - action->FireAction(); - scripted_event = true; - } - break; - - case CombatAction::INTEL_EVENT: - { - CombatGroup* g = campaign->FindGroup(action->GetIFF(), - action->AssetType(), - action->AssetId()); - - if (g) { - g->SetIntelLevel(action->Subtype()); - action->FireAction(); - } - else { - ::Print("WARNING: Action %d (intel level) Could not find group (IFF:%d, type:%d, id:%d)\n", - action->Identity(), - action->GetIFF(), - action->AssetType(), - action->AssetId()); - - action->FailAction(); - } - - scripted_event = true; - } - break; - - case CombatAction::ZONE_ASSIGNMENT: - { - CombatGroup* g = campaign->FindGroup(action->GetIFF(), - action->AssetType(), - action->AssetId()); - - if (g) { - bool found = false; - - if (*action->Region()) { - CombatZone* zone = campaign->GetZone(action->Region()); - - if (zone) { - g->SetAssignedZone(zone); - g->SetZoneLock(true); - found = true; - - // don't announce the move unless it's for the player's team: - if (action->GetIFF() == campaign->GetPlayerIFF() && - stricmp(action->GetText(), "do-not-display")) { - CombatEvent* event = new(__FILE__,__LINE__) - CombatEvent(campaign, - CombatEvent::MOVE_TO, - (int) campaign->GetTime(), - action->GetIFF(), - CombatEvent::FORCOM, - action->Region()); - - if (!event) - return false; - - Text title = Text(g->Name()) + " Orders: Proceed to " + action->Region() + " Sector"; - event->SetTitle(title); - - double eta = campaign->GetTime() + 3600; - eta -= fmod(eta, 1800); - - char text[64]; - FormatDayTime(text, eta); - - Text info = "ORDERS:\n\nEffective immediately, "; - info += g->GetDescription(); - info += " and all associated units shall proceed to "; - info += action->Region(); - info += " sector and commence spaceborne operations in that area. ETA rendevous point "; - info += text; - info += ".\n\nFleet Admiral A. Evars FORCOM\nCommanding"; - - event->SetInformation(info); - - if (*action->ImageFile() != 0) - event->SetImageFile(action->ImageFile()); - - if (*action->SceneFile() != 0) - event->SetSceneFile(action->SceneFile()); - - event->Load(); - campaign->GetEvents().append(event); - } - } - } - - if (!found) { - ::Print("WARNING: Action %d Could not find assigned zone '%s' for '%s'\n", - action->Identity(), - action->Region() ? action->Region() : "NULL", - g->Name().data()); - - g->SetAssignedZone(0); - } - - action->FireAction(); - } - else { - ::Print("WARNING: Action %d (zone assignment) Could not find group (IFF:%d, type:%d, id:%d)\n", - action->Identity(), - action->GetIFF(), - action->AssetType(), - action->AssetId()); - - action->FailAction(); - } - - scripted_event = true; - } - break; - - case CombatAction::SYSTEM_ASSIGNMENT: - { - CombatGroup* g = campaign->FindGroup(action->GetIFF(), - action->AssetType(), - action->AssetId()); - - if (g) { - bool found = false; - - if (*action->System()) { - Text system = action->System(); - - if (campaign->GetSystem(system)) { - g->SetAssignedSystem(system); - found = true; - - // don't announce the move unless it's for the player's team: - if (action->GetIFF() == campaign->GetPlayerIFF() && - stricmp(action->GetText(), "do-not-display")) { - CombatEvent* event = new(__FILE__,__LINE__) - CombatEvent(campaign, - CombatEvent::MOVE_TO, - (int) campaign->GetTime(), - action->GetIFF(), - CombatEvent::FORCOM, - action->Region()); - - if (!event) - return false; - - Text title = Text(g->Name()) + " Orders: Proceed to " + action->System() + " System"; - event->SetTitle(title); - - double eta = campaign->GetTime() + 3600; - eta -= fmod(eta, 1800); - - char text[64]; - FormatDayTime(text, eta); - - Text info = "ORDERS:\n\nEffective immediately, "; - info += g->GetDescription(); - info += " and all associated units shall proceed to the "; - info += action->System(); - info += " star system and commence spaceborne operations in that area. ETA rendevous point "; - info += text; - info += ".\n\nFleet Admiral A. Evars FORCOM\nCommanding"; - - event->SetInformation(info); - - if (*action->ImageFile() != 0) - event->SetImageFile(action->ImageFile()); - - if (*action->SceneFile() != 0) - event->SetSceneFile(action->SceneFile()); - - event->Load(); - campaign->GetEvents().append(event); - } - } - } - - if (!found) { - ::Print("WARNING: Action %d Could not find assigned system '%s' for '%s'\n", - action->Identity(), - action->System() ? action->System() : "NULL", - g->Name().data()); - - g->SetAssignedSystem(""); - } - - action->FireAction(); - } - else { - ::Print("WARNING: Action %d (system assignment) Could not find group (IFF:%d, type:%d, id:%d)\n", - action->Identity(), - action->GetIFF(), - action->AssetType(), - action->AssetId()); - - action->FailAction(); - } - - scripted_event = true; - } - break; - - case CombatAction::NO_ACTION: - action->FireAction(); - scripted_event = true; - break; - - default: - break; - } - } - } - } - - return scripted_event; + bool scripted_event = false; + + if (campaign) { + ListIter iter = campaign->GetActions(); + while (++iter) { + CombatAction* action = iter.value(); + + if (action->IsAvailable()) { + + switch (action->Type()) { + case CombatAction::COMBAT_EVENT: + { + CombatEvent* event = new(__FILE__,__LINE__) + CombatEvent(campaign, + action->Subtype(), + (int) campaign->GetTime(), + action->GetIFF(), + action->Source(), + action->Region()); + + if (!event) + return false; + + event->SetTitle(action->GetText()); + + if (*action->Filename() != 0) + event->SetFilename(action->Filename()); + + if (*action->ImageFile() != 0) + event->SetImageFile(action->ImageFile()); + + if (*action->SceneFile() != 0) + event->SetSceneFile(action->SceneFile()); + + event->Load(); + + ProsecuteKills(action); + campaign->GetEvents().append(event); + + action->FireAction(); + scripted_event = true; + + if (action->Subtype() == CombatEvent::CAMPAIGN_END) { + ::Print(">>>>> CAMPAIGN %d END (Action %03d) <<<<<\n", campaign->GetCampaignId(), action->Identity()); + campaign->SetStatus(Campaign::CAMPAIGN_SUCCESS); + } + + else if (action->Subtype() == CombatEvent::CAMPAIGN_FAIL) { + ::Print(">>>>> CAMPAIGN %d FAIL (Action %03d) <<<<<\n", campaign->GetCampaignId(), action->Identity()); + campaign->SetStatus(Campaign::CAMPAIGN_FAILED); + } + } + break; + + case CombatAction::STRATEGIC_DIRECTIVE: + { + CombatGroup* g = campaign->FindGroup(action->GetIFF(), + action->AssetType(), + action->AssetId()); + + if (g) { + g->SetStrategicDirection(action->GetText()); + action->FireAction(); + } + else { + action->FailAction(); + } + + scripted_event = true; + } + break; + + case CombatAction::CAMPAIGN_SITUATION: + { + campaign->SetSituation(action->GetText()); + action->FireAction(); + scripted_event = true; + } + break; + + case CombatAction::CAMPAIGN_ORDERS: + { + campaign->SetOrders(action->GetText()); + action->FireAction(); + scripted_event = true; + } + break; + + case CombatAction::INTEL_EVENT: + { + CombatGroup* g = campaign->FindGroup(action->GetIFF(), + action->AssetType(), + action->AssetId()); + + if (g) { + g->SetIntelLevel(action->Subtype()); + action->FireAction(); + } + else { + ::Print("WARNING: Action %d (intel level) Could not find group (IFF:%d, type:%d, id:%d)\n", + action->Identity(), + action->GetIFF(), + action->AssetType(), + action->AssetId()); + + action->FailAction(); + } + + scripted_event = true; + } + break; + + case CombatAction::ZONE_ASSIGNMENT: + { + CombatGroup* g = campaign->FindGroup(action->GetIFF(), + action->AssetType(), + action->AssetId()); + + if (g) { + bool found = false; + + if (*action->Region()) { + CombatZone* zone = campaign->GetZone(action->Region()); + + if (zone) { + g->SetAssignedZone(zone); + g->SetZoneLock(true); + found = true; + + // don't announce the move unless it's for the player's team: + if (action->GetIFF() == campaign->GetPlayerIFF() && + stricmp(action->GetText(), "do-not-display")) { + CombatEvent* event = new(__FILE__,__LINE__) + CombatEvent(campaign, + CombatEvent::MOVE_TO, + (int) campaign->GetTime(), + action->GetIFF(), + CombatEvent::FORCOM, + action->Region()); + + if (!event) + return false; + + Text title = Text(g->Name()) + " Orders: Proceed to " + action->Region() + " Sector"; + event->SetTitle(title); + + double eta = campaign->GetTime() + 3600; + eta -= fmod(eta, 1800); + + char text[64]; + FormatDayTime(text, eta); + + Text info = "ORDERS:\n\nEffective immediately, "; + info += g->GetDescription(); + info += " and all associated units shall proceed to "; + info += action->Region(); + info += " sector and commence spaceborne operations in that area. ETA rendevous point "; + info += text; + info += ".\n\nFleet Admiral A. Evars FORCOM\nCommanding"; + + event->SetInformation(info); + + if (*action->ImageFile() != 0) + event->SetImageFile(action->ImageFile()); + + if (*action->SceneFile() != 0) + event->SetSceneFile(action->SceneFile()); + + event->Load(); + campaign->GetEvents().append(event); + } + } + } + + if (!found) { + ::Print("WARNING: Action %d Could not find assigned zone '%s' for '%s'\n", + action->Identity(), + action->Region() ? action->Region() : "NULL", + g->Name().data()); + + g->SetAssignedZone(0); + } + + action->FireAction(); + } + else { + ::Print("WARNING: Action %d (zone assignment) Could not find group (IFF:%d, type:%d, id:%d)\n", + action->Identity(), + action->GetIFF(), + action->AssetType(), + action->AssetId()); + + action->FailAction(); + } + + scripted_event = true; + } + break; + + case CombatAction::SYSTEM_ASSIGNMENT: + { + CombatGroup* g = campaign->FindGroup(action->GetIFF(), + action->AssetType(), + action->AssetId()); + + if (g) { + bool found = false; + + if (*action->System()) { + Text system = action->System(); + + if (campaign->GetSystem(system)) { + g->SetAssignedSystem(system); + found = true; + + // don't announce the move unless it's for the player's team: + if (action->GetIFF() == campaign->GetPlayerIFF() && + stricmp(action->GetText(), "do-not-display")) { + CombatEvent* event = new(__FILE__,__LINE__) + CombatEvent(campaign, + CombatEvent::MOVE_TO, + (int) campaign->GetTime(), + action->GetIFF(), + CombatEvent::FORCOM, + action->Region()); + + if (!event) + return false; + + Text title = Text(g->Name()) + " Orders: Proceed to " + action->System() + " System"; + event->SetTitle(title); + + double eta = campaign->GetTime() + 3600; + eta -= fmod(eta, 1800); + + char text[64]; + FormatDayTime(text, eta); + + Text info = "ORDERS:\n\nEffective immediately, "; + info += g->GetDescription(); + info += " and all associated units shall proceed to the "; + info += action->System(); + info += " star system and commence spaceborne operations in that area. ETA rendevous point "; + info += text; + info += ".\n\nFleet Admiral A. Evars FORCOM\nCommanding"; + + event->SetInformation(info); + + if (*action->ImageFile() != 0) + event->SetImageFile(action->ImageFile()); + + if (*action->SceneFile() != 0) + event->SetSceneFile(action->SceneFile()); + + event->Load(); + campaign->GetEvents().append(event); + } + } + } + + if (!found) { + ::Print("WARNING: Action %d Could not find assigned system '%s' for '%s'\n", + action->Identity(), + action->System() ? action->System() : "NULL", + g->Name().data()); + + g->SetAssignedSystem(""); + } + + action->FireAction(); + } + else { + ::Print("WARNING: Action %d (system assignment) Could not find group (IFF:%d, type:%d, id:%d)\n", + action->Identity(), + action->GetIFF(), + action->AssetType(), + action->AssetId()); + + action->FailAction(); + } + + scripted_event = true; + } + break; + + case CombatAction::NO_ACTION: + action->FireAction(); + scripted_event = true; + break; + + default: + break; + } + } + } + } + + return scripted_event; } // +--------------------------------------------------------------------+ @@ -381,65 +381,65 @@ CampaignPlanEvent::ExecScriptedEvents() void CampaignPlanEvent::ProsecuteKills(CombatAction* action) { - if (action->AssetKills().size() > 0) { - CombatGroup* g = campaign->FindGroup(action->GetIFF(), - action->AssetType(), - action->AssetId()); - - if (g) { - ListIter iter = action->AssetKills(); - while (++iter) { - Text* name = iter.value(); - CombatUnit* asset = g->FindUnit(*name); - - if (asset) { - int value_killed = asset->Kill(1); - - ListIter iter = campaign->GetCombatants(); - while (++iter) { - Combatant* c = iter.value(); - if (c->GetIFF() > 0 && c->GetIFF() != asset->GetIFF()) { - // damage to neutral assets must be scored to bad guys: - if (asset->GetIFF() > 0 || c->GetIFF() > 1) { - c->AddScore(value_killed); - break; - } - } - } - } - } - } - } - - if (action->TargetKills().size() > 0) { - CombatGroup* g = campaign->FindGroup(action->TargetIFF(), - action->TargetType(), - action->TargetId()); - - if (g) { - ListIter iter = action->TargetKills(); - while (++iter) { - Text* name = iter.value(); - CombatUnit* target = g->FindUnit(*name); - - if (target) { - int value_killed = target->Kill(1); - - ListIter iter = campaign->GetCombatants(); - while (++iter) { - Combatant* c = iter.value(); - if (c->GetIFF() > 0 && c->GetIFF() != target->GetIFF()) { - // damage to neutral assets must be scored to bad guys: - if (target->GetIFF() > 0 || c->GetIFF() > 1) { - c->AddScore(value_killed); - break; - } - } - } - } - } - } - } + if (action->AssetKills().size() > 0) { + CombatGroup* g = campaign->FindGroup(action->GetIFF(), + action->AssetType(), + action->AssetId()); + + if (g) { + ListIter iter = action->AssetKills(); + while (++iter) { + Text* name = iter.value(); + CombatUnit* asset = g->FindUnit(*name); + + if (asset) { + int value_killed = asset->Kill(1); + + ListIter iter = campaign->GetCombatants(); + while (++iter) { + Combatant* c = iter.value(); + if (c->GetIFF() > 0 && c->GetIFF() != asset->GetIFF()) { + // damage to neutral assets must be scored to bad guys: + if (asset->GetIFF() > 0 || c->GetIFF() > 1) { + c->AddScore(value_killed); + break; + } + } + } + } + } + } + } + + if (action->TargetKills().size() > 0) { + CombatGroup* g = campaign->FindGroup(action->TargetIFF(), + action->TargetType(), + action->TargetId()); + + if (g) { + ListIter iter = action->TargetKills(); + while (++iter) { + Text* name = iter.value(); + CombatUnit* target = g->FindUnit(*name); + + if (target) { + int value_killed = target->Kill(1); + + ListIter iter = campaign->GetCombatants(); + while (++iter) { + Combatant* c = iter.value(); + if (c->GetIFF() > 0 && c->GetIFF() != target->GetIFF()) { + // damage to neutral assets must be scored to bad guys: + if (target->GetIFF() > 0 || c->GetIFF() > 1) { + c->AddScore(value_killed); + break; + } + } + } + } + } + } + } } // +--------------------------------------------------------------------+ @@ -447,31 +447,31 @@ CampaignPlanEvent::ProsecuteKills(CombatAction* action) bool CampaignPlanEvent::ExecStatisticalEvents() { - bool result = false; - - if (campaign) { - ListIter iter = campaign->GetCombatants(); - while (++iter && !result) { - Combatant* c = iter.value(); - CombatAssignment* a = ChooseAssignment(c->GetForce()); - - // prefer assignments not in player's zone: - if (a) { - CombatGroup* objective = a->GetObjective(); - CombatGroup* player = campaign->GetPlayerGroup(); - - if (objective && player && - objective->GetCurrentZone() == player->GetCurrentZone()) - a = ChooseAssignment(c->GetForce()); - } - - if (a) { - result = CreateEvent(a); - } - } - } - - return result; + bool result = false; + + if (campaign) { + ListIter iter = campaign->GetCombatants(); + while (++iter && !result) { + Combatant* c = iter.value(); + CombatAssignment* a = ChooseAssignment(c->GetForce()); + + // prefer assignments not in player's zone: + if (a) { + CombatGroup* objective = a->GetObjective(); + CombatGroup* player = campaign->GetPlayerGroup(); + + if (objective && player && + objective->GetCurrentZone() == player->GetCurrentZone()) + a = ChooseAssignment(c->GetForce()); + } + + if (a) { + result = CreateEvent(a); + } + } + } + + return result; } // +--------------------------------------------------------------------+ @@ -479,120 +479,120 @@ CampaignPlanEvent::ExecStatisticalEvents() bool CampaignPlanEvent::CreateEvent(CombatAssignment* a) { - CombatEvent* event = 0; + CombatEvent* event = 0; - if (campaign && a && a->GetResource() && RandomChance(1,2)) { - event_time = (int) Random(event_time, campaign->GetTime()); + if (campaign && a && a->GetResource() && RandomChance(1,2)) { + event_time = (int) Random(event_time, campaign->GetTime()); - CombatGroup* group = a->GetResource(); + CombatGroup* group = a->GetResource(); - if (group == campaign->GetPlayerGroup()) { + if (group == campaign->GetPlayerGroup()) { - if (group->Type() == CombatGroup::DESTROYER_SQUADRON || - group->Type() == CombatGroup::BATTLE_GROUP || - group->Type() == CombatGroup::CARRIER_GROUP) { + if (group->Type() == CombatGroup::DESTROYER_SQUADRON || + group->Type() == CombatGroup::BATTLE_GROUP || + group->Type() == CombatGroup::CARRIER_GROUP) { - return false; - } - } + return false; + } + } - CombatGroup* target = a->GetObjective(); + CombatGroup* target = a->GetObjective(); - if (target && target == campaign->GetPlayerGroup()) { + if (target && target == campaign->GetPlayerGroup()) { - if (target->Type() == CombatGroup::DESTROYER_SQUADRON || - target->Type() == CombatGroup::BATTLE_GROUP || - target->Type() == CombatGroup::CARRIER_GROUP) { + if (target->Type() == CombatGroup::DESTROYER_SQUADRON || + target->Type() == CombatGroup::BATTLE_GROUP || + target->Type() == CombatGroup::CARRIER_GROUP) { - return false; - } - } + return false; + } + } - switch (a->Type()) { - case Mission::DEFEND: - event = CreateEventDefend(a); - break; + switch (a->Type()) { + case Mission::DEFEND: + event = CreateEventDefend(a); + break; - case Mission::ASSAULT: - if (group->IsStarshipGroup()) - event = CreateEventStarship(a); - else - event = CreateEventFighterAssault(a); - break; + case Mission::ASSAULT: + if (group->IsStarshipGroup()) + event = CreateEventStarship(a); + else + event = CreateEventFighterAssault(a); + break; - case Mission::STRIKE: - if (group->IsStarshipGroup()) - event = CreateEventStarship(a); - else - event = CreateEventFighterStrike(a); - break; + case Mission::STRIKE: + if (group->IsStarshipGroup()) + event = CreateEventStarship(a); + else + event = CreateEventFighterStrike(a); + break; - case Mission::SWEEP: - event = CreateEventFighterSweep(a); - break; - } + case Mission::SWEEP: + event = CreateEventFighterSweep(a); + break; + } - if (event) { - campaign->GetEvents().append(event); - return true; - } - } + if (event) { + campaign->GetEvents().append(event); + return true; + } + } - return false; + return false; } // +--------------------------------------------------------------------+ static void FindAssignments(CombatGroup* g, List& alist) { - if (!g) return; + if (!g) return; - alist.append(g->GetAssignments()); + alist.append(g->GetAssignments()); - ListIter iter = g->GetComponents(); - while (++iter) - FindAssignments(iter.value(), alist); + ListIter iter = g->GetComponents(); + while (++iter) + FindAssignments(iter.value(), alist); } CombatAssignment* CampaignPlanEvent::ChooseAssignment(CombatGroup* g) { - List alist; - FindAssignments(g, alist); + List alist; + FindAssignments(g, alist); - int tries = 5; + int tries = 5; - if (alist.size() > 0) { - while (tries-- > 0) { - int index = (int) Random(0, alist.size()); + if (alist.size() > 0) { + while (tries-- > 0) { + int index = (int) Random(0, alist.size()); - if (index >= alist.size()) - index = 0; + if (index >= alist.size()) + index = 0; - CombatAssignment* a = alist[index]; + CombatAssignment* a = alist[index]; - if (!a) continue; + if (!a) continue; - CombatGroup* resource = a->GetResource(); - CombatGroup* objective = a->GetObjective(); + CombatGroup* resource = a->GetResource(); + CombatGroup* objective = a->GetObjective(); - if (!resource || !objective) - continue; + if (!resource || !objective) + continue; - if (resource->IsReserve() || objective->IsReserve()) - continue; + if (resource->IsReserve() || objective->IsReserve()) + continue; - if (resource->CalcValue() < 50 || objective->CalcValue() < 50) - continue; + if (resource->CalcValue() < 50 || objective->CalcValue() < 50) + continue; - if (resource == campaign->GetPlayerGroup() || objective == campaign->GetPlayerGroup()) - continue; + if (resource == campaign->GetPlayerGroup() || objective == campaign->GetPlayerGroup()) + continue; - return a; - } - } + return a; + } + } - return 0; + return 0; } // +--------------------------------------------------------------------+ @@ -600,83 +600,83 @@ CampaignPlanEvent::ChooseAssignment(CombatGroup* g) CombatEvent* CampaignPlanEvent::CreateEventDefend(CombatAssignment* a) { - bool friendly = IsFriendlyAssignment(a); - - if (!friendly) - return 0; - - CombatEvent* event = 0; - CombatGroup* group = a->GetResource(); - CombatGroup* obj = a->GetObjective(); - CombatUnit* unit = group->GetRandomUnit(); - CombatUnit* tgt = obj->GetRandomUnit(); - - if (!unit || !tgt) - return 0; - - bool success = Success(a); - Text rgn = group->GetRegion(); - Text title = Text(group->Name()) + " in Defensive Engagement"; - Text info; - - event = new(__FILE__,__LINE__) CombatEvent(campaign, - CombatEvent::DEFEND, - event_time, - group->GetIFF(), - CombatEvent::TACNET, - rgn); - - if (!event) - return 0; - - int tgt_count = 0; - int unit_count = 0; - - if (!success) { - if (tgt) { - if (tgt->Kill(1) > 0) - tgt_count++; - Combatant* c = group->GetCombatant(); - if (c) c->AddScore(tgt->GetSingleValue()); - } - - if (unit && RandomChance(1,5)) { - if (unit->Kill(1) > 0) - unit_count++; - Combatant* c = obj->GetCombatant(); - if (c) c->AddScore(unit->GetSingleValue()); - } - } - - CombatGroup* us = group; - CombatGroup* them = obj; - int us_count = unit_count; - int them_count = tgt_count; - - if (obj->IsStrikeTarget()) { - info = Text("EVENT: ") + rgn + " Sector\n\n"; - } - - else { - info = Text("MISSION: Escort ") + obj->Name() + ", " + rgn + " Sector\n\n"; - } - - info += GetTeamName(group); - info += Text(" ") + group->GetDescription(); - - if (success) - info += " successfully defended "; - else - info += " was unable to defend "; - - info += GetTeamName(obj); - info += Text(" ") + obj->GetDescription() + ".\n\n"; - - // need to find an enemy group to do the attacking... - - event->SetTitle(title); - event->SetInformation(info); - return event; + bool friendly = IsFriendlyAssignment(a); + + if (!friendly) + return 0; + + CombatEvent* event = 0; + CombatGroup* group = a->GetResource(); + CombatGroup* obj = a->GetObjective(); + CombatUnit* unit = group->GetRandomUnit(); + CombatUnit* tgt = obj->GetRandomUnit(); + + if (!unit || !tgt) + return 0; + + bool success = Success(a); + Text rgn = group->GetRegion(); + Text title = Text(group->Name()) + " in Defensive Engagement"; + Text info; + + event = new(__FILE__,__LINE__) CombatEvent(campaign, + CombatEvent::DEFEND, + event_time, + group->GetIFF(), + CombatEvent::TACNET, + rgn); + + if (!event) + return 0; + + int tgt_count = 0; + int unit_count = 0; + + if (!success) { + if (tgt) { + if (tgt->Kill(1) > 0) + tgt_count++; + Combatant* c = group->GetCombatant(); + if (c) c->AddScore(tgt->GetSingleValue()); + } + + if (unit && RandomChance(1,5)) { + if (unit->Kill(1) > 0) + unit_count++; + Combatant* c = obj->GetCombatant(); + if (c) c->AddScore(unit->GetSingleValue()); + } + } + + CombatGroup* us = group; + CombatGroup* them = obj; + int us_count = unit_count; + int them_count = tgt_count; + + if (obj->IsStrikeTarget()) { + info = Text("EVENT: ") + rgn + " Sector\n\n"; + } + + else { + info = Text("MISSION: Escort ") + obj->Name() + ", " + rgn + " Sector\n\n"; + } + + info += GetTeamName(group); + info += Text(" ") + group->GetDescription(); + + if (success) + info += " successfully defended "; + else + info += " was unable to defend "; + + info += GetTeamName(obj); + info += Text(" ") + obj->GetDescription() + ".\n\n"; + + // need to find an enemy group to do the attacking... + + event->SetTitle(title); + event->SetInformation(info); + return event; } // +--------------------------------------------------------------------+ @@ -684,136 +684,136 @@ CampaignPlanEvent::CreateEventDefend(CombatAssignment* a) CombatEvent* CampaignPlanEvent::CreateEventFighterAssault(CombatAssignment* a) { - CombatEvent* event = 0; - CombatGroup* group = a->GetResource(); - CombatGroup* obj = a->GetObjective(); - CombatUnit* unit = group->GetRandomUnit(); - CombatUnit* tgt = obj->GetRandomUnit(); - - if (!unit || !tgt) - return 0; - - bool success = Success(a); - Text rgn = group->GetRegion(); - Text title = Text(group->Name()); - Text info; - - event = new(__FILE__,__LINE__) CombatEvent(campaign, - CombatEvent::ATTACK, - event_time, - group->GetIFF(), - CombatEvent::TACNET, - rgn); - - if (!event) - return 0; - - title += Text(" Assault ") + obj->Name(); - - int tgt_count = 0; - int unit_count = 0; - - if (success) { - if (tgt) { - int killed = tgt->Kill(1 + tgt->Count()/2); - if (killed > 0) - tgt_count += killed / tgt->GetSingleValue(); - Combatant* c = group->GetCombatant(); - if (c) c->AddScore(tgt->GetSingleValue()); - } - - if (unit && RandomChance(1,5)) { - if (unit->Kill(1) > 0) - unit_count++; - Combatant* c = obj->GetCombatant(); - if (c) c->AddScore(unit->GetSingleValue()); - } - } - else { - for (int i = 0; i < 2; i++) { - if (unit && RandomChance(1,4)) { - if (unit->Kill(1) > 0) - unit_count++; - Combatant* c = obj->GetCombatant(); - if (c) c->AddScore(unit->GetSingleValue()); - } - } - } - - CombatGroup* us = group; - CombatGroup* them = obj; - int us_count = unit_count; - int them_count = tgt_count; - - bool friendly = IsFriendlyAssignment(a); - - if (friendly) { - info = Text("MISSION: Strike, ") + rgn + " Sector\n\n"; - } - - else { - info = Text("EVENT: ") + rgn + " Sector\n\n"; - - us = obj; - them = group; - us_count = tgt_count; - them_count = unit_count; - } - - info += GetTeamName(group); - info += Text(" ") + group->GetDescription(); - - if (success) - info += " successfully assault "; - else if (!friendly) - info += " assault averted against "; - else - info += " attempted assault on "; - - info += GetTeamName(obj); - info += Text(" ") + obj->GetDescription() + ".\n\n"; - - char text[256]; - - if (them_count) { - if (friendly) { - if (them_count > 1) - sprintf(text, "ENEMY KILLED:\t %d %s destroyed\n", - them_count, tgt->Name().data()); - else - sprintf(text, "ENEMY KILLED:\t %s destroyed\n", - tgt->Name().data()); - } - else { - sprintf(text, "ENEMY KILLED:\t %d %s destroyed\n", - them_count, them->Name().data()); - } - - info += text; - } - else { - info += "ENEMY KILLED:\t 0\n"; - } - - if (us_count) { - if (!friendly) - sprintf(text, "ALLIED LOSSES:\t %s destroyed\n", - tgt->Name().data()); - else - sprintf(text, "ALLIED LOSSES:\t %d %s destroyed", - us_count, - us->Name().data()); - - info += text; - } - else { - info += "ALLIED LOSSES:\t 0"; - } - - - event->SetTitle(title); - event->SetInformation(info); - return event; + CombatEvent* event = 0; + CombatGroup* group = a->GetResource(); + CombatGroup* obj = a->GetObjective(); + CombatUnit* unit = group->GetRandomUnit(); + CombatUnit* tgt = obj->GetRandomUnit(); + + if (!unit || !tgt) + return 0; + + bool success = Success(a); + Text rgn = group->GetRegion(); + Text title = Text(group->Name()); + Text info; + + event = new(__FILE__,__LINE__) CombatEvent(campaign, + CombatEvent::ATTACK, + event_time, + group->GetIFF(), + CombatEvent::TACNET, + rgn); + + if (!event) + return 0; + + title += Text(" Assault ") + obj->Name(); + + int tgt_count = 0; + int unit_count = 0; + + if (success) { + if (tgt) { + int killed = tgt->Kill(1 + tgt->Count()/2); + if (killed > 0) + tgt_count += killed / tgt->GetSingleValue(); + Combatant* c = group->GetCombatant(); + if (c) c->AddScore(tgt->GetSingleValue()); + } + + if (unit && RandomChance(1,5)) { + if (unit->Kill(1) > 0) + unit_count++; + Combatant* c = obj->GetCombatant(); + if (c) c->AddScore(unit->GetSingleValue()); + } + } + else { + for (int i = 0; i < 2; i++) { + if (unit && RandomChance(1,4)) { + if (unit->Kill(1) > 0) + unit_count++; + Combatant* c = obj->GetCombatant(); + if (c) c->AddScore(unit->GetSingleValue()); + } + } + } + + CombatGroup* us = group; + CombatGroup* them = obj; + int us_count = unit_count; + int them_count = tgt_count; + + bool friendly = IsFriendlyAssignment(a); + + if (friendly) { + info = Text("MISSION: Strike, ") + rgn + " Sector\n\n"; + } + + else { + info = Text("EVENT: ") + rgn + " Sector\n\n"; + + us = obj; + them = group; + us_count = tgt_count; + them_count = unit_count; + } + + info += GetTeamName(group); + info += Text(" ") + group->GetDescription(); + + if (success) + info += " successfully assault "; + else if (!friendly) + info += " assault averted against "; + else + info += " attempted assault on "; + + info += GetTeamName(obj); + info += Text(" ") + obj->GetDescription() + ".\n\n"; + + char text[256]; + + if (them_count) { + if (friendly) { + if (them_count > 1) + sprintf(text, "ENEMY KILLED:\t %d %s destroyed\n", + them_count, tgt->Name().data()); + else + sprintf(text, "ENEMY KILLED:\t %s destroyed\n", + tgt->Name().data()); + } + else { + sprintf(text, "ENEMY KILLED:\t %d %s destroyed\n", + them_count, them->Name().data()); + } + + info += text; + } + else { + info += "ENEMY KILLED:\t 0\n"; + } + + if (us_count) { + if (!friendly) + sprintf(text, "ALLIED LOSSES:\t %s destroyed\n", + tgt->Name().data()); + else + sprintf(text, "ALLIED LOSSES:\t %d %s destroyed", + us_count, + us->Name().data()); + + info += text; + } + else { + info += "ALLIED LOSSES:\t 0"; + } + + + event->SetTitle(title); + event->SetInformation(info); + return event; } // +--------------------------------------------------------------------+ @@ -821,149 +821,149 @@ CampaignPlanEvent::CreateEventFighterAssault(CombatAssignment* a) CombatEvent* CampaignPlanEvent::CreateEventFighterStrike(CombatAssignment* a) { - CombatEvent* event = 0; - CombatGroup* group = a->GetResource(); - CombatGroup* obj = a->GetObjective(); - CombatUnit* unit = group->GetRandomUnit(); - CombatUnit* tgt = obj->GetRandomUnit(); - - if (!unit || !tgt) - return 0; - - bool success = Success(a); - Text rgn = group->GetRegion(); - Text title = Text(group->Name()); - Text info; - - event = new(__FILE__,__LINE__) CombatEvent(campaign, - CombatEvent::ATTACK, - event_time, - group->GetIFF(), - CombatEvent::TACNET, - rgn); - - if (!event) - return 0; - - if (unit) - title += Text(" ") + unit->GetDesign()->abrv + "s"; - - if (success) { - title += " Successfully Strike " + obj->Name(); - } - else { - title += " Attempt Strike on " + obj->Name(); - } - - int tgt_count = 0; - int unit_count = 0; - - if (success) { - if (tgt) { - int killed = tgt->Kill(1 + tgt->Count()/2); - if (killed > 0) - tgt_count += killed / tgt->GetSingleValue(); - Combatant* c = group->GetCombatant(); - if (c) c->AddScore(tgt->GetSingleValue()); - } - - if (unit && RandomChance(1,5)) { - if (unit->Kill(1) > 0) - unit_count++; - Combatant* c = obj->GetCombatant(); - if (c) c->AddScore(unit->GetSingleValue()); - } - } - else { - for (int i = 0; i < 2; i++) { - if (unit && RandomChance(1,4)) { - if (unit->Kill(1) > 0) - unit_count++; - Combatant* c = obj->GetCombatant(); - if (c) c->AddScore(unit->GetSingleValue()); - } - } - } - - CombatGroup* us = group; - CombatGroup* them = obj; - int us_count = unit_count; - int them_count = tgt_count; - - bool friendly = IsFriendlyAssignment(a); - - if (friendly) { - info = Text("MISSION: Strike, ") + rgn + " Sector\n\n"; - } - - else { - info = Text("EVENT: ") + rgn + " Sector\n\n"; - - us = obj; - them = group; - us_count = tgt_count; - them_count = unit_count; - } - - info += GetTeamName(group); - info += Text(" ") + group->GetDescription(); - - if (success) - info += " successfully strike "; - else if (!friendly) - info += " strike against "; - else - info += " attempted strike on "; - - info += GetTeamName(obj); - info += Text(" ") + obj->GetDescription(); - - if (!success && !friendly) - info += " averted.\n\n"; - else - info += ".\n\n"; - - char text[256]; - - if (them_count) { - if (friendly) { - if (them_count > 1) - sprintf(text, "ENEMY KILLED:\t %d %s destroyed\n", - them_count, tgt->Name().data()); - else - sprintf(text, "ENEMY KILLED:\t %s destroyed\n", - tgt->Name().data()); - } - else { - sprintf(text, "ENEMY KILLED:\t %d %s destroyed\n", - them_count, - them->Name().data()); - } - - info += text; - } - else { - info += "ENEMY KILLED:\t 0\n"; - } - - if (us_count) { - if (!friendly) - sprintf(text, "ALLIED LOSSES:\t %s destroyed\n", - tgt->Name().data()); - else - sprintf(text, "ALLIED LOSSES:\t %d %s destroyed", - us_count, - us->Name().data()); - - info += text; - } - else { - info += "ALLIED LOSSES:\t 0"; - } - - event->SetTitle(title); - event->SetInformation(info); - return event; + CombatEvent* event = 0; + CombatGroup* group = a->GetResource(); + CombatGroup* obj = a->GetObjective(); + CombatUnit* unit = group->GetRandomUnit(); + CombatUnit* tgt = obj->GetRandomUnit(); + + if (!unit || !tgt) + return 0; + + bool success = Success(a); + Text rgn = group->GetRegion(); + Text title = Text(group->Name()); + Text info; + + event = new(__FILE__,__LINE__) CombatEvent(campaign, + CombatEvent::ATTACK, + event_time, + group->GetIFF(), + CombatEvent::TACNET, + rgn); + + if (!event) + return 0; + + if (unit) + title += Text(" ") + unit->GetDesign()->abrv + "s"; + + if (success) { + title += " Successfully Strike " + obj->Name(); + } + else { + title += " Attempt Strike on " + obj->Name(); + } + + int tgt_count = 0; + int unit_count = 0; + + if (success) { + if (tgt) { + int killed = tgt->Kill(1 + tgt->Count()/2); + if (killed > 0) + tgt_count += killed / tgt->GetSingleValue(); + Combatant* c = group->GetCombatant(); + if (c) c->AddScore(tgt->GetSingleValue()); + } + + if (unit && RandomChance(1,5)) { + if (unit->Kill(1) > 0) + unit_count++; + Combatant* c = obj->GetCombatant(); + if (c) c->AddScore(unit->GetSingleValue()); + } + } + else { + for (int i = 0; i < 2; i++) { + if (unit && RandomChance(1,4)) { + if (unit->Kill(1) > 0) + unit_count++; + Combatant* c = obj->GetCombatant(); + if (c) c->AddScore(unit->GetSingleValue()); + } + } + } + + CombatGroup* us = group; + CombatGroup* them = obj; + int us_count = unit_count; + int them_count = tgt_count; + + bool friendly = IsFriendlyAssignment(a); + + if (friendly) { + info = Text("MISSION: Strike, ") + rgn + " Sector\n\n"; + } + + else { + info = Text("EVENT: ") + rgn + " Sector\n\n"; + + us = obj; + them = group; + us_count = tgt_count; + them_count = unit_count; + } + + info += GetTeamName(group); + info += Text(" ") + group->GetDescription(); + + if (success) + info += " successfully strike "; + else if (!friendly) + info += " strike against "; + else + info += " attempted strike on "; + + info += GetTeamName(obj); + info += Text(" ") + obj->GetDescription(); + + if (!success && !friendly) + info += " averted.\n\n"; + else + info += ".\n\n"; + + char text[256]; + + if (them_count) { + if (friendly) { + if (them_count > 1) + sprintf(text, "ENEMY KILLED:\t %d %s destroyed\n", + them_count, tgt->Name().data()); + else + sprintf(text, "ENEMY KILLED:\t %s destroyed\n", + tgt->Name().data()); + } + else { + sprintf(text, "ENEMY KILLED:\t %d %s destroyed\n", + them_count, + them->Name().data()); + } + + info += text; + } + else { + info += "ENEMY KILLED:\t 0\n"; + } + + if (us_count) { + if (!friendly) + sprintf(text, "ALLIED LOSSES:\t %s destroyed\n", + tgt->Name().data()); + else + sprintf(text, "ALLIED LOSSES:\t %d %s destroyed", + us_count, + us->Name().data()); + + info += text; + } + else { + info += "ALLIED LOSSES:\t 0"; + } + + event->SetTitle(title); + event->SetInformation(info); + return event; } // +--------------------------------------------------------------------+ @@ -971,151 +971,151 @@ CampaignPlanEvent::CreateEventFighterStrike(CombatAssignment* a) CombatEvent* CampaignPlanEvent::CreateEventFighterSweep(CombatAssignment* a) { - CombatEvent* event = 0; - CombatGroup* group = a->GetResource(); - CombatGroup* obj = a->GetObjective(); - CombatUnit* unit = group->GetRandomUnit(); - CombatUnit* tgt = obj->GetRandomUnit(); - - if (!unit || !tgt) - return 0; - - bool success = Success(a); - Text rgn = group->GetRegion(); - Text title = Text(group->Name()); - Text info; - - event = new(__FILE__,__LINE__) CombatEvent(campaign, - CombatEvent::ATTACK, - event_time, - group->GetIFF(), - CombatEvent::TACNET, - rgn); - - if (!event) - return 0; - - if (unit) - title += Text(" ") + unit->GetDesign()->abrv + "s"; - else - title += " Fighters"; - - if (RandomChance(1, 4)) title += " Clash with "; - else if (RandomChance(1, 4)) title += " Engage "; - else if (RandomChance(1, 4)) title += " Intercept "; - else title += " Encounter "; - - title += obj->Name(); - - int tgt_count = 0; - int unit_count = 0; - - if (success) { - for (int i = 0; i < 2; i++) { - if (tgt && RandomChance(3,4)) { - if (tgt->Kill(1) > 0) - tgt_count++; - Combatant* c = group->GetCombatant(); - if (c) c->AddScore(tgt->GetSingleValue()); - } - } - - if (tgt_count > 1) { - if (tgt && RandomChance(1,4)) { - if (tgt->Kill(1) > 0) - tgt_count++; - Combatant* c = group->GetCombatant(); - if (c) c->AddScore(tgt->GetSingleValue()); - } - } - - else { - if (unit && RandomChance(1,5)) { - if (unit->Kill(1) > 0) - unit_count++; - Combatant* c = obj->GetCombatant(); - if (c) c->AddScore(unit->GetSingleValue()); - } - } - } - else { - for (int i = 0; i < 2; i++) { - if (unit && RandomChance(3,4)) { - if (unit->Kill(1) > 0) - unit_count++; - Combatant* c = obj->GetCombatant(); - if (c) c->AddScore(unit->GetSingleValue()); - } - } - - if (tgt && RandomChance(1,4)) { - if (tgt->Kill(1) > 0) - tgt_count++; - Combatant* c = group->GetCombatant(); - if (c) c->AddScore(tgt->GetSingleValue()); - } - } - - CombatGroup* us = group; - CombatGroup* them = obj; - int us_count = unit_count; - int them_count = tgt_count; - - bool friendly = IsFriendlyAssignment(a); - - if (!friendly) { - us = obj; - them = group; - us_count = tgt_count; - them_count = unit_count; - } - - if (friendly) { - if (RandomChance()) - info = Text("MISSION: OCA Sweep, ") + rgn + " Sector\n\n"; - else - info = Text("MISSION: FORCAP, ") + rgn + " Sector\n\n"; - - info += GetTeamName(group); - info += Text(" ") + group->GetDescription(); - info += Text(" engaged ") + GetTeamName(obj); - info += Text(" ") + obj->GetDescription() + ".\n\n"; - } - else { - info = Text("MISSION: Patrol, ") + rgn + " Sector\n\n"; - - info += GetTeamName(obj); - info += Text(" ") + obj->GetDescription(); - info += Text(" engaged ") + GetTeamName(group); - info += Text(" ") + group->GetDescription() + ".\n\n"; - } - - char text[256]; - - if (them_count) { - sprintf(text, "ENEMY KILLED:\t %d %s destroyed\n", - them_count, - them->Name().data()); - - info += text; - } - else { - info += "ENEMY KILLED:\t 0\n"; - } - - if (us_count) { - sprintf(text, "ALLIED LOSSES:\t %d %s destroyed", - us_count, - us->Name().data()); - info += text; - } - else { - info += "ALLIED LOSSES:\t 0"; - } - - event->SetTitle(title); - event->SetInformation(info); - return event; + CombatEvent* event = 0; + CombatGroup* group = a->GetResource(); + CombatGroup* obj = a->GetObjective(); + CombatUnit* unit = group->GetRandomUnit(); + CombatUnit* tgt = obj->GetRandomUnit(); + + if (!unit || !tgt) + return 0; + + bool success = Success(a); + Text rgn = group->GetRegion(); + Text title = Text(group->Name()); + Text info; + + event = new(__FILE__,__LINE__) CombatEvent(campaign, + CombatEvent::ATTACK, + event_time, + group->GetIFF(), + CombatEvent::TACNET, + rgn); + + if (!event) + return 0; + + if (unit) + title += Text(" ") + unit->GetDesign()->abrv + "s"; + else + title += " Fighters"; + + if (RandomChance(1, 4)) title += " Clash with "; + else if (RandomChance(1, 4)) title += " Engage "; + else if (RandomChance(1, 4)) title += " Intercept "; + else title += " Encounter "; + + title += obj->Name(); + + int tgt_count = 0; + int unit_count = 0; + + if (success) { + for (int i = 0; i < 2; i++) { + if (tgt && RandomChance(3,4)) { + if (tgt->Kill(1) > 0) + tgt_count++; + Combatant* c = group->GetCombatant(); + if (c) c->AddScore(tgt->GetSingleValue()); + } + } + + if (tgt_count > 1) { + if (tgt && RandomChance(1,4)) { + if (tgt->Kill(1) > 0) + tgt_count++; + Combatant* c = group->GetCombatant(); + if (c) c->AddScore(tgt->GetSingleValue()); + } + } + + else { + if (unit && RandomChance(1,5)) { + if (unit->Kill(1) > 0) + unit_count++; + Combatant* c = obj->GetCombatant(); + if (c) c->AddScore(unit->GetSingleValue()); + } + } + } + else { + for (int i = 0; i < 2; i++) { + if (unit && RandomChance(3,4)) { + if (unit->Kill(1) > 0) + unit_count++; + Combatant* c = obj->GetCombatant(); + if (c) c->AddScore(unit->GetSingleValue()); + } + } + + if (tgt && RandomChance(1,4)) { + if (tgt->Kill(1) > 0) + tgt_count++; + Combatant* c = group->GetCombatant(); + if (c) c->AddScore(tgt->GetSingleValue()); + } + } + + CombatGroup* us = group; + CombatGroup* them = obj; + int us_count = unit_count; + int them_count = tgt_count; + + bool friendly = IsFriendlyAssignment(a); + + if (!friendly) { + us = obj; + them = group; + us_count = tgt_count; + them_count = unit_count; + } + + if (friendly) { + if (RandomChance()) + info = Text("MISSION: OCA Sweep, ") + rgn + " Sector\n\n"; + else + info = Text("MISSION: FORCAP, ") + rgn + " Sector\n\n"; + + info += GetTeamName(group); + info += Text(" ") + group->GetDescription(); + info += Text(" engaged ") + GetTeamName(obj); + info += Text(" ") + obj->GetDescription() + ".\n\n"; + } + else { + info = Text("MISSION: Patrol, ") + rgn + " Sector\n\n"; + + info += GetTeamName(obj); + info += Text(" ") + obj->GetDescription(); + info += Text(" engaged ") + GetTeamName(group); + info += Text(" ") + group->GetDescription() + ".\n\n"; + } + + char text[256]; + + if (them_count) { + sprintf(text, "ENEMY KILLED:\t %d %s destroyed\n", + them_count, + them->Name().data()); + + info += text; + } + else { + info += "ENEMY KILLED:\t 0\n"; + } + + if (us_count) { + sprintf(text, "ALLIED LOSSES:\t %d %s destroyed", + us_count, + us->Name().data()); + info += text; + } + else { + info += "ALLIED LOSSES:\t 0"; + } + + event->SetTitle(title); + event->SetInformation(info); + return event; } // +--------------------------------------------------------------------+ @@ -1123,148 +1123,148 @@ CampaignPlanEvent::CreateEventFighterSweep(CombatAssignment* a) CombatEvent* CampaignPlanEvent::CreateEventStarship(CombatAssignment* a) { - CombatEvent* event = 0; - CombatGroup* group = a->GetResource(); - CombatGroup* obj = a->GetObjective(); - CombatUnit* unit = group->GetRandomUnit(); - CombatUnit* tgt = obj->GetRandomUnit(); - - if (!unit || !tgt) - return 0; - - bool success = Success(a); - Text rgn = group->GetRegion(); - Text title = Text(group->Name()); - Text info; - - event = new(__FILE__,__LINE__) CombatEvent(campaign, - CombatEvent::ATTACK, - event_time, - group->GetIFF(), - CombatEvent::TACNET, - group->GetRegion()); - - if (!event) - return 0; - - title += Text(" Assaults ") + a->GetObjective()->Name(); - - int tgt_count = 0; - int unit_count = 0; - - if (success) { - if (tgt) { - if (tgt->Kill(1) > 0) - tgt_count++; - Combatant* c = group->GetCombatant(); - if (c) c->AddScore(tgt->GetSingleValue()); - } - - if (unit && RandomChance(1,5)) { - if (unit->Kill(1) > 0) - unit_count++; - Combatant* c = obj->GetCombatant(); - if (c) c->AddScore(unit->GetSingleValue()); - } - } - else { - for (int i = 0; i < 2; i++) { - if (unit && RandomChance(1,4)) { - if (unit->Kill(1) > 0) - unit_count++; - Combatant* c = obj->GetCombatant(); - if (c) c->AddScore(unit->GetSingleValue()); - } - } - } - - CombatGroup* us = group; - CombatGroup* them = obj; - int us_count = unit_count; - int them_count = tgt_count; - - bool friendly = IsFriendlyAssignment(a); - - if (friendly) { - info = Text("MISSION: Fleet Action, ") + rgn + " Sector\n\n"; - } - - else { - info = Text("EVENT: ") + rgn + " Sector\n\n"; - - us = obj; - them = group; - us_count = tgt_count; - them_count = unit_count; - } - - info += GetTeamName(group); - info += Text(" ") + group->GetDescription(); - - if (success) - info += " successfully assaulted "; - else if (!friendly) - info += " assault against "; - else - info += " attempted assault on "; - - info += GetTeamName(obj); - info += Text(" ") + obj->GetDescription(); - - if (!success && !friendly) - info += " failed.\n\n"; - else - info += ".\n\n"; - - char text[256]; - - if (them_count) { - if (friendly) { - if (tgt->Count() > 1) { - sprintf(text, "ENEMY KILLED:\t %d %s destroyed\n", - them_count, - tgt->Name().data()); - } - else { - sprintf(text, "ENEMY KILLED:\t %s destroyed\n", - tgt->Name().data()); - } - } - else { - if (unit->Count() > 1) { - sprintf(text, "ENEMY KILLED:\t %d %s destroyed\n", - them_count, - unit->Name().data()); - } - else { - sprintf(text, "ENEMY KILLED:\t %s destroyed\n", - unit->Name().data()); - } - } - - info += text; - } - else { - info += "ENEMY KILLED:\t 0\n"; - } - - if (us_count) { - if (!friendly) - sprintf(text, "ALLIED LOSSES:\t %s destroyed\n", - tgt->Name().data()); - else - sprintf(text, "ALLIED LOSSES:\t %s destroyed", - unit->Name().data()); - - info += text; - } - else { - info += "ALLIED LOSSES:\t 0"; - } - - event->SetTitle(title); - event->SetInformation(info); - return event; + CombatEvent* event = 0; + CombatGroup* group = a->GetResource(); + CombatGroup* obj = a->GetObjective(); + CombatUnit* unit = group->GetRandomUnit(); + CombatUnit* tgt = obj->GetRandomUnit(); + + if (!unit || !tgt) + return 0; + + bool success = Success(a); + Text rgn = group->GetRegion(); + Text title = Text(group->Name()); + Text info; + + event = new(__FILE__,__LINE__) CombatEvent(campaign, + CombatEvent::ATTACK, + event_time, + group->GetIFF(), + CombatEvent::TACNET, + group->GetRegion()); + + if (!event) + return 0; + + title += Text(" Assaults ") + a->GetObjective()->Name(); + + int tgt_count = 0; + int unit_count = 0; + + if (success) { + if (tgt) { + if (tgt->Kill(1) > 0) + tgt_count++; + Combatant* c = group->GetCombatant(); + if (c) c->AddScore(tgt->GetSingleValue()); + } + + if (unit && RandomChance(1,5)) { + if (unit->Kill(1) > 0) + unit_count++; + Combatant* c = obj->GetCombatant(); + if (c) c->AddScore(unit->GetSingleValue()); + } + } + else { + for (int i = 0; i < 2; i++) { + if (unit && RandomChance(1,4)) { + if (unit->Kill(1) > 0) + unit_count++; + Combatant* c = obj->GetCombatant(); + if (c) c->AddScore(unit->GetSingleValue()); + } + } + } + + CombatGroup* us = group; + CombatGroup* them = obj; + int us_count = unit_count; + int them_count = tgt_count; + + bool friendly = IsFriendlyAssignment(a); + + if (friendly) { + info = Text("MISSION: Fleet Action, ") + rgn + " Sector\n\n"; + } + + else { + info = Text("EVENT: ") + rgn + " Sector\n\n"; + + us = obj; + them = group; + us_count = tgt_count; + them_count = unit_count; + } + + info += GetTeamName(group); + info += Text(" ") + group->GetDescription(); + + if (success) + info += " successfully assaulted "; + else if (!friendly) + info += " assault against "; + else + info += " attempted assault on "; + + info += GetTeamName(obj); + info += Text(" ") + obj->GetDescription(); + + if (!success && !friendly) + info += " failed.\n\n"; + else + info += ".\n\n"; + + char text[256]; + + if (them_count) { + if (friendly) { + if (tgt->Count() > 1) { + sprintf(text, "ENEMY KILLED:\t %d %s destroyed\n", + them_count, + tgt->Name().data()); + } + else { + sprintf(text, "ENEMY KILLED:\t %s destroyed\n", + tgt->Name().data()); + } + } + else { + if (unit->Count() > 1) { + sprintf(text, "ENEMY KILLED:\t %d %s destroyed\n", + them_count, + unit->Name().data()); + } + else { + sprintf(text, "ENEMY KILLED:\t %s destroyed\n", + unit->Name().data()); + } + } + + info += text; + } + else { + info += "ENEMY KILLED:\t 0\n"; + } + + if (us_count) { + if (!friendly) + sprintf(text, "ALLIED LOSSES:\t %s destroyed\n", + tgt->Name().data()); + else + sprintf(text, "ALLIED LOSSES:\t %s destroyed", + unit->Name().data()); + + info += text; + } + else { + info += "ALLIED LOSSES:\t 0"; + } + + event->SetTitle(title); + event->SetInformation(info); + return event; } // +--------------------------------------------------------------------+ @@ -1272,35 +1272,35 @@ CampaignPlanEvent::CreateEventStarship(CombatAssignment* a) bool CampaignPlanEvent::IsFriendlyAssignment(CombatAssignment* a) { - if (!campaign || !a || !a->GetResource()) - return false; + if (!campaign || !a || !a->GetResource()) + return false; - int a_team = a->GetResource()->GetIFF(); - CombatGroup* player = campaign->GetPlayerGroup(); + int a_team = a->GetResource()->GetIFF(); + CombatGroup* player = campaign->GetPlayerGroup(); - if (player && (player->GetIFF() == a_team)) - return true; + if (player && (player->GetIFF() == a_team)) + return true; - return false; + return false; } bool CampaignPlanEvent::Success(CombatAssignment* a) { - if (!campaign || !a || !a->GetResource()) - return false; + if (!campaign || !a || !a->GetResource()) + return false; - int odds = 6 - campaign->GetCampaignId(); + int odds = 6 - campaign->GetCampaignId(); - if (odds < 1) - odds = 1; + if (odds < 1) + odds = 1; - bool success = RandomChance(odds, 5); + bool success = RandomChance(odds, 5); - if (!IsFriendlyAssignment(a)) - success = !success; + if (!IsFriendlyAssignment(a)) + success = !success; - return success; + return success; } // +--------------------------------------------------------------------+ @@ -1308,8 +1308,8 @@ CampaignPlanEvent::Success(CombatAssignment* a) Text CampaignPlanEvent::GetTeamName(CombatGroup* g) { - while (g->GetParent()) - g = g->GetParent(); + while (g->GetParent()) + g = g->GetParent(); - return g->Name(); + return g->Name(); } -- cgit v1.1