Fixed multi-line comment warning in gcc 3.*
Changed removed units handling (for buildings/trasporters). Compacted Rescued and RescuedFrom members of the Unit struct. 'max-on-board for transporters now works. Began work on resource configuration (compacted FindDeposit and ResourceDepositOnMap). Also this means 'stores-* flags in ccl have to be changed to 'can-store '(resource list).
This commit is contained in:
parent
a405ebc851
commit
adc8dd849d
181 changed files with 409 additions and 432 deletions
doc
src
action
action_attack.cppaction_board.cppaction_build.cppaction_demolish.cppaction_die.cppaction_follow.cppaction_harvest.cppaction_minegold.cppaction_move.cppaction_patrol.cppaction_repair.cppaction_research.cppaction_resource.cppaction_returngoods.cppaction_spellcast.cppaction_stand.cppaction_still.cppaction_train.cppaction_unload.cppaction_upgradeto.cppactions.cppcommand.cpp
ai
ai.cppai_building.cppai_force.cppai_local.hai_magic.cppai_plan.cppai_resource.cppold_ai.cppscript_ai.cpp
beos
editor
game
include
actions.hai.havi.hcampaign.hcdaudio.hcommands.hconstruct.hcursor.hdeco.hdepend.heditor.hfc_types.hfont.hicons.hinterface.hiocompat.hiolib.hmap.hmaster.hmenus.hminimap.hmissile.hmovie.hmyendian.hnet_lowlevel.hnetconnect.hnetwork.hpathfinder.hplayer.hpud.hscript.hscript_sound.hsettings.hsound.hsound_id.hsound_server.hspells.hstratagus.htileset.htrigger.hui.hunit.hunitsound.hunittype.hupgrade.hupgrade_structs.hvideo.h
map
|
@ -36,6 +36,10 @@
|
|||
<li>Future 1.19 Release<p>
|
||||
<ul>
|
||||
<li>+++
|
||||
<li>Changed the handling of contained units to a circular linked list (from Crestez Dan Leonard).
|
||||
<li>Compacted Unit::Rescued and Unit::Rescued from (from Crestez Dan Leonard).
|
||||
<li>Change Unit::Colors to a pointer(saves memory) (from Crestez Dan Leonard).
|
||||
<li>Renamed project to Stratagus and fixed most internal references to the Freecraft name (From Ingo Ruhnke).
|
||||
<li>You can select two units on different land masses and they will both board (from Crestez Dan Leonard).
|
||||
<li>Set Harvest with right-click from a building (from Crestez Dan Leonard).
|
||||
<li>Fixed bug where transporter and unit follow each other (from Crestez Dan Leonard).
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
// _________ __ __
|
||||
// / _____// |_____________ _/ |______ ____ __ __ ______
|
||||
// \_____ \\ __\_ __ \__ \\ __\__ \ / ___\| | \/ ___/
|
||||
// / \| | | | \// __ \| | / __ \_/ /_/ > | /\___ \
|
||||
// / \| | | | \// __ \| | / __ \_/ /_/ > | /\___ |
|
||||
// /_______ /|__| |__| (____ /__| (____ /\___ /|____//____ >
|
||||
// \/ \/ \//_____/ \/
|
||||
// ______________________ ______________________
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
// _________ __ __
|
||||
// / _____// |_____________ _/ |______ ____ __ __ ______
|
||||
// \_____ \\ __\_ __ \__ \\ __\__ \ / ___\| | \/ ___/
|
||||
// / \| | | | \// __ \| | / __ \_/ /_/ > | /\___ \
|
||||
// / \| | | | \// __ \| | / __ \_/ /_/ > | /\___ |
|
||||
// /_______ /|__| |__| (____ /__| (____ /\___ /|____//____ >
|
||||
// \/ \/ \//_____/ \/
|
||||
// ______________________ ______________________
|
||||
|
@ -144,7 +144,6 @@ local int WaitForTransporter(Unit* unit)
|
|||
local void EnterTransporter(Unit* unit)
|
||||
{
|
||||
Unit* transporter;
|
||||
int i;
|
||||
|
||||
unit->Wait=1;
|
||||
unit->Orders[0].Action=UnitActionStill;
|
||||
|
@ -175,24 +174,20 @@ local void EnterTransporter(Unit* unit)
|
|||
unit->Orders[0].Goal=NoUnitP;
|
||||
|
||||
//
|
||||
// Find free slot in transporter.
|
||||
// Place the unit inside the transporter.
|
||||
//
|
||||
for( i=0; i<(int)(sizeof(unit->OnBoard)/sizeof(*unit->OnBoard)); ++i ) {
|
||||
if( transporter->OnBoard[i]==NoUnitP ) {
|
||||
transporter->OnBoard[i]=unit;
|
||||
// FIXME: reference counts?
|
||||
transporter->Value++;
|
||||
RemoveUnit(unit,transporter);
|
||||
//Don't make anything funny after going out of the transporter.
|
||||
// FIXME: This is probably wrong, but it works for me (n0b0dy)
|
||||
unit->OrderCount=1;
|
||||
unit->Orders[0].Action=UnitActionStill;
|
||||
if( IsOnlySelected(transporter) ) {
|
||||
UpdateButtonPanel();
|
||||
MustRedraw|=RedrawPanels;
|
||||
}
|
||||
return;
|
||||
|
||||
if (transporter->InsideCount<transporter->Type->MaxOnBoard) {
|
||||
RemoveUnit(unit,transporter);
|
||||
//Don't make anything funny after going out of the transporter.
|
||||
// FIXME: This is probably wrong, but it works for me (n0b0dy)
|
||||
unit->OrderCount=1;
|
||||
unit->Orders[0].Action=UnitActionStill;
|
||||
if( IsOnlySelected(transporter) ) {
|
||||
UpdateButtonPanel();
|
||||
MustRedraw|=RedrawPanels;
|
||||
}
|
||||
return;
|
||||
}
|
||||
DebugLevel0Fn("No free slot in transporter\n");
|
||||
}
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
// _________ __ __
|
||||
// / _____// |_____________ _/ |______ ____ __ __ ______
|
||||
// \_____ \\ __\_ __ \__ \\ __\__ \ / ___\| | \/ ___/
|
||||
// / \| | | | \// __ \| | / __ \_/ /_/ > | /\___ \
|
||||
// / \| | | | \// __ \| | / __ \_/ /_/ > | /\___ |
|
||||
// /_______ /|__| |__| (____ /__| (____ /\___ /|____//____ >
|
||||
// \/ \/ \//_____/ \/
|
||||
// ______________________ ______________________
|
||||
|
@ -372,7 +372,7 @@ global void HandleActionBuilded(Unit* unit)
|
|||
//
|
||||
// Building lumber mill, let worker automatic chopping wood.
|
||||
//
|
||||
if( type->StoresWood ) {
|
||||
if( type->Stores[WoodCost] ) {
|
||||
CommandHarvest(worker,unit->X+unit->Type->TileWidth/2,
|
||||
unit->Y+unit->Type->TileHeight/2,0);
|
||||
}
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
// _________ __ __
|
||||
// / _____// |_____________ _/ |______ ____ __ __ ______
|
||||
// \_____ \\ __\_ __ \__ \\ __\__ \ / ___\| | \/ ___/
|
||||
// / \| | | | \// __ \| | / __ \_/ /_/ > | /\___ \
|
||||
// / \| | | | \// __ \| | / __ \_/ /_/ > | /\___ |
|
||||
// /_______ /|__| |__| (____ /__| (____ /\___ /|____//____ >
|
||||
// \/ \/ \//_____/ \/
|
||||
// ______________________ ______________________
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
// _________ __ __
|
||||
// / _____// |_____________ _/ |______ ____ __ __ ______
|
||||
// \_____ \\ __\_ __ \__ \\ __\__ \ / ___\| | \/ ___/
|
||||
// / \| | | | \// __ \| | / __ \_/ /_/ > | /\___ \
|
||||
// / \| | | | \// __ \| | / __ \_/ /_/ > | /\___ |
|
||||
// /_______ /|__| |__| (____ /__| (____ /\___ /|____//____ >
|
||||
// \/ \/ \//_____/ \/
|
||||
// ______________________ ______________________
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
// _________ __ __
|
||||
// / _____// |_____________ _/ |______ ____ __ __ ______
|
||||
// \_____ \\ __\_ __ \__ \\ __\__ \ / ___\| | \/ ___/
|
||||
// / \| | | | \// __ \| | / __ \_/ /_/ > | /\___ \
|
||||
// / \| | | | \// __ \| | / __ \_/ /_/ > | /\___ |
|
||||
// /_______ /|__| |__| (____ /__| (____ /\___ /|____//____ >
|
||||
// \/ \/ \//_____/ \/
|
||||
// ______________________ ______________________
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
// _________ __ __
|
||||
// / _____// |_____________ _/ |______ ____ __ __ ______
|
||||
// \_____ \\ __\_ __ \__ \\ __\__ \ / ___\| | \/ ___/
|
||||
// / \| | | | \// __ \| | / __ \_/ /_/ > | /\___ \
|
||||
// / \| | | | \// __ \| | / __ \_/ /_/ > | /\___ |
|
||||
// /_______ /|__| |__| (____ /__| (____ /\___ /|____//____ >
|
||||
// \/ \/ \//_____/ \/
|
||||
// ______________________ ______________________
|
||||
|
@ -47,6 +47,7 @@
|
|||
#include "map.h"
|
||||
#include "interface.h"
|
||||
#include "pathfinder.h"
|
||||
#include "upgrade_structs.h"
|
||||
|
||||
// FIXME: Should combine all the resource functions
|
||||
// FIXME: Should update buttons if the action changes?
|
||||
|
@ -243,7 +244,7 @@ local int ChopWood(Unit* unit)
|
|||
// NOTE: unit->Orders[0].X && unit->Orders[0].Y holds return place.
|
||||
unit->Orders[0].X=unit->X;
|
||||
unit->Orders[0].Y=unit->Y;
|
||||
if( !(destu=FindWoodDeposit(unit->Player,unit->X,unit->Y)) ) {
|
||||
if( !(destu=FindDeposit(unit->Player,unit->X,unit->Y,WoodCost)) ) {
|
||||
unit->Orders[0].Action=UnitActionStill;
|
||||
unit->SubAction=0;
|
||||
} else {
|
||||
|
@ -413,7 +414,7 @@ local int WaitInWoodDeposit(Unit* unit)
|
|||
//
|
||||
// Drop out unit at nearest point to target.
|
||||
//
|
||||
destu=WoodDepositOnMap(unit->X,unit->Y);
|
||||
destu=ResourceDepositOnMap(unit->X,unit->Y,WoodCost);
|
||||
DebugCheck( !destu ); // there must be a depot!
|
||||
|
||||
DropOutNearest(unit
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
// _________ __ __
|
||||
// / _____// |_____________ _/ |______ ____ __ __ ______
|
||||
// \_____ \\ __\_ __ \__ \\ __\__ \ / ___\| | \/ ___/
|
||||
// / \| | | | \// __ \| | / __ \_/ /_/ > | /\___ \
|
||||
// / \| | | | \// __ \| | / __ \_/ /_/ > | /\___ |
|
||||
// /_______ /|__| |__| (____ /__| (____ /\___ /|____//____ >
|
||||
// \/ \/ \//_____/ \/
|
||||
// ______________________ ______________________
|
||||
|
@ -282,7 +282,7 @@ local int MineInGoldmine(Unit* unit)
|
|||
//
|
||||
// Find gold depot
|
||||
//
|
||||
if( !(destu=FindGoldDeposit(unit,unit->X,unit->Y)) ) {
|
||||
if( !(destu=FindDeposit(unit->Player,unit->X,unit->Y,GoldCost)) ) {
|
||||
if( mine ) {
|
||||
DropOutOnSide(unit,LookingW
|
||||
,mine->Type->TileWidth,mine->Type->TileHeight);
|
||||
|
@ -474,7 +474,7 @@ local int StoreGoldInDeposit(Unit* unit)
|
|||
|
||||
DebugLevel3Fn("Waiting\n");
|
||||
if( !unit->Value ) {
|
||||
depot=GoldDepositOnMap(unit->X,unit->Y);
|
||||
depot=ResourceDepositOnMap(unit->X,unit->Y,GoldCost);
|
||||
DebugCheck( !depot );
|
||||
// Could be destroyed, but than we couldn't be in?
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
// _________ __ __
|
||||
// / _____// |_____________ _/ |______ ____ __ __ ______
|
||||
// \_____ \\ __\_ __ \__ \\ __\__ \ / ___\| | \/ ___/
|
||||
// / \| | | | \// __ \| | / __ \_/ /_/ > | /\___ \
|
||||
// / \| | | | \// __ \| | / __ \_/ /_/ > | /\___ |
|
||||
// /_______ /|__| |__| (____ /__| (____ /\___ /|____//____ >
|
||||
// \/ \/ \//_____/ \/
|
||||
// ______________________ ______________________
|
||||
|
@ -73,6 +73,7 @@ local int ActionMoveGeneric(Unit* unit,const Animation* anim)
|
|||
int i;
|
||||
int x;
|
||||
int y;
|
||||
Unit *uninside;
|
||||
|
||||
// FIXME: state 0?, should be wrong, should be Reset.
|
||||
// FIXME: Reset flag is cleared by HandleUnitAction.
|
||||
|
@ -153,15 +154,15 @@ local int ActionMoveGeneric(Unit* unit,const Animation* anim)
|
|||
UpdateButtonPanel();
|
||||
}
|
||||
|
||||
// Remark sight for units inside too.
|
||||
if ( unit->Type->Transporter ) {
|
||||
for( i=0; i<MAX_UNITS_ONBOARD; ++i ) {
|
||||
if( unit->OnBoard[i] != NoUnitP ) {
|
||||
MapMarkNewSight(unit->OnBoard[i]->Player,x,y,
|
||||
unit->OnBoard[i]->CurrentSightRange,xd,yd);
|
||||
}
|
||||
uninside=unit->UnitInside;
|
||||
for( i=unit->InsideCount; i; uninside=uninside->NextContained,i-- ) {
|
||||
MapMarkNewSight(uninside->Player,x,y,uninside->CurrentSightRange,xd,yd);
|
||||
}
|
||||
}
|
||||
|
||||
// Reveal Submarines and stuff.
|
||||
if( unit->Type->CanSeeSubmarine ) {
|
||||
MarkSubmarineSeen(unit->Player,x,y,unit->Stats->SightRange);
|
||||
}
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
// _________ __ __
|
||||
// / _____// |_____________ _/ |______ ____ __ __ ______
|
||||
// \_____ \\ __\_ __ \__ \\ __\__ \ / ___\| | \/ ___/
|
||||
// / \| | | | \// __ \| | / __ \_/ /_/ > | /\___ \
|
||||
// / \| | | | \// __ \| | / __ \_/ /_/ > | /\___ |
|
||||
// /_______ /|__| |__| (____ /__| (____ /\___ /|____//____ >
|
||||
// \/ \/ \//_____/ \/
|
||||
// ______________________ ______________________
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
// _________ __ __
|
||||
// / _____// |_____________ _/ |______ ____ __ __ ______
|
||||
// \_____ \\ __\_ __ \__ \\ __\__ \ / ___\| | \/ ___/
|
||||
// / \| | | | \// __ \| | / __ \_/ /_/ > | /\___ \
|
||||
// / \| | | | \// __ \| | / __ \_/ /_/ > | /\___ |
|
||||
// /_______ /|__| |__| (____ /__| (____ /\___ /|____//____ >
|
||||
// \/ \/ \//_____/ \/
|
||||
// ______________________ ______________________
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
// _________ __ __
|
||||
// / _____// |_____________ _/ |______ ____ __ __ ______
|
||||
// \_____ \\ __\_ __ \__ \\ __\__ \ / ___\| | \/ ___/
|
||||
// / \| | | | \// __ \| | / __ \_/ /_/ > | /\___ \
|
||||
// / \| | | | \// __ \| | / __ \_/ /_/ > | /\___ |
|
||||
// /_______ /|__| |__| (____ /__| (____ /\___ /|____//____ >
|
||||
// \/ \/ \//_____/ \/
|
||||
// ______________________ ______________________
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
// _________ __ __
|
||||
// / _____// |_____________ _/ |______ ____ __ __ ______
|
||||
// \_____ \\ __\_ __ \__ \\ __\__ \ / ___\| | \/ ___/
|
||||
// / \| | | | \// __ \| | / __ \_/ /_/ > | /\___ \
|
||||
// / \| | | | \// __ \| | / __ \_/ /_/ > | /\___ |
|
||||
// /_______ /|__| |__| (____ /__| (____ /\___ /|____//____ >
|
||||
// \/ \/ \//_____/ \/
|
||||
// ______________________ ______________________
|
||||
|
@ -58,12 +58,7 @@ typedef struct _resource_ {
|
|||
unsigned char Action; /// Unit action.
|
||||
int Frame; /// Frame for active resource
|
||||
Unit* (*ResourceOnMap)(int,int); /// Get the resource on map.
|
||||
Unit* (*DepositOnMap)(int,int); /// Get the deposit on map.
|
||||
/// Find the source of resource
|
||||
Unit* (*FindResource)(const Player*,int,int);
|
||||
/// Find the deposit of resource
|
||||
Unit* (*FindDeposit)(const Unit*,int,int);
|
||||
int Cost; /// How many can the unit carry.
|
||||
int Cost; /// Resource type
|
||||
UnitType** Human; /// Human worker
|
||||
UnitType** HumanWithResource; /// Human worker with resource
|
||||
UnitType** Orc; /// Orc worker
|
||||
|
@ -284,7 +279,7 @@ local int WaitInResource(Unit* unit,const Resource* resource)
|
|||
//
|
||||
// Find and send to resource deposit.
|
||||
//
|
||||
if( !(depot=resource->FindDeposit(unit,unit->X,unit->Y)) ) {
|
||||
if( !(depot=FindDeposit(unit->Player,unit->X,unit->Y,resource->Cost)) ) {
|
||||
if( source ) {
|
||||
DropOutOnSide(unit,LookingW
|
||||
,source->Type->TileWidth,source->Type->TileHeight);
|
||||
|
@ -463,7 +458,7 @@ local int WaitInDepot(Unit* unit,const Resource* resource)
|
|||
|
||||
DebugLevel3Fn("Waiting\n");
|
||||
if( !unit->Value ) {
|
||||
depot=resource->DepositOnMap(unit->X,unit->Y);
|
||||
depot=ResourceDepositOnMap(unit->X,unit->Y,resource->Cost);
|
||||
DebugCheck( !depot );
|
||||
// Could be destroyed, but than we couldn't be in?
|
||||
|
||||
|
@ -474,7 +469,7 @@ local int WaitInDepot(Unit* unit,const Resource* resource)
|
|||
x=(int)unit->Orders[0].Arg1>>16;
|
||||
y=(int)unit->Orders[0].Arg1&0xFFFF;
|
||||
}
|
||||
if( !(goal=resource->FindResource(unit->Player,x,y)) ) {
|
||||
if( !(goal=FindOilPlatform(unit->Player,x,y)) ) {
|
||||
DropOutOnSide(unit,LookingW,
|
||||
depot->Type->TileWidth,depot->Type->TileHeight);
|
||||
unit->Orders[0].Action=UnitActionStill;
|
||||
|
@ -618,9 +613,6 @@ local Resource ResourceOil[1] = {
|
|||
UnitActionHaulOil,
|
||||
2, // FIXME: hardcoded.
|
||||
PlatformOnMap,
|
||||
OilDepositOnMap,
|
||||
FindOilPlatform,
|
||||
FindOilDeposit,
|
||||
OilCost,
|
||||
// FIXME: The & could be removed.
|
||||
&UnitTypeHumanTanker,
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
// _________ __ __
|
||||
// / _____// |_____________ _/ |______ ____ __ __ ______
|
||||
// \_____ \\ __\_ __ \__ \\ __\__ \ / ___\| | \/ ___/
|
||||
// / \| | | | \// __ \| | / __ \_/ /_/ > | /\___ \
|
||||
// / \| | | | \// __ \| | / __ \_/ /_/ > | /\___ |
|
||||
// /_______ /|__| |__| (____ /__| (____ /\___ /|____//____ >
|
||||
// \/ \/ \//_____/ \/
|
||||
// ______________________ ______________________
|
||||
|
@ -69,7 +69,7 @@ global void HandleActionReturnGoods(Unit* unit)
|
|||
//
|
||||
if( type==UnitTypeHumanWorkerWithGold || type==UnitTypeOrcWorkerWithGold ) {
|
||||
if( !unit->Orders[0].Goal ) {
|
||||
if( !(destu=FindGoldDeposit(unit,unit->X,unit->Y)) ) {
|
||||
if( !(destu=FindDeposit(unit->Player,unit->X,unit->Y,GoldCost)) ) {
|
||||
// No deposit -> can't return
|
||||
unit->Orders[0].Action=UnitActionStill;
|
||||
return;
|
||||
|
@ -89,7 +89,7 @@ global void HandleActionReturnGoods(Unit* unit)
|
|||
|
||||
if( type==UnitTypeHumanWorkerWithWood || type==UnitTypeOrcWorkerWithWood ) {
|
||||
if( !unit->Orders[0].Goal ) {
|
||||
if( !(destu=FindWoodDeposit(unit->Player,unit->X,unit->Y)) ) {
|
||||
if( !(destu=FindDeposit(unit->Player,unit->X,unit->Y,WoodCost)) ) {
|
||||
// No deposit -> can't return
|
||||
unit->Orders[0].Action=UnitActionStill;
|
||||
return;
|
||||
|
@ -114,7 +114,7 @@ global void HandleActionReturnGoods(Unit* unit)
|
|||
|
||||
if( type==UnitTypeHumanTankerFull || type==UnitTypeOrcTankerFull ) {
|
||||
if( !unit->Orders[0].Goal ) {
|
||||
if( !(destu=FindOilDeposit(unit,unit->X,unit->Y)) ) {
|
||||
if( !(destu=FindDeposit(unit->Player,unit->X,unit->Y,OilCost)) ) {
|
||||
// No deposit -> can't return
|
||||
unit->Orders[0].Action=UnitActionStill;
|
||||
return;
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
// _________ __ __
|
||||
// / _____// |_____________ _/ |______ ____ __ __ ______
|
||||
// \_____ \\ __\_ __ \__ \\ __\__ \ / ___\| | \/ ___/
|
||||
// / \| | | | \// __ \| | / __ \_/ /_/ > | /\___ \
|
||||
// / \| | | | \// __ \| | / __ \_/ /_/ > | /\___ |
|
||||
// /_______ /|__| |__| (____ /__| (____ /\___ /|____//____ >
|
||||
// \/ \/ \//_____/ \/
|
||||
// ______________________ ______________________
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
// _________ __ __
|
||||
// / _____// |_____________ _/ |______ ____ __ __ ______
|
||||
// \_____ \\ __\_ __ \__ \\ __\__ \ / ___\| | \/ ___/
|
||||
// / \| | | | \// __ \| | / __ \_/ /_/ > | /\___ \
|
||||
// / \| | | | \// __ \| | / __ \_/ /_/ > | /\___ |
|
||||
// /_______ /|__| |__| (____ /__| (____ /\___ /|____//____ >
|
||||
// \/ \/ \//_____/ \/
|
||||
// ______________________ ______________________
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
// _________ __ __
|
||||
// / _____// |_____________ _/ |______ ____ __ __ ______
|
||||
// \_____ \\ __\_ __ \__ \\ __\__ \ / ___\| | \/ ___/
|
||||
// / \| | | | \// __ \| | / __ \_/ /_/ > | /\___ \
|
||||
// / \| | | | \// __ \| | / __ \_/ /_/ > | /\___ |
|
||||
// /_______ /|__| |__| (____ /__| (____ /\___ /|____//____ >
|
||||
// \/ \/ \//_____/ \/
|
||||
// ______________________ ______________________
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
// _________ __ __
|
||||
// / _____// |_____________ _/ |______ ____ __ __ ______
|
||||
// \_____ \\ __\_ __ \__ \\ __\__ \ / ___\| | \/ ___/
|
||||
// / \| | | | \// __ \| | / __ \_/ /_/ > | /\___ \
|
||||
// / \| | | | \// __ \| | / __ \_/ /_/ > | /\___ |
|
||||
// /_______ /|__| |__| (____ /__| (____ /\___ /|____//____ >
|
||||
// \/ \/ \//_____/ \/
|
||||
// ______________________ ______________________
|
||||
|
@ -112,8 +112,12 @@ global void HandleActionTrain(Unit* unit)
|
|||
nunit->X=unit->X;
|
||||
nunit->Y=unit->Y;
|
||||
type=unit->Type;
|
||||
// Set unit to belong to the building building it.
|
||||
nunit->Next=unit;
|
||||
|
||||
// Some guy made DropOutOnSide set unit to belong to the building
|
||||
// training it. This was an ugly hack, setting X and Y is enough,
|
||||
// no need to add the unit only to be removed.
|
||||
nunit->X=unit->X;
|
||||
nunit->Y=unit->Y;
|
||||
|
||||
DropOutOnSide(nunit,LookingW,type->TileWidth,type->TileHeight);
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
// _________ __ __
|
||||
// / _____// |_____________ _/ |______ ____ __ __ ______
|
||||
// \_____ \\ __\_ __ \__ \\ __\__ \ / ___\| | \/ ___/
|
||||
// / \| | | | \// __ \| | / __ \_/ /_/ > | /\___ \
|
||||
// / \| | | | \// __ \| | / __ \_/ /_/ > | /\___ |
|
||||
// /_______ /|__| |__| (____ /__| (____ /\___ /|____//____ >
|
||||
// \/ \/ \//_____/ \/
|
||||
// ______________________ ______________________
|
||||
|
@ -257,6 +257,9 @@ local void LeaveTransporter(Unit* unit)
|
|||
stillonboard=0;
|
||||
|
||||
goal=unit->Orders[0].Goal;
|
||||
//
|
||||
// Goal is the specific unit unit that you want to unload.
|
||||
// This can be NULL, in case you want to unload everything.
|
||||
DebugLevel3Fn("Goal %p\n" _C_ goal);
|
||||
if( goal ) {
|
||||
unit->Orders[0].Goal=NoUnitP;
|
||||
|
@ -271,28 +274,18 @@ local void LeaveTransporter(Unit* unit)
|
|||
RefsDebugCheck( !goal->Refs );
|
||||
--goal->Refs;
|
||||
RefsDebugCheck( !goal->Refs );
|
||||
for( i=0; i<MAX_UNITS_ONBOARD; ++i ) {
|
||||
if( goal==unit->OnBoard[i] ) {
|
||||
goal->X=unit->X;
|
||||
goal->Y=unit->Y;
|
||||
if( UnloadUnit(goal) ) {
|
||||
unit->OnBoard[i]=NoUnitP;
|
||||
unit->Value--;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
goal->X=unit->X;
|
||||
goal->Y=unit->Y;
|
||||
// Try to unload the unit. If it doesn't work there is no problem.
|
||||
UnloadUnit(goal);
|
||||
} else {
|
||||
for( i=0; i<MAX_UNITS_ONBOARD; ++i ) {
|
||||
if( (goal=unit->OnBoard[i]) ) {
|
||||
goal->X=unit->X;
|
||||
goal->Y=unit->Y;
|
||||
if( UnloadUnit(goal) ) {
|
||||
unit->OnBoard[i]=NoUnitP;
|
||||
unit->Value--;
|
||||
} else {
|
||||
stillonboard++;
|
||||
}
|
||||
// Unload all units.
|
||||
goal=unit->UnitInside;
|
||||
for( i=unit->InsideCount; i; --i,goal=goal->NextContained) {
|
||||
goal->X=unit->X;
|
||||
goal->Y=unit->Y;
|
||||
if( !UnloadUnit(goal) ) {
|
||||
stillonboard++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
// _________ __ __
|
||||
// / _____// |_____________ _/ |______ ____ __ __ ______
|
||||
// \_____ \\ __\_ __ \__ \\ __\__ \ / ___\| | \/ ___/
|
||||
// / \| | | | \// __ \| | / __ \_/ /_/ > | /\___ \
|
||||
// / \| | | | \// __ \| | / __ \_/ /_/ > | /\___ |
|
||||
// /_______ /|__| |__| (____ /__| (____ /\___ /|____//____ >
|
||||
// \/ \/ \//_____/ \/
|
||||
// ______________________ ______________________
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
// _________ __ __
|
||||
// / _____// |_____________ _/ |______ ____ __ __ ______
|
||||
// \_____ \\ __\_ __ \__ \\ __\__ \ / ___\| | \/ ___/
|
||||
// / \| | | | \// __ \| | / __ \_/ /_/ > | /\___ \
|
||||
// / \| | | | \// __ \| | / __ \_/ /_/ > | /\___ |
|
||||
// /_______ /|__| |__| (____ /__| (____ /\___ /|____//____ >
|
||||
// \/ \/ \//_____/ \/
|
||||
// ______________________ ______________________
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
// _________ __ __
|
||||
// / _____// |_____________ _/ |______ ____ __ __ ______
|
||||
// \_____ \\ __\_ __ \__ \\ __\__ \ / ___\| | \/ ___/
|
||||
// / \| | | | \// __ \| | / __ \_/ /_/ > | /\___ \
|
||||
// / \| | | | \// __ \| | / __ \_/ /_/ > | /\___ |
|
||||
// /_______ /|__| |__| (____ /__| (____ /\___ /|____//____ >
|
||||
// \/ \/ \//_____/ \/
|
||||
// ______________________ ______________________
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
// _________ __ __
|
||||
// / _____// |_____________ _/ |______ ____ __ __ ______
|
||||
// \_____ \\ __\_ __ \__ \\ __\__ \ / ___\| | \/ ___/
|
||||
// / \| | | | \// __ \| | / __ \_/ /_/ > | /\___ \
|
||||
// / \| | | | \// __ \| | / __ \_/ /_/ > | /\___ |
|
||||
// /_______ /|__| |__| (____ /__| (____ /\___ /|____//____ >
|
||||
// \/ \/ \//_____/ \/
|
||||
// ______________________ ______________________
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
// _________ __ __
|
||||
// / _____// |_____________ _/ |______ ____ __ __ ______
|
||||
// \_____ \\ __\_ __ \__ \\ __\__ \ / ___\| | \/ ___/
|
||||
// / \| | | | \// __ \| | / __ \_/ /_/ > | /\___ \
|
||||
// / \| | | | \// __ \| | / __ \_/ /_/ > | /\___ |
|
||||
// /_______ /|__| |__| (____ /__| (____ /\___ /|____//____ >
|
||||
// \/ \/ \//_____/ \/
|
||||
// ______________________ ______________________
|
||||
|
@ -443,7 +443,7 @@ local int AiFindHallPlace(const Unit * worker, const UnitType * type,
|
|||
break;
|
||||
}
|
||||
// Town hall near mine
|
||||
if( units[j]->Type->StoresGold ) {
|
||||
if( units[j]->Type->Stores[GoldCost] ) {
|
||||
break;
|
||||
}
|
||||
// Town hall may not be near but we may be using it, check
|
||||
|
@ -626,14 +626,14 @@ global int AiFindBuildingPlace(const Unit * worker, const UnitType * type,
|
|||
//
|
||||
// Find a good place for a new hall
|
||||
//
|
||||
if( type->StoresGold && AiFindHallPlace(worker,type,dx,dy) ) {
|
||||
if( type->Stores[GoldCost] && AiFindHallPlace(worker,type,dx,dy) ) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
//
|
||||
// Find a place near wood for a lumber mill
|
||||
//
|
||||
if( type->StoresWood && AiFindLumberMillPlace(worker,type,dx,dy) ) {
|
||||
if( type->Stores[WoodCost] && AiFindLumberMillPlace(worker,type,dx,dy) ) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
// _________ __ __
|
||||
// / _____// |_____________ _/ |______ ____ __ __ ______
|
||||
// \_____ \\ __\_ __ \__ \\ __\__ \ / ___\| | \/ ___/
|
||||
// / \| | | | \// __ \| | / __ \_/ /_/ > | /\___ \
|
||||
// / \| | | | \// __ \| | / __ \_/ /_/ > | /\___ |
|
||||
// /_______ /|__| |__| (____ /__| (____ /\___ /|____//____ >
|
||||
// \/ \/ \//_____/ \/
|
||||
// ______________________ ______________________
|
||||
|
@ -470,8 +470,9 @@ local void AiLoadForce(AiForce* force)
|
|||
}
|
||||
CommandBoard(unit,table[i],FlushCommands);
|
||||
++o;
|
||||
if( o==MAX_UNITS_ONBOARD ) {
|
||||
DebugLevel0Fn("FIXME: next transporter\n");
|
||||
// FIXME
|
||||
if( o==table[i]->Type->MaxOnBoard ) {
|
||||
DebugLevel0Fn("FIXME: next transporter for AI boarding\n");
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
@ -532,7 +533,6 @@ local void AiWaitLanded(AiForce* force)
|
|||
{
|
||||
AiUnit* aiunit;
|
||||
int i;
|
||||
int j;
|
||||
|
||||
DebugLevel0Fn("Waiting\n");
|
||||
//
|
||||
|
@ -544,13 +544,11 @@ local void AiWaitLanded(AiForce* force)
|
|||
if( aiunit->Unit->Type->Transporter ) {
|
||||
if( aiunit->Unit->Orders[0].Action==UnitActionStill ) {
|
||||
DebugLevel0Fn("Unloading\n");
|
||||
for( j=0; j<MAX_UNITS_ONBOARD; ++j ) {
|
||||
if( aiunit->Unit->OnBoard[j] ) {
|
||||
CommandUnload(aiunit->Unit,force->GoalX,force->GoalY,
|
||||
NoUnitP,FlushCommands);
|
||||
i=0;
|
||||
break;
|
||||
}
|
||||
// Don't tell empty transporters to unload.
|
||||
if (aiunit->Unit->InsideCount) {
|
||||
CommandUnload(aiunit->Unit,force->GoalX,force->GoalY,
|
||||
NoUnitP,FlushCommands);
|
||||
i=0;
|
||||
}
|
||||
} else {
|
||||
i=0;
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
// _________ __ __
|
||||
// / _____// |_____________ _/ |______ ____ __ __ ______
|
||||
// \_____ \\ __\_ __ \__ \\ __\__ \ / ___\| | \/ ___/
|
||||
// / \| | | | \// __ \| | / __ \_/ /_/ > | /\___ \
|
||||
// / \| | | | \// __ \| | / __ \_/ /_/ > | /\___ |
|
||||
// /_______ /|__| |__| (____ /__| (____ /\___ /|____//____ >
|
||||
// \/ \/ \//_____/ \/
|
||||
// ______________________ ______________________
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
// _________ __ __
|
||||
// / _____// |_____________ _/ |______ ____ __ __ ______
|
||||
// \_____ \\ __\_ __ \__ \\ __\__ \ / ___\| | \/ ___/
|
||||
// / \| | | | \// __ \| | / __ \_/ /_/ > | /\___ \
|
||||
// / \| | | | \// __ \| | / __ \_/ /_/ > | /\___ |
|
||||
// /_______ /|__| |__| (____ /__| (____ /\___ /|____//____ >
|
||||
// \/ \/ \//_____/ \/
|
||||
// ______________________ ______________________
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
// _________ __ __
|
||||
// / _____// |_____________ _/ |______ ____ __ __ ______
|
||||
// \_____ \\ __\_ __ \__ \\ __\__ \ / ___\| | \/ ___/
|
||||
// / \| | | | \// __ \| | / __ \_/ /_/ > | /\___ \
|
||||
// / \| | | | \// __ \| | / __ \_/ /_/ > | /\___ |
|
||||
// /_______ /|__| |__| (____ /__| (____ /\___ /|____//____ >
|
||||
// \/ \/ \//_____/ \/
|
||||
// ______________________ ______________________
|
||||
|
@ -555,7 +555,7 @@ global int AiPlanAttack(AiForce* force)
|
|||
unit=AiPlayer->Player->Units[i];
|
||||
if( unit->Type->Transporter
|
||||
&& unit->Orders[0].Action==UnitActionStill
|
||||
&& unit->OrderCount==1 && !unit->OnBoard[0] ) {
|
||||
&& unit->OrderCount==1 ) {
|
||||
DebugLevel0Fn("Assign any transporter\n");
|
||||
AiMarkWaterTransporter(unit,watermatrix);
|
||||
// FIXME: can be the wrong transporter.
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
// _________ __ __
|
||||
// / _____// |_____________ _/ |______ ____ __ __ ______
|
||||
// \_____ \\ __\_ __ \__ \\ __\__ \ / ___\| | \/ ___/
|
||||
// / \| | | | \// __ \| | / __ \_/ /_/ > | /\___ \
|
||||
// / \| | | | \// __ \| | / __ \_/ /_/ > | /\___ |
|
||||
// /_______ /|__| |__| (____ /__| (____ /\___ /|____//____ >
|
||||
// \/ \/ \//_____/ \/
|
||||
// ______________________ ______________________
|
||||
|
@ -774,7 +774,7 @@ local Unit* AiFindGoldMine(const Unit* unit)
|
|||
//
|
||||
// Find the nearest gold depot
|
||||
//
|
||||
if( (destu=FindGoldDeposit(unit,x,y)) ) {
|
||||
if( (destu=FindDeposit(unit->Player,x,y,GoldCost)) ) {
|
||||
NearestOfUnit(destu,x,y,&destx,&desty);
|
||||
}
|
||||
bestd=99999;
|
||||
|
@ -1079,7 +1079,7 @@ local int AiHarvest(Unit * unit)
|
|||
//
|
||||
// Find the nearest wood depot
|
||||
//
|
||||
if( (destu=FindWoodDeposit(unit->Player,x,y)) ) {
|
||||
if( (destu=FindDeposit(unit->Player,x,y,WoodCost)) ) {
|
||||
NearestOfUnit(destu,x,y,&destx,&desty);
|
||||
}
|
||||
bestd=99999;
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
// _________ __ __
|
||||
// / _____// |_____________ _/ |______ ____ __ __ ______
|
||||
// \_____ \\ __\_ __ \__ \\ __\__ \ / ___\| | \/ ___/
|
||||
// / \| | | | \// __ \| | / __ \_/ /_/ > | /\___ \
|
||||
// / \| | | | \// __ \| | / __ \_/ /_/ > | /\___ |
|
||||
// /_______ /|__| |__| (____ /__| (____ /\___ /|____//____ >
|
||||
// \/ \/ \//_____/ \/
|
||||
// ______________________ ______________________
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
// _________ __ __
|
||||
// / _____// |_____________ _/ |______ ____ __ __ ______
|
||||
// \_____ \\ __\_ __ \__ \\ __\__ \ / ___\| | \/ ___/
|
||||
// / \| | | | \// __ \| | / __ \_/ /_/ > | /\___ \
|
||||
// / \| | | | \// __ \| | / __ \_/ /_/ > | /\___ |
|
||||
// /_______ /|__| |__| (____ /__| (____ /\___ /|____//____ >
|
||||
// \/ \/ \//_____/ \/
|
||||
// ______________________ ______________________
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
// _________ __ __
|
||||
// / _____// |_____________ _/ |______ ____ __ __ ______
|
||||
// \_____ \\ __\_ __ \__ \\ __\__ \ / ___\| | \/ ___/
|
||||
// / \| | | | \// __ \| | / __ \_/ /_/ > | /\___ \
|
||||
// / \| | | | \// __ \| | / __ \_/ /_/ > | /\___ |
|
||||
// /_______ /|__| |__| (____ /__| (____ /\___ /|____//____ >
|
||||
// \/ \/ \//_____/ \/
|
||||
// ______________________ ______________________
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
// _________ __ __
|
||||
// / _____// |_____________ _/ |______ ____ __ __ ______
|
||||
// \_____ \\ __\_ __ \__ \\ __\__ \ / ___\| | \/ ___/
|
||||
// / \| | | | \// __ \| | / __ \_/ /_/ > | /\___ \
|
||||
// / \| | | | \// __ \| | / __ \_/ /_/ > | /\___ |
|
||||
// /_______ /|__| |__| (____ /__| (____ /\___ /|____//____ >
|
||||
// \/ \/ \//_____/ \/
|
||||
// ______________________ ______________________
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
// _________ __ __
|
||||
// / _____// |_____________ _/ |______ ____ __ __ ______
|
||||
// \_____ \\ __\_ __ \__ \\ __\__ \ / ___\| | \/ ___/
|
||||
// / \| | | | \// __ \| | / __ \_/ /_/ > | /\___ \
|
||||
// / \| | | | \// __ \| | / __ \_/ /_/ > | /\___ |
|
||||
// /_______ /|__| |__| (____ /__| (____ /\___ /|____//____ >
|
||||
// \/ \/ \//_____/ \/
|
||||
// ______________________ ______________________
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
// _________ __ __
|
||||
// / _____// |_____________ _/ |______ ____ __ __ ______
|
||||
// \_____ \\ __\_ __ \__ \\ __\__ \ / ___\| | \/ ___/
|
||||
// / \| | | | \// __ \| | / __ \_/ /_/ > | /\___ \
|
||||
// / \| | | | \// __ \| | / __ \_/ /_/ > | /\___ |
|
||||
// /_______ /|__| |__| (____ /__| (____ /\___ /|____//____ >
|
||||
// \/ \/ \//_____/ \/
|
||||
// ______________________ ______________________
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
// _________ __ __
|
||||
// / _____// |_____________ _/ |______ ____ __ __ ______
|
||||
// \_____ \\ __\_ __ \__ \\ __\__ \ / ___\| | \/ ___/
|
||||
// / \| | | | \// __ \| | / __ \_/ /_/ > | /\___ \
|
||||
// / \| | | | \// __ \| | / __ \_/ /_/ > | /\___ |
|
||||
// /_______ /|__| |__| (____ /__| (____ /\___ /|____//____ >
|
||||
// \/ \/ \//_____/ \/
|
||||
// ______________________ ______________________
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
// _________ __ __
|
||||
// / _____// |_____________ _/ |______ ____ __ __ ______
|
||||
// \_____ \\ __\_ __ \__ \\ __\__ \ / ___\| | \/ ___/
|
||||
// / \| | | | \// __ \| | / __ \_/ /_/ > | /\___ \
|
||||
// / \| | | | \// __ \| | / __ \_/ /_/ > | /\___ |
|
||||
// /_______ /|__| |__| (____ /__| (____ /\___ /|____//____ >
|
||||
// \/ \/ \//_____/ \/
|
||||
// ______________________ ______________________
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
// _________ __ __
|
||||
// / _____// |_____________ _/ |______ ____ __ __ ______
|
||||
// \_____ \\ __\_ __ \__ \\ __\__ \ / ___\| | \/ ___/
|
||||
// / \| | | | \// __ \| | / __ \_/ /_/ > | /\___ \
|
||||
// / \| | | | \// __ \| | / __ \_/ /_/ > | /\___ |
|
||||
// /_______ /|__| |__| (____ /__| (____ /\___ /|____//____ >
|
||||
// \/ \/ \//_____/ \/
|
||||
// ______________________ ______________________
|
||||
|
@ -529,10 +529,10 @@ global void CreateGame(char* filename, WorldMap* map)
|
|||
for( i=0; i<NumUnits; ++i ) {
|
||||
// I don't really think that there can be any rescued
|
||||
// units at this point.
|
||||
if (Units[i]->Rescued) {
|
||||
Units[i]->Colors=Units[i]->RescuedFrom->UnitColors;
|
||||
if (Units[i]->RescuedFrom) {
|
||||
Units[i]->Colors=&Units[i]->RescuedFrom->UnitColors;
|
||||
} else {
|
||||
Units[i]->Colors=Units[i]->Player->UnitColors;
|
||||
Units[i]->Colors=&Units[i]->Player->UnitColors;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
// _________ __ __
|
||||
// / _____// |_____________ _/ |______ ____ __ __ ______
|
||||
// \_____ \\ __\_ __ \__ \\ __\__ \ / ___\| | \/ ___/
|
||||
// / \| | | | \// __ \| | / __ \_/ /_/ > | /\___ \
|
||||
// / \| | | | \// __ \| | / __ \_/ /_/ > | /\___ |
|
||||
// /_______ /|__| |__| (____ /__| (____ /\___ /|____//____ >
|
||||
// \/ \/ \//_____/ \/
|
||||
// ______________________ ______________________
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
// _________ __ __
|
||||
// / _____// |_____________ _/ |______ ____ __ __ ______
|
||||
// \_____ \\ __\_ __ \__ \\ __\__ \ / ___\| | \/ ___/
|
||||
// / \| | | | \// __ \| | / __ \_/ /_/ > | /\___ \
|
||||
// / \| | | | \// __ \| | / __ \_/ /_/ > | /\___ |
|
||||
// /_______ /|__| |__| (____ /__| (____ /\___ /|____//____ >
|
||||
// \/ \/ \//_____/ \/
|
||||
// ______________________ ______________________
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
// _________ __ __
|
||||
// / _____// |_____________ _/ |______ ____ __ __ ______
|
||||
// \_____ \\ __\_ __ \__ \\ __\__ \ / ___\| | \/ ___/
|
||||
// / \| | | | \// __ \| | / __ \_/ /_/ > | /\___ \
|
||||
// / \| | | | \// __ \| | / __ \_/ /_/ > | /\___ |
|
||||
// /_______ /|__| |__| (____ /__| (____ /\___ /|____//____ >
|
||||
// \/ \/ \//_____/ \/
|
||||
// ______________________ ______________________
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
// _________ __ __
|
||||
// / _____// |_____________ _/ |______ ____ __ __ ______
|
||||
// \_____ \\ __\_ __ \__ \\ __\__ \ / ___\| | \/ ___/
|
||||
// / \| | | | \// __ \| | / __ \_/ /_/ > | /\___ \
|
||||
// / \| | | | \// __ \| | / __ \_/ /_/ > | /\___ |
|
||||
// /_______ /|__| |__| (____ /__| (____ /\___ /|____//____ >
|
||||
// \/ \/ \//_____/ \/
|
||||
// ______________________ ______________________
|
||||
|
@ -492,7 +492,7 @@ local SCM CclIfRescuedNearUnit(SCM player,SCM operation,SCM quantity,SCM unit,
|
|||
//
|
||||
for( j=s=0; j<an; ++j ) {
|
||||
unit=around[j];
|
||||
if( unit->Rescued ) { // only rescued units
|
||||
if( unit->RescuedFrom ) { // only rescued units
|
||||
//
|
||||
// Check unit type
|
||||
//
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
// _________ __ __
|
||||
// / _____// |_____________ _/ |______ ____ __ __ ______
|
||||
// \_____ \\ __\_ __ \__ \\ __\__ \ / ___\| | \/ ___/
|
||||
// / \| | | | \// __ \| | / __ \_/ /_/ > | /\___ \
|
||||
// / \| | | | \// __ \| | / __ \_/ /_/ > | /\___ |
|
||||
// /_______ /|__| |__| (____ /__| (____ /\___ /|____//____ >
|
||||
// \/ \/ \//_____/ \/
|
||||
// ______________________ ______________________
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
// _________ __ __
|
||||
// / _____// |_____________ _/ |______ ____ __ __ ______
|
||||
// \_____ \\ __\_ __ \__ \\ __\__ \ / ___\| | \/ ___/
|
||||
// / \| | | | \// __ \| | / __ \_/ /_/ > | /\___ \
|
||||
// / \| | | | \// __ \| | / __ \_/ /_/ > | /\___ |
|
||||
// /_______ /|__| |__| (____ /__| (____ /\___ /|____//____ >
|
||||
// \/ \/ \//_____/ \/
|
||||
// ______________________ ______________________
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
// _________ __ __
|
||||
// / _____// |_____________ _/ |______ ____ __ __ ______
|
||||
// \_____ \\ __\_ __ \__ \\ __\__ \ / ___\| | \/ ___/
|
||||
// / \| | | | \// __ \| | / __ \_/ /_/ > | /\___ \
|
||||
// / \| | | | \// __ \| | / __ \_/ /_/ > | /\___ |
|
||||
// /_______ /|__| |__| (____ /__| (____ /\___ /|____//____ >
|
||||
// \/ \/ \//_____/ \/
|
||||
// ______________________ ______________________
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
// _________ __ __
|
||||
// / _____// |_____________ _/ |______ ____ __ __ ______
|
||||
// \_____ \\ __\_ __ \__ \\ __\__ \ / ___\| | \/ ___/
|
||||
// / \| | | | \// __ \| | / __ \_/ /_/ > | /\___ \
|
||||
// / \| | | | \// __ \| | / __ \_/ /_/ > | /\___ |
|
||||
// /_______ /|__| |__| (____ /__| (____ /\___ /|____//____ >
|
||||
// \/ \/ \//_____/ \/
|
||||
// ______________________ ______________________
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
// _________ __ __
|
||||
// / _____// |_____________ _/ |______ ____ __ __ ______
|
||||
// \_____ \\ __\_ __ \__ \\ __\__ \ / ___\| | \/ ___/
|
||||
// / \| | | | \// __ \| | / __ \_/ /_/ > | /\___ \
|
||||
// / \| | | | \// __ \| | / __ \_/ /_/ > | /\___ |
|
||||
// /_______ /|__| |__| (____ /__| (____ /\___ /|____//____ >
|
||||
// \/ \/ \//_____/ \/
|
||||
// ______________________ ______________________
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
// _________ __ __
|
||||
// / _____// |_____________ _/ |______ ____ __ __ ______
|
||||
// \_____ \\ __\_ __ \__ \\ __\__ \ / ___\| | \/ ___/
|
||||
// / \| | | | \// __ \| | / __ \_/ /_/ > | /\___ \
|
||||
// / \| | | | \// __ \| | / __ \_/ /_/ > | /\___ |
|
||||
// /_______ /|__| |__| (____ /__| (____ /\___ /|____//____ >
|
||||
// \/ \/ \//_____/ \/
|
||||
// ______________________ ______________________
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
// _________ __ __
|
||||
// / _____// |_____________ _/ |______ ____ __ __ ______
|
||||
// \_____ \\ __\_ __ \__ \\ __\__ \ / ___\| | \/ ___/
|
||||
// / \| | | | \// __ \| | / __ \_/ /_/ > | /\___ \
|
||||
// / \| | | | \// __ \| | / __ \_/ /_/ > | /\___ |
|
||||
// /_______ /|__| |__| (____ /__| (____ /\___ /|____//____ >
|
||||
// \/ \/ \//_____/ \/
|
||||
// ______________________ ______________________
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
// _________ __ __
|
||||
// / _____// |_____________ _/ |______ ____ __ __ ______
|
||||
// \_____ \\ __\_ __ \__ \\ __\__ \ / ___\| | \/ ___/
|
||||
// / \| | | | \// __ \| | / __ \_/ /_/ > | /\___ \
|
||||
// / \| | | | \// __ \| | / __ \_/ /_/ > | /\___ |
|
||||
// /_______ /|__| |__| (____ /__| (____ /\___ /|____//____ >
|
||||
// \/ \/ \//_____/ \/
|
||||
// ______________________ ______________________
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
// _________ __ __
|
||||
// / _____// |_____________ _/ |______ ____ __ __ ______
|
||||
// \_____ \\ __\_ __ \__ \\ __\__ \ / ___\| | \/ ___/
|
||||
// / \| | | | \// __ \| | / __ \_/ /_/ > | /\___ \
|
||||
// / \| | | | \// __ \| | / __ \_/ /_/ > | /\___ |
|
||||
// /_______ /|__| |__| (____ /__| (____ /\___ /|____//____ >
|
||||
// \/ \/ \//_____/ \/
|
||||
// ______________________ ______________________
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
// _________ __ __
|
||||
// / _____// |_____________ _/ |______ ____ __ __ ______
|
||||
// \_____ \\ __\_ __ \__ \\ __\__ \ / ___\| | \/ ___/
|
||||
// / \| | | | \// __ \| | / __ \_/ /_/ > | /\___ \
|
||||
// / \| | | | \// __ \| | / __ \_/ /_/ > | /\___ |
|
||||
// /_______ /|__| |__| (____ /__| (____ /\___ /|____//____ >
|
||||
// \/ \/ \//_____/ \/
|
||||
// ______________________ ______________________
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
// _________ __ __
|
||||
// / _____// |_____________ _/ |______ ____ __ __ ______
|
||||
// \_____ \\ __\_ __ \__ \\ __\__ \ / ___\| | \/ ___/
|
||||
// / \| | | | \// __ \| | / __ \_/ /_/ > | /\___ \
|
||||
// / \| | | | \// __ \| | / __ \_/ /_/ > | /\___ |
|
||||
// /_______ /|__| |__| (____ /__| (____ /\___ /|____//____ >
|
||||
// \/ \/ \//_____/ \/
|
||||
// ______________________ ______________________
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
// _________ __ __
|
||||
// / _____// |_____________ _/ |______ ____ __ __ ______
|
||||
// \_____ \\ __\_ __ \__ \\ __\__ \ / ___\| | \/ ___/
|
||||
// / \| | | | \// __ \| | / __ \_/ /_/ > | /\___ \
|
||||
// / \| | | | \// __ \| | / __ \_/ /_/ > | /\___ |
|
||||
// /_______ /|__| |__| (____ /__| (____ /\___ /|____//____ >
|
||||
// \/ \/ \//_____/ \/
|
||||
// ______________________ ______________________
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
// _________ __ __
|
||||
// / _____// |_____________ _/ |______ ____ __ __ ______
|
||||
// \_____ \\ __\_ __ \__ \\ __\__ \ / ___\| | \/ ___/
|
||||
// / \| | | | \// __ \| | / __ \_/ /_/ > | /\___ \
|
||||
// / \| | | | \// __ \| | / __ \_/ /_/ > | /\___ |
|
||||
// /_______ /|__| |__| (____ /__| (____ /\___ /|____//____ >
|
||||
// \/ \/ \//_____/ \/
|
||||
// ______________________ ______________________
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
// _________ __ __
|
||||
// / _____// |_____________ _/ |______ ____ __ __ ______
|
||||
// \_____ \\ __\_ __ \__ \\ __\__ \ / ___\| | \/ ___/
|
||||
// / \| | | | \// __ \| | / __ \_/ /_/ > | /\___ \
|
||||
// / \| | | | \// __ \| | / __ \_/ /_/ > | /\___ |
|
||||
// /_______ /|__| |__| (____ /__| (____ /\___ /|____//____ >
|
||||
// \/ \/ \//_____/ \/
|
||||
// ______________________ ______________________
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
// _________ __ __
|
||||
// / _____// |_____________ _/ |______ ____ __ __ ______
|
||||
// \_____ \\ __\_ __ \__ \\ __\__ \ / ___\| | \/ ___/
|
||||
// / \| | | | \// __ \| | / __ \_/ /_/ > | /\___ \
|
||||
// / \| | | | \// __ \| | / __ \_/ /_/ > | /\___ |
|
||||
// /_______ /|__| |__| (____ /__| (____ /\___ /|____//____ >
|
||||
// \/ \/ \//_____/ \/
|
||||
// ______________________ ______________________
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
// _________ __ __
|
||||
// / _____// |_____________ _/ |______ ____ __ __ ______
|
||||
// \_____ \\ __\_ __ \__ \\ __\__ \ / ___\| | \/ ___/
|
||||
// / \| | | | \// __ \| | / __ \_/ /_/ > | /\___ \
|
||||
// / \| | | | \// __ \| | / __ \_/ /_/ > | /\___ |
|
||||
// /_______ /|__| |__| (____ /__| (____ /\___ /|____//____ >
|
||||
// \/ \/ \//_____/ \/
|
||||
// ______________________ ______________________
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
// _________ __ __
|
||||
// / _____// |_____________ _/ |______ ____ __ __ ______
|
||||
// \_____ \\ __\_ __ \__ \\ __\__ \ / ___\| | \/ ___/
|
||||
// / \| | | | \// __ \| | / __ \_/ /_/ > | /\___ \
|
||||
// / \| | | | \// __ \| | / __ \_/ /_/ > | /\___ |
|
||||
// /_______ /|__| |__| (____ /__| (____ /\___ /|____//____ >
|
||||
// \/ \/ \//_____/ \/
|
||||
// ______________________ ______________________
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
// _________ __ __
|
||||
// / _____// |_____________ _/ |______ ____ __ __ ______
|
||||
// \_____ \\ __\_ __ \__ \\ __\__ \ / ___\| | \/ ___/
|
||||
// / \| | | | \// __ \| | / __ \_/ /_/ > | /\___ \
|
||||
// / \| | | | \// __ \| | / __ \_/ /_/ > | /\___ |
|
||||
// /_______ /|__| |__| (____ /__| (____ /\___ /|____//____ >
|
||||
// \/ \/ \//_____/ \/
|
||||
// ______________________ ______________________
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
// _________ __ __
|
||||
// / _____// |_____________ _/ |______ ____ __ __ ______
|
||||
// \_____ \\ __\_ __ \__ \\ __\__ \ / ___\| | \/ ___/
|
||||
// / \| | | | \// __ \| | / __ \_/ /_/ > | /\___ \
|
||||
// / \| | | | \// __ \| | / __ \_/ /_/ > | /\___ |
|
||||
// /_______ /|__| |__| (____ /__| (____ /\___ /|____//____ >
|
||||
// \/ \/ \//_____/ \/
|
||||
// ______________________ ______________________
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
// _________ __ __
|
||||
// / _____// |_____________ _/ |______ ____ __ __ ______
|
||||
// \_____ \\ __\_ __ \__ \\ __\__ \ / ___\| | \/ ___/
|
||||
// / \| | | | \// __ \| | / __ \_/ /_/ > | /\___ \
|
||||
// / \| | | | \// __ \| | / __ \_/ /_/ > | /\___ |
|
||||
// /_______ /|__| |__| (____ /__| (____ /\___ /|____//____ >
|
||||
// \/ \/ \//_____/ \/
|
||||
// ______________________ ______________________
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
// _________ __ __
|
||||
// / _____// |_____________ _/ |______ ____ __ __ ______
|
||||
// \_____ \\ __\_ __ \__ \\ __\__ \ / ___\| | \/ ___/
|
||||
// / \| | | | \// __ \| | / __ \_/ /_/ > | /\___ \
|
||||
// / \| | | | \// __ \| | / __ \_/ /_/ > | /\___ |
|
||||
// /_______ /|__| |__| (____ /__| (____ /\___ /|____//____ >
|
||||
// \/ \/ \//_____/ \/
|
||||
// ______________________ ______________________
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
// _________ __ __
|
||||
// / _____// |_____________ _/ |______ ____ __ __ ______
|
||||
// \_____ \\ __\_ __ \__ \\ __\__ \ / ___\| | \/ ___/
|
||||
// / \| | | | \// __ \| | / __ \_/ /_/ > | /\___ \
|
||||
// / \| | | | \// __ \| | / __ \_/ /_/ > | /\___ |
|
||||
// /_______ /|__| |__| (____ /__| (____ /\___ /|____//____ >
|
||||
// \/ \/ \//_____/ \/
|
||||
// ______________________ ______________________
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
// _________ __ __
|
||||
// / _____// |_____________ _/ |______ ____ __ __ ______
|
||||
// \_____ \\ __\_ __ \__ \\ __\__ \ / ___\| | \/ ___/
|
||||
// / \| | | | \// __ \| | / __ \_/ /_/ > | /\___ \
|
||||
// / \| | | | \// __ \| | / __ \_/ /_/ > | /\___ |
|
||||
// /_______ /|__| |__| (____ /__| (____ /\___ /|____//____ >
|
||||
// \/ \/ \//_____/ \/
|
||||
// ______________________ ______________________
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
// _________ __ __
|
||||
// / _____// |_____________ _/ |______ ____ __ __ ______
|
||||
// \_____ \\ __\_ __ \__ \\ __\__ \ / ___\| | \/ ___/
|
||||
// / \| | | | \// __ \| | / __ \_/ /_/ > | /\___ \
|
||||
// / \| | | | \// __ \| | / __ \_/ /_/ > | /\___ |
|
||||
// /_______ /|__| |__| (____ /__| (____ /\___ /|____//____ >
|
||||
// \/ \/ \//_____/ \/
|
||||
// ______________________ ______________________
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
// _________ __ __
|
||||
// / _____// |_____________ _/ |______ ____ __ __ ______
|
||||
// \_____ \\ __\_ __ \__ \\ __\__ \ / ___\| | \/ ___/
|
||||
// / \| | | | \// __ \| | / __ \_/ /_/ > | /\___ \
|
||||
// / \| | | | \// __ \| | / __ \_/ /_/ > | /\___ |
|
||||
// /_______ /|__| |__| (____ /__| (____ /\___ /|____//____ >
|
||||
// \/ \/ \//_____/ \/
|
||||
// ______________________ ______________________
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
// _________ __ __
|
||||
// / _____// |_____________ _/ |______ ____ __ __ ______
|
||||
// \_____ \\ __\_ __ \__ \\ __\__ \ / ___\| | \/ ___/
|
||||
// / \| | | | \// __ \| | / __ \_/ /_/ > | /\___ \
|
||||
// / \| | | | \// __ \| | / __ \_/ /_/ > | /\___ |
|
||||
// /_______ /|__| |__| (____ /__| (____ /\___ /|____//____ >
|
||||
// \/ \/ \//_____/ \/
|
||||
// ______________________ ______________________
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
// _________ __ __
|
||||
// / _____// |_____________ _/ |______ ____ __ __ ______
|
||||
// \_____ \\ __\_ __ \__ \\ __\__ \ / ___\| | \/ ___/
|
||||
// / \| | | | \// __ \| | / __ \_/ /_/ > | /\___ \
|
||||
// / \| | | | \// __ \| | / __ \_/ /_/ > | /\___ |
|
||||
// /_______ /|__| |__| (____ /__| (____ /\___ /|____//____ >
|
||||
// \/ \/ \//_____/ \/
|
||||
// ______________________ ______________________
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
// _________ __ __
|
||||
// / _____// |_____________ _/ |______ ____ __ __ ______
|
||||
// \_____ \\ __\_ __ \__ \\ __\__ \ / ___\| | \/ ___/
|
||||
// / \| | | | \// __ \| | / __ \_/ /_/ > | /\___ \
|
||||
// / \| | | | \// __ \| | / __ \_/ /_/ > | /\___ |
|
||||
// /_______ /|__| |__| (____ /__| (____ /\___ /|____//____ >
|
||||
// \/ \/ \//_____/ \/
|
||||
// ______________________ ______________________
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
// _________ __ __
|
||||
// / _____// |_____________ _/ |______ ____ __ __ ______
|
||||
// \_____ \\ __\_ __ \__ \\ __\__ \ / ___\| | \/ ___/
|
||||
// / \| | | | \// __ \| | / __ \_/ /_/ > | /\___ \
|
||||
// / \| | | | \// __ \| | / __ \_/ /_/ > | /\___ |
|
||||
// /_______ /|__| |__| (____ /__| (____ /\___ /|____//____ >
|
||||
// \/ \/ \//_____/ \/
|
||||
// ______________________ ______________________
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
// _________ __ __
|
||||
// / _____// |_____________ _/ |______ ____ __ __ ______
|
||||
// \_____ \\ __\_ __ \__ \\ __\__ \ / ___\| | \/ ___/
|
||||
// / \| | | | \// __ \| | / __ \_/ /_/ > | /\___ \
|
||||
// / \| | | | \// __ \| | / __ \_/ /_/ > | /\___ |
|
||||
// /_______ /|__| |__| (____ /__| (____ /\___ /|____//____ >
|
||||
// \/ \/ \//_____/ \/
|
||||
// ______________________ ______________________
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
// _________ __ __
|
||||
// / _____// |_____________ _/ |______ ____ __ __ ______
|
||||
// \_____ \\ __\_ __ \__ \\ __\__ \ / ___\| | \/ ___/
|
||||
// / \| | | | \// __ \| | / __ \_/ /_/ > | /\___ \
|
||||
// / \| | | | \// __ \| | / __ \_/ /_/ > | /\___ |
|
||||
// /_______ /|__| |__| (____ /__| (____ /\___ /|____//____ >
|
||||
// \/ \/ \//_____/ \/
|
||||
// ______________________ ______________________
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
// _________ __ __
|
||||
// / _____// |_____________ _/ |______ ____ __ __ ______
|
||||
// \_____ \\ __\_ __ \__ \\ __\__ \ / ___\| | \/ ___/
|
||||
// / \| | | | \// __ \| | / __ \_/ /_/ > | /\___ \
|
||||
// / \| | | | \// __ \| | / __ \_/ /_/ > | /\___ |
|
||||
// /_______ /|__| |__| (____ /__| (____ /\___ /|____//____ >
|
||||
// \/ \/ \//_____/ \/
|
||||
// ______________________ ______________________
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
// _________ __ __
|
||||
// / _____// |_____________ _/ |______ ____ __ __ ______
|
||||
// \_____ \\ __\_ __ \__ \\ __\__ \ / ___\| | \/ ___/
|
||||
// / \| | | | \// __ \| | / __ \_/ /_/ > | /\___ \
|
||||
// / \| | | | \// __ \| | / __ \_/ /_/ > | /\___ |
|
||||
// /_______ /|__| |__| (____ /__| (____ /\___ /|____//____ >
|
||||
// \/ \/ \//_____/ \/
|
||||
// ______________________ ______________________
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
// _________ __ __
|
||||
// / _____// |_____________ _/ |______ ____ __ __ ______
|
||||
// \_____ \\ __\_ __ \__ \\ __\__ \ / ___\| | \/ ___/
|
||||
// / \| | | | \// __ \| | / __ \_/ /_/ > | /\___ \
|
||||
// / \| | | | \// __ \| | / __ \_/ /_/ > | /\___ |
|
||||
// /_______ /|__| |__| (____ /__| (____ /\___ /|____//____ >
|
||||
// \/ \/ \//_____/ \/
|
||||
// ______________________ ______________________
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
// _________ __ __
|
||||
// / _____// |_____________ _/ |______ ____ __ __ ______
|
||||
// \_____ \\ __\_ __ \__ \\ __\__ \ / ___\| | \/ ___/
|
||||
// / \| | | | \// __ \| | / __ \_/ /_/ > | /\___ \
|
||||
// / \| | | | \// __ \| | / __ \_/ /_/ > | /\___ |
|
||||
// /_______ /|__| |__| (____ /__| (____ /\___ /|____//____ >
|
||||
// \/ \/ \//_____/ \/
|
||||
// ______________________ ______________________
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
// _________ __ __
|
||||
// / _____// |_____________ _/ |______ ____ __ __ ______
|
||||
// \_____ \\ __\_ __ \__ \\ __\__ \ / ___\| | \/ ___/
|
||||
// / \| | | | \// __ \| | / __ \_/ /_/ > | /\___ \
|
||||
// / \| | | | \// __ \| | / __ \_/ /_/ > | /\___ |
|
||||
// /_______ /|__| |__| (____ /__| (____ /\___ /|____//____ >
|
||||
// \/ \/ \//_____/ \/
|
||||
// ______________________ ______________________
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
// _________ __ __
|
||||
// / _____// |_____________ _/ |______ ____ __ __ ______
|
||||
// \_____ \\ __\_ __ \__ \\ __\__ \ / ___\| | \/ ___/
|
||||
// / \| | | | \// __ \| | / __ \_/ /_/ > | /\___ \
|
||||
// / \| | | | \// __ \| | / __ \_/ /_/ > | /\___ |
|
||||
// /_______ /|__| |__| (____ /__| (____ /\___ /|____//____ >
|
||||
// \/ \/ \//_____/ \/
|
||||
// ______________________ ______________________
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
// _________ __ __
|
||||
// / _____// |_____________ _/ |______ ____ __ __ ______
|
||||
// \_____ \\ __\_ __ \__ \\ __\__ \ / ___\| | \/ ___/
|
||||
// / \| | | | \// __ \| | / __ \_/ /_/ > | /\___ \
|
||||
// / \| | | | \// __ \| | / __ \_/ /_/ > | /\___ |
|
||||
// /_______ /|__| |__| (____ /__| (____ /\___ /|____//____ >
|
||||
// \/ \/ \//_____/ \/
|
||||
// ______________________ ______________________
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
// _________ __ __
|
||||
// / _____// |_____________ _/ |______ ____ __ __ ______
|
||||
// \_____ \\ __\_ __ \__ \\ __\__ \ / ___\| | \/ ___/
|
||||
// / \| | | | \// __ \| | / __ \_/ /_/ > | /\___ \
|
||||
// / \| | | | \// __ \| | / __ \_/ /_/ > | /\___ |
|
||||
// /_______ /|__| |__| (____ /__| (____ /\___ /|____//____ >
|
||||
// \/ \/ \//_____/ \/
|
||||
// ______________________ ______________________
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
// _________ __ __
|
||||
// / _____// |_____________ _/ |______ ____ __ __ ______
|
||||
// \_____ \\ __\_ __ \__ \\ __\__ \ / ___\| | \/ ___/
|
||||
// / \| | | | \// __ \| | / __ \_/ /_/ > | /\___ \
|
||||
// / \| | | | \// __ \| | / __ \_/ /_/ > | /\___ |
|
||||
// /_______ /|__| |__| (____ /__| (____ /\___ /|____//____ >
|
||||
// \/ \/ \//_____/ \/
|
||||
// ______________________ ______________________
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
// _________ __ __
|
||||
// / _____// |_____________ _/ |______ ____ __ __ ______
|
||||
// \_____ \\ __\_ __ \__ \\ __\__ \ / ___\| | \/ ___/
|
||||
// / \| | | | \// __ \| | / __ \_/ /_/ > | /\___ \
|
||||
// / \| | | | \// __ \| | / __ \_/ /_/ > | /\___ |
|
||||
// /_______ /|__| |__| (____ /__| (____ /\___ /|____//____ >
|
||||
// \/ \/ \//_____/ \/
|
||||
// ______________________ ______________________
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
// _________ __ __
|
||||
// / _____// |_____________ _/ |______ ____ __ __ ______
|
||||
// \_____ \\ __\_ __ \__ \\ __\__ \ / ___\| | \/ ___/
|
||||
// / \| | | | \// __ \| | / __ \_/ /_/ > | /\___ \
|
||||
// / \| | | | \// __ \| | / __ \_/ /_/ > | /\___ |
|
||||
// /_______ /|__| |__| (____ /__| (____ /\___ /|____//____ >
|
||||
// \/ \/ \//_____/ \/
|
||||
// ______________________ ______________________
|
||||
|
@ -87,10 +87,33 @@
|
|||
**
|
||||
** A generic link pointer. This member is currently used, if an
|
||||
** unit is on the map, to link all units on the same map field
|
||||
** together. This member points the the unit that the current
|
||||
** is onboard/inside when a unit is removed (see Unit::Removed).
|
||||
** F.E.: A worker is removed, if he is in a mine or depot.
|
||||
** Or an unit is on board a transporter.
|
||||
** together. This also links corpses and stuff. Also, this is
|
||||
** used in memory management to link unused units.
|
||||
**
|
||||
** Unit::Container
|
||||
**
|
||||
** Pointer to the unit containing it, or NoUnitP if the unit is
|
||||
** free. This points to the transporter for units on board, or to
|
||||
** the building for peasants inside(when they are mining).
|
||||
**
|
||||
** Unit::UnitInside
|
||||
**
|
||||
** Pointer to the last unit added inside. Order doesn't really
|
||||
** matter. All units inside are kept in a circular linked list.
|
||||
** This is NoUnitP if there are no units inside. Multiple levels
|
||||
** of inclusion are allowed, though not very usefull right now
|
||||
**
|
||||
** Unit::NextContained, Unit::PrevContained
|
||||
**
|
||||
** The next and previous element in the curent container. Bogus
|
||||
** values allowed for units not contained.
|
||||
**
|
||||
** Unit::InsideCount
|
||||
**
|
||||
** The number of units inside the container. This used to be
|
||||
** Value for transporters, but since gold mines also use this
|
||||
** field, it has changed to InsideCount, to allow counting
|
||||
** units inside a gold mine.)
|
||||
**
|
||||
** Unit::Name
|
||||
**
|
||||
|
@ -137,7 +160,7 @@
|
|||
**
|
||||
** Player colors of the unit. Contains the hardware dependent
|
||||
** pixel values for the player colors (palette index #208-#211).
|
||||
** Setup from the global palette.
|
||||
** Setup from the global palette. This is a pointer.
|
||||
** @note Index #208-#211 are various SHADES of the team color
|
||||
** (#208 is brightest shade, #211 is darkest shade) .... these
|
||||
** numbers are NOT red=#208, blue=#209, etc
|
||||
|
@ -286,8 +309,10 @@
|
|||
** Unit::Moving
|
||||
**
|
||||
**
|
||||
** Unit::Rs
|
||||
** Unit::RescuedFrom
|
||||
**
|
||||
** Pointer to the original owner of an unit. It will be NULL if
|
||||
** the unit was not rescued.
|
||||
**
|
||||
** Unit::Revealer
|
||||
**
|
||||
|
@ -480,7 +505,14 @@ struct _unit_ {
|
|||
int Slot; /// Assigned slot number
|
||||
Unit** UnitSlot; /// Slot pointer of Units
|
||||
Unit** PlayerSlot; /// Slot pointer of Player->Units
|
||||
Unit* Next; /// Generic link pointer (on map)
|
||||
|
||||
Unit* Next; /// Generic link pointer (on map)
|
||||
|
||||
unsigned InsideCount; /// Number of units inside.
|
||||
Unit* UnitInside; /// Pointer to one of the units inside.
|
||||
Unit* Container; /// Pointer to the unit containing it (or 0)
|
||||
Unit* NextContained; /// Next unit in the container.
|
||||
Unit* PrevContained; /// Previous unit in the container.
|
||||
|
||||
char* Name; /// Unit own name
|
||||
|
||||
|
@ -494,7 +526,7 @@ struct _unit_ {
|
|||
int CurrentSightRange; /// Unit's Current Sight Range
|
||||
|
||||
// DISPLAY:
|
||||
UnitColors Colors; /// Player colors
|
||||
UnitColors* Colors; /// Player colors
|
||||
signed char IX; /// X image displacement to map position
|
||||
signed char IY; /// Y image displacement to map position
|
||||
int Frame; /// Image frame: <0 is mirrored
|
||||
|
@ -517,8 +549,8 @@ struct _unit_ {
|
|||
unsigned SeenState : 3; /// Unit seen build/upgrade state
|
||||
unsigned SeenDestroyed : 1; /// Unit seen destroyed or not
|
||||
unsigned Active : 1; /// Unit is active for AI
|
||||
unsigned Rescued : 1; /// Unit is rescued
|
||||
Player* RescuedFrom; /// The original owner of a rescued unit.
|
||||
/// NULL if the unit was not rescued.
|
||||
|
||||
#define MaxMana 255 /// maximal mana for units
|
||||
unsigned Mana : 8; /// mana points
|
||||
|
@ -553,9 +585,11 @@ struct _unit_ {
|
|||
unsigned Rs : 8;
|
||||
unsigned Revealer : 1; /// reveal the fog of war
|
||||
|
||||
#if 0
|
||||
#define MAX_UNITS_ONBOARD 6 /// max number of units in transporter
|
||||
// FIXME: use the new next pointer
|
||||
Unit* OnBoard[MAX_UNITS_ONBOARD]; /// Units in transporter
|
||||
#endif
|
||||
|
||||
#define MAX_ORDERS 16 /// How many outstanding orders?
|
||||
char OrderCount; /// how many orders in queue
|
||||
|
@ -737,6 +771,10 @@ extern Unit* MakeUnit(UnitType* type,Player* player);
|
|||
extern void PlaceUnit(Unit* unit,int x,int y);
|
||||
/// Create a new unit and place on map
|
||||
extern Unit* MakeUnitAndPlace(int x,int y,UnitType* type,Player* player);
|
||||
/// Add an unit inside a container. Only deal with list stuff.
|
||||
extern void AddUnitInContainer(Unit* unit, Unit* host);
|
||||
/// Remove an unit from inside a container. Only deals with list stuff.
|
||||
extern void RemoveUnitFromContainer(Unit* unit);
|
||||
/// Remove unit from map/groups/...
|
||||
extern void RemoveUnit(Unit* unit, Unit* host);
|
||||
/// Handle the loose of an unit (food,...)
|
||||
|
@ -802,20 +840,16 @@ extern int CanBuildOn(int x,int y,int mask);
|
|||
/// FIXME: more docu
|
||||
extern int CanBuildUnitType(const Unit* unit,const UnitType* type,int x,int y);
|
||||
|
||||
/// Find nearest gold mine
|
||||
extern Unit* FindGoldMine(const Unit*,int,int);
|
||||
/// Find nearest gold deposit
|
||||
extern Unit* FindGoldDeposit(const Unit*,int,int);
|
||||
/// Find nearest wood deposit
|
||||
extern Unit* FindWoodDeposit(const Player* player,int x,int y);
|
||||
/// Find nearest oil deposit
|
||||
extern Unit* FindOilDeposit(const Unit*,int x,int y);
|
||||
/// Find nearest deposit
|
||||
extern Unit* FindDeposit(const Player*,int x,int y,int resource);
|
||||
/// Find the next idle worker
|
||||
extern Unit* FindIdleWorker(const Player* player,const Unit* last);
|
||||
|
||||
/// Find the nearest piece of wood in sight range
|
||||
extern int FindWoodInSight(const Unit* unit,int* x,int* y);
|
||||
/// FIXME: more docu
|
||||
/// Find gold mine
|
||||
extern Unit* FindGoldMine(const Unit* unit,int x,int y);
|
||||
/// Find oil platform
|
||||
extern Unit* FindOilPlatform(const Player* player,int x,int y);
|
||||
|
||||
/// FIXME: more docu
|
||||
|
@ -938,7 +972,6 @@ extern int FindAndSortUnits(const Viewport* vp, Unit** table);
|
|||
extern int SelectUnits(int x1,int y1,int x2,int y2,Unit** table);
|
||||
/// Select units on map tile
|
||||
extern int SelectUnitsOnTile(int x,int y,Unit** table);
|
||||
|
||||
/// Find all units of this type
|
||||
extern int FindUnitsByType(const UnitType* type,Unit** table);
|
||||
/// Find all units of this type of the player
|
||||
|
@ -962,16 +995,12 @@ extern Unit* TransporterOnScreenMapPosition (int , int );
|
|||
|
||||
/// Return gold mine, if on map tile
|
||||
extern Unit* GoldMineOnMap(int tx,int ty);
|
||||
/// Return gold deposit, if on map tile
|
||||
extern Unit* GoldDepositOnMap(int tx,int ty);
|
||||
/// Return oil patch, if on map tile
|
||||
extern Unit* OilPatchOnMap(int tx,int ty);
|
||||
/// Return oil platform, if on map tile
|
||||
extern Unit* PlatformOnMap(int tx,int ty);
|
||||
/// Return oil deposit, if on map tile
|
||||
extern Unit* OilDepositOnMap(int tx,int ty);
|
||||
/// Return wood deposit, if on map tile
|
||||
extern Unit* WoodDepositOnMap(int tx,int ty);
|
||||
/// Return resource deposit, if on map tile
|
||||
extern Unit* ResourceDepositOnMap(int tx,int ty,int resource);
|
||||
|
||||
/// Find best enemy in numeric range to attack
|
||||
extern Unit* AttackUnitsInDistance(Unit* unit,int range);
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
// _________ __ __
|
||||
// / _____// |_____________ _/ |______ ____ __ __ ______
|
||||
// \_____ \\ __\_ __ \__ \\ __\__ \ / ___\| | \/ ___/
|
||||
// / \| | | | \// __ \| | / __ \_/ /_/ > | /\___ \
|
||||
// / \| | | | \// __ \| | / __ \_/ /_/ > | /\___ |
|
||||
// /_______ /|__| |__| (____ /__| (____ /\___ /|____//____ >
|
||||
// \/ \/ \//_____/ \/
|
||||
// ______________________ ______________________
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
// _________ __ __
|
||||
// / _____// |_____________ _/ |______ ____ __ __ ______
|
||||
// \_____ \\ __\_ __ \__ \\ __\__ \ / ___\| | \/ ___/
|
||||
// / \| | | | \// __ \| | / __ \_/ /_/ > | /\___ \
|
||||
// / \| | | | \// __ \| | / __ \_/ /_/ > | /\___ |
|
||||
// /_______ /|__| |__| (____ /__| (____ /\___ /|____//____ >
|
||||
// \/ \/ \//_____/ \/
|
||||
// ______________________ ______________________
|
||||
|
@ -298,6 +298,10 @@
|
|||
**
|
||||
** Can transport units
|
||||
**
|
||||
** UnitType::MaxOnBoard
|
||||
**
|
||||
** Maximum units on board (for transporters)
|
||||
**
|
||||
** UnitType::GivesOil
|
||||
**
|
||||
** We get here oil
|
||||
|
@ -585,20 +589,22 @@ struct _unit_type_ {
|
|||
unsigned CowerWorker : 1; /// Is a worker, runs away if attcked
|
||||
unsigned Tanker : 1; /// FIXME: used? Can transport oil
|
||||
unsigned Transporter : 1; /// Can transport units
|
||||
unsigned MaxOnBoard; /// Number of Transporter slots.
|
||||
unsigned GivesOil : 1; /// We get here oil
|
||||
/* unsigned StoresWood : 1; /// We can store wood here
|
||||
unsigned StoresGold : 1; /// We can store oil/gold/wood here
|
||||
unsigned StoresOil : 1; /// We can store oil here*/
|
||||
unsigned Stores[MaxCosts]; /// Resources that we can store here.
|
||||
unsigned Vanishes : 1; /// Corpes & destroyed places
|
||||
unsigned GroundAttack : 1; /// Can do command ground attack
|
||||
unsigned IsUndead : 1; /// Unit is already dead
|
||||
unsigned ShoreBuilding : 1; /// Building must be build on coast
|
||||
unsigned CanCastSpell : 1; /// Unit is able to use spells
|
||||
unsigned StoresWood : 1; /// We can store wood here
|
||||
unsigned CanAttack : 1; /// Unit can attack
|
||||
unsigned Tower : 1; /// Unit can attack, but not move
|
||||
unsigned OilPatch : 1; /// Platform can be build here
|
||||
unsigned GoldMine : 1; /// Gold can be collected here
|
||||
unsigned Hero : 1; /// Is hero only used for triggers
|
||||
unsigned StoresOil : 1; /// We can store oil here
|
||||
unsigned Volatile : 1; /// Invisiblity/unholy armor kills unit
|
||||
unsigned CowerMage : 1; /// FIXME: docu
|
||||
unsigned Organic : 1; /// Organic can be healed
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
// _________ __ __
|
||||
// / _____// |_____________ _/ |______ ____ __ __ ______
|
||||
// \_____ \\ __\_ __ \__ \\ __\__ \ / ___\| | \/ ___/
|
||||
// / \| | | | \// __ \| | / __ \_/ /_/ > | /\___ \
|
||||
// / \| | | | \// __ \| | / __ \_/ /_/ > | /\___ |
|
||||
// /_______ /|__| |__| (____ /__| (____ /\___ /|____//____ >
|
||||
// \/ \/ \//_____/ \/
|
||||
// ______________________ ______________________
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
// _________ __ __
|
||||
// / _____// |_____________ _/ |______ ____ __ __ ______
|
||||
// \_____ \\ __\_ __ \__ \\ __\__ \ / ___\| | \/ ___/
|
||||
// / \| | | | \// __ \| | / __ \_/ /_/ > | /\___ \
|
||||
// / \| | | | \// __ \| | / __ \_/ /_/ > | /\___ |
|
||||
// /_______ /|__| |__| (____ /__| (____ /\___ /|____//____ >
|
||||
// \/ \/ \//_____/ \/
|
||||
// ______________________ ______________________
|
||||
|
@ -48,7 +48,6 @@
|
|||
-- Declarations
|
||||
----------------------------------------------------------------------------*/
|
||||
|
||||
|
||||
/**
|
||||
** Indices into costs/resource/income array. (A litte future here :)
|
||||
*/
|
||||
|
@ -65,7 +64,7 @@ enum _costs_ {
|
|||
CoalCost, /// coal resource
|
||||
|
||||
MaxCosts /// how many different costs
|
||||
};
|
||||
} CostType;
|
||||
|
||||
#define FoodCost MaxCosts
|
||||
#define ScoreCost MaxCosts+1
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
// _________ __ __
|
||||
// / _____// |_____________ _/ |______ ____ __ __ ______
|
||||
// \_____ \\ __\_ __ \__ \\ __\__ \ / ___\| | \/ ___/
|
||||
// / \| | | | \// __ \| | / __ \_/ /_/ > | /\___ \
|
||||
// / \| | | | \// __ \| | / __ \_/ /_/ > | /\___ |
|
||||
// /_______ /|__| |__| (____ /__| (____ /\___ /|____//____ >
|
||||
// \/ \/ \//_____/ \/
|
||||
// ______________________ ______________________
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
// _________ __ __
|
||||
// / _____// |_____________ _/ |______ ____ __ __ ______
|
||||
// \_____ \\ __\_ __ \__ \\ __\__ \ / ___\| | \/ ___/
|
||||
// / \| | | | \// __ \| | / __ \_/ /_/ > | /\___ \
|
||||
// / \| | | | \// __ \| | / __ \_/ /_/ > | /\___ |
|
||||
// /_______ /|__| |__| (____ /__| (____ /\___ /|____//____ >
|
||||
// \/ \/ \//_____/ \/
|
||||
// ______________________ ______________________
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
// _________ __ __
|
||||
// / _____// |_____________ _/ |______ ____ __ __ ______
|
||||
// \_____ \\ __\_ __ \__ \\ __\__ \ / ___\| | \/ ___/
|
||||
// / \| | | | \// __ \| | / __ \_/ /_/ > | /\___ \
|
||||
// / \| | | | \// __ \| | / __ \_/ /_/ > | /\___ |
|
||||
// /_______ /|__| |__| (____ /__| (____ /\___ /|____//____ >
|
||||
// \/ \/ \//_____/ \/
|
||||
// ______________________ ______________________
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
// _________ __ __
|
||||
// / _____// |_____________ _/ |______ ____ __ __ ______
|
||||
// \_____ \\ __\_ __ \__ \\ __\__ \ / ___\| | \/ ___/
|
||||
// / \| | | | \// __ \| | / __ \_/ /_/ > | /\___ \
|
||||
// / \| | | | \// __ \| | / __ \_/ /_/ > | /\___ |
|
||||
// /_______ /|__| |__| (____ /__| (____ /\___ /|____//____ >
|
||||
// \/ \/ \//_____/ \/
|
||||
// ______________________ ______________________
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
// _________ __ __
|
||||
// / _____// |_____________ _/ |______ ____ __ __ ______
|
||||
// \_____ \\ __\_ __ \__ \\ __\__ \ / ___\| | \/ ___/
|
||||
// / \| | | | \// __ \| | / __ \_/ /_/ > | /\___ \
|
||||
// / \| | | | \// __ \| | / __ \_/ /_/ > | /\___ |
|
||||
// /_______ /|__| |__| (____ /__| (____ /\___ /|____//____ >
|
||||
// \/ \/ \//_____/ \/
|
||||
// ______________________ ______________________
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
// _________ __ __
|
||||
// / _____// |_____________ _/ |______ ____ __ __ ______
|
||||
// \_____ \\ __\_ __ \__ \\ __\__ \ / ___\| | \/ ___/
|
||||
// / \| | | | \// __ \| | / __ \_/ /_/ > | /\___ \
|
||||
// / \| | | | \// __ \| | / __ \_/ /_/ > | /\___ |
|
||||
// /_______ /|__| |__| (____ /__| (____ /\___ /|____//____ >
|
||||
// \/ \/ \//_____/ \/
|
||||
// ______________________ ______________________
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
// _________ __ __
|
||||
// / _____// |_____________ _/ |______ ____ __ __ ______
|
||||
// \_____ \\ __\_ __ \__ \\ __\__ \ / ___\| | \/ ___/
|
||||
// / \| | | | \// __ \| | / __ \_/ /_/ > | /\___ \
|
||||
// / \| | | | \// __ \| | / __ \_/ /_/ > | /\___ |
|
||||
// /_______ /|__| |__| (____ /__| (____ /\___ /|____//____ >
|
||||
// \/ \/ \//_____/ \/
|
||||
// ______________________ ______________________
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
// _________ __ __
|
||||
// / _____// |_____________ _/ |______ ____ __ __ ______
|
||||
// \_____ \\ __\_ __ \__ \\ __\__ \ / ___\| | \/ ___/
|
||||
// / \| | | | \// __ \| | / __ \_/ /_/ > | /\___ \
|
||||
// / \| | | | \// __ \| | / __ \_/ /_/ > | /\___ |
|
||||
// /_______ /|__| |__| (____ /__| (____ /\___ /|____//____ >
|
||||
// \/ \/ \//_____/ \/
|
||||
// ______________________ ______________________
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
// _________ __ __
|
||||
// / _____// |_____________ _/ |______ ____ __ __ ______
|
||||
// \_____ \\ __\_ __ \__ \\ __\__ \ / ___\| | \/ ___/
|
||||
// / \| | | | \// __ \| | / __ \_/ /_/ > | /\___ \
|
||||
// / \| | | | \// __ \| | / __ \_/ /_/ > | /\___ |
|
||||
// /_______ /|__| |__| (____ /__| (____ /\___ /|____//____ >
|
||||
// \/ \/ \//_____/ \/
|
||||
// ______________________ ______________________
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
// _________ __ __
|
||||
// / _____// |_____________ _/ |______ ____ __ __ ______
|
||||
// \_____ \\ __\_ __ \__ \\ __\__ \ / ___\| | \/ ___/
|
||||
// / \| | | | \// __ \| | / __ \_/ /_/ > | /\___ \
|
||||
// / \| | | | \// __ \| | / __ \_/ /_/ > | /\___ |
|
||||
// /_______ /|__| |__| (____ /__| (____ /\___ /|____//____ >
|
||||
// \/ \/ \//_____/ \/
|
||||
// ______________________ ______________________
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
// _________ __ __
|
||||
// / _____// |_____________ _/ |______ ____ __ __ ______
|
||||
// \_____ \\ __\_ __ \__ \\ __\__ \ / ___\| | \/ ___/
|
||||
// / \| | | | \// __ \| | / __ \_/ /_/ > | /\___ \
|
||||
// / \| | | | \// __ \| | / __ \_/ /_/ > | /\___ |
|
||||
// /_______ /|__| |__| (____ /__| (____ /\___ /|____//____ >
|
||||
// \/ \/ \//_____/ \/
|
||||
// ______________________ ______________________
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Reference in a new issue