MCPcopy Create free account
hub / github.com/OpenApoc/OpenApoc / execute

Method execute

game/state/shared/organisation.cpp:984–1134  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

982}
983
984void Organisation::RaidMission::execute(GameState &state, StateRef<City> city,
985 StateRef<Organisation> owner)
986{
987 switch (type)
988 {
989 case OrganisationRaid::Type::Attack:
990 {
991 target->owner->adjustRelationTo(state, owner, -5.0f);
992 owner->adjustRelationTo(state, target->owner, +2.0f);
993 fw().pushEvent(
994 new GameBuildingEvent(GameEventType::OrganisationAttackBuilding, target, owner));
995 }
996 break;
997 case OrganisationRaid::Type::Raid:
998 {
999 if (target->owner == state.player && target->base)
1000 {
1001 // Destroy base if its empty
1002 if (target->currentAgents.empty())
1003 {
1004 target->base->die(state, false);
1005 }
1006 else
1007 {
1008 fw().pushEvent(
1009 new GameDefenseEvent(GameEventType::DefendTheBase, target->base, owner));
1010 }
1011 }
1012 else
1013 {
1014 target->owner->adjustRelationTo(state, owner, -15.0f);
1015 owner->adjustRelationTo(state, target->owner, +7.0f);
1016 fw().pushEvent(
1017 new GameBuildingEvent(GameEventType::OrganisationRaidBuilding, target, owner));
1018 }
1019 }
1020 break;
1021 case OrganisationRaid::Type::Storm:
1022 {
1023 if (target->owner == state.player && target->base)
1024 {
1025 // Destroy base if its empty
1026 if (target->currentAgents.empty())
1027 {
1028 target->base->die(state, false);
1029 }
1030 else
1031 {
1032 fw().pushEvent(
1033 new GameDefenseEvent(GameEventType::DefendTheBase, target->base, owner));
1034 }
1035 }
1036 else
1037 {
1038 target->owner->adjustRelationTo(state, owner, -25.0f);
1039 owner->adjustRelationTo(state, target->owner, +12.0f);
1040 fw().pushEvent(
1041 new GameBuildingEvent(GameEventType::OrganisationStormBuilding, target, owner));

Callers 1

updateMissionsMethod · 0.80

Calls 15

randBoundsInclusiveFunction · 0.85
pickRandomFunction · 0.85
adjustRelationToMethod · 0.80
pushEventMethod · 0.80
emptyMethod · 0.80
endMethod · 0.80
getRelationToMethod · 0.80
getTicksMethod · 0.80
getTileMethod · 0.80
placeVehicleMethod · 0.80
isRelatedToMethod · 0.80
dieMethod · 0.45

Tested by

no test coverage detected