Update log in English (revisions 13 - 199)

SidleJinks picture SidleJinks on Thu 09 Sep, 2010 22:37:35 +0000

Rev.199
http://xp-dev.com/sc/change/94227/199
Updated libraries for scripts compilation.

Rev.198
http://xp-dev.com/sc/change/94227/198
Mistake in tanker captain’s dialog which caused impossibility of finishing “Lost punks” quest was fixed.
Mistake in determination of quest caravan’s path was fixed.
AHS-7 dialogue was fixed, killed children counter now works correctly.

Rev.197
http://xp-dev.com/sc/change/94227/197
Fixes connected with server crashing/hanging because of the last updates.
Mechanics of moving on the global map was fixed – normal vehicles tear and wear, fuel consumption, moving leaps and notification of breakdown were fixed.

Rev.196
http://xp-dev.com/sc/change/94227/196
Outdated parts of the global map’s mechanism were deleted on the client’s side.

Rev.195
http://xp-dev.com/sc/change/94227/195
Some fixes of hangings on connection to server.
Mechanism for operating with graphic images on server’s side was added. It is necessary for convenient operating with data arrays which are presented as a picture. At the present time this is used for determining the landscape when moving on the global map.
For operating with the mechanism the next functions were added:
bool LoadImage(uint index, string@+ imageName, uint imageDepth, int pathType) – image loading;
uint GetImageColor(uint index, uint x, uint y) – identifying pixel’s color;
uint index – image’s number, which is currently operated, for the list see Game images in _defines.fos;
string@+ imageName – file’s name, the only format is PNG, if null – the current image is deleted;
uint imageDepth – depth of the image which is being created, 4 – ARGB, 3 – RGB, 2 – GB, 1 – B. It is needed for optimization operations with memory to give no memory which is not used (you can see the amount of given memory for the images in server’s window Memory -> Images);
int pathType – pat type (see Paths in _defines.fos);
uint x, y – pixel’s coordinates.
Look for examples in functions void WorldmapInit(), uint GetGlobalMapRelief(uint x, uint y) скрипта worldmap.fos.
All calculations connected with the global map are performed now only on the server’s side without duplication on the client’s side.
Reserved functions global_process, global_invite were moved from main.fos to new script global_group.fos.
Specification of reserved function global_process was changed and appropriately client’s processor CRITTER_EVENT_GLOBAL_PROCESS – current, destination coordinate types and speed were changed from integer to real number.
global_process call with parameter
#define GLOBAL_PROCESS_KICK (7)
was added. It determines whether group leader or player himself wants to leave the group.
The next functions were added for operating with locations on the global map: uint GetVisibleLocations(uint16 worldX, uint16 worldY, uint radius, Critter@+ visibleBy, Location@[]+ locations) – it returns visible locations in certain radius. If parameter visibleBy is set, then the critter’s ability to see the location will be taken into account.; uint GetZoneLocationIds(uint16 zoneX, uint16 zoneY, uint zoneRadius, uint[]+ locationIds) – it returns locations identificators which belong to the certain areas.
__GmapGroupX/Y -> __GmapGroupCurX/Y, __GmapMoveX/Y -> __GmapGroupToX/Y;
Удалены float __GmapSpeedX/Y were renamed;
Universal speed parameter float __GmapGroupSpeed was added.
Global variable uint __EncounterTime = 5000 was moved from the engine to scripts.
Global variable which defines the frequency of calling global map’s processor GLOBAL_PROCESS_MOVE was added to the engine.

Rev.194
http://www2.xp-dev.com/sc/change/94227/194
Variable __MaxLifeLevelSoftCap was added, it determines hitpoints rise per level. If it is equal to 0, then there’re no limitations, otherwise when character gets level = __MaxLifeLevelSoftCap, he won’t get more hitpoints per level . (For TLA __MaxLifeLevelSoftCap = 36).
Dialogue with pay off Redding caravan fails was fixed.
Chemist dialogue in SF who sells chitin armor was fixed.
Locks for chests on Syd and Nancy’s quest location are generated randomly for each map.
Output of errors to log in hostile_location_quest.fos script was switched off.
Function of determination access rights when passing Redding gates was fixed (previously invalid permissions were accumulating in persons who have access list).
Quest “Drill” script was fixed, now excess records in AnyData are deleted correctly after passing or failing the quest.
Item “Chitin armor recipe” was restored, it was deleted by mistake.

Rev.193
http://www2.xp-dev.com/sc/change/94227/193
Russian text output into log was fixed.
Error appearing on starting single mode with enabled server GUI was fixed.
One more fix of client-server network interaction (attempt of fixing hangings while downloading chache).

Rev.192
http://www2.xp-dev.com/sc/change/94227/192
Bug with visualisation of other playing movement was fixed. It appeared in 161 revision.

Rev.191
http://www2.xp-dev.com/sc/change/94227/191
Operation with network interaction was optimized, the processor will be loaded less when sending large volumes of information (e.g. cache transmitting).
Models, which are situated in separate folders, loading was fixed (slashes are replaces by dots).

Rev.190
http://www2.xp-dev.com/sc/change/94227/190
Cache loading was fixed.
Cache situation was changed on the client’s side and now a separate folder for cache is created for every server.
DataFiles.cfg situation was fixed.
For critters in Mapper with Cond == 3 (dead) now automatically parameter ST_REPLICATION_TIME is set to -1 (if it is equal to 0) i.e. nonreplicated.
And for Cond == 2 (knockout) big cooldown for getting up is set.
For “dictionary” class was added method
uint keys(string@[]@ keys) const
which returns all the keys and their quantity.
Now it is checked for presence of palette with the same name with the FRM file which is loading. If there isn’t one, then default is used (like now).

Rev.189
http://www2.xp-dev.com/sc/change/94227/189
Extra system for detecting launched client’s windows was added.
Bug with impossibility of reading some files when one copy of client/mapper/server is launched.
Check for ITEM_GAG on detection of finishing REASON_HEX_BUSY_RING plan (when critter is surrounded by impassable objects or critters) was added.
Ground and roof tiles offset was fixed in FOnline geometry.

Rev.188
http://www2.xp-dev.com/sc/change/94227/188
Support of graphic formats MOS and BAM from Ininity Engine (Boldur’s Gate, Icewind Dale, Planescape Torment) was added.
It is possible to define the number of played cycle or frame. To define cycle’s number in file name parameters (“S”) – define its index and to define the frame add dash and frame’s index.
Examples:
fileName$5.bam – load fileName.bam with frames for cycle № 5;
fileName$1-4.bam – load fileName.bam with frame № 4 with cycle № 1;
fileName.bam – load fileName.bam с with frames for cycle № 0.

Rev.187
http://www2.xp-dev.com/sc/change/94227/187
Some actions were performed to fix server’s hanging up.

Rev.186
http://www2.xp-dev.com/sc/change/94227/186
Some actions were performed to fix server’s hanging up.
Not adding function’s name to log was fixed.
Levelcap was removed in the scripts.

Rev.185
http://www2.xp-dev.com/sc/change/94227/185
NO_LOOT and NO_DROP mode were switched off for the giant bugs.

Rev.184
http://www2.xp-dev.com/sc/change/94227/184
In connection with porting the server (*nix and 64bit) the next changes were made:
Operating with net was rebuilded. Libevent library is used.
http://monkey.org/~provos/libevent/
http://en.wikipedia.org/wiki/Libevent
http://ru.wikipedia.org/wiki/Libevent
Operating with GUI was remade. FLTK library is used.
http://fltk.org/
http://en.wikipedia.org/wiki/FLTK
http://ru.wikipedia.org/wiki/FLTK
Operating with threads was remade. Pthreads is used
http://sources.redhat.com/pthreads-win32/ (Windows port)
http://en.wikipedia.org/wiki/Pthreads
http://ru.wikipedia.org/wiki/Pthreads
Changes are serious and can cause unstable work.
Memory leak when loading maps was fixed in server.
Loading maps with items in containers/inventories in mapper was fixed. Don’t use mapper of 171-182 revisions for editing old maps.
Now parameters values for critters in mapper are applies only if they are not equal to zero. Initially value is taken from defaults (from .fopro), then from the map’s data if !=0.
Critter’s names in mapper are now taken only by prototype number without accounting dialogue’s number.
Old specification of Log function which was changed in 174 revision was returned to native scripts.
Server’s GUI now ‘Courier New’ type, option in config was deleted.
Option for changing server’s window size and its elements was added
GUI size modifier
GUISize=0
E.g. if GUISize=-50 then server’s window and all its elements will be 50% smaller, if GUISize=30 then 30% larger.
Log in server window is unrolled as defaults.
Also, the information from the log can be copied and scrolling is stopped if it is focused.
Client’s crashing when playing items animation was fixed.
Paths make_tla.bat were converted to Visual Studio 2008 (9.0).

Rev.183
http://www2.xp-dev.com/sc/change/94227/183
Lo Pan’s mercenaries call leader’s name correctly now.
Nancy and Sid’s quest location now is deleted after leaving it (previously it wasn’t deleted and hanged in the memory).
SF docs were excluded from NoPvP locations.
Letters generation in Postman quest was fixed.
Holodisk with combat robot’s video recordings can be given to Buster now.
Shaneman’s documents now have description in “Diplomatic mission” quest.
A dialogue between bar clients in outer Vault City was added (wipe is required).
Mini quest “Seduce art” was added in Klamath (wipe is required).

Rev.182
http://www2.xp-dev.com/sc/change/94227/182
NPC-travellers will no longer take dead characters to the global map.
Atoll was removed from Eli’s destinations.
Skill displaying when increasing it through the dialogue was fixed.
The mistakes in the newcomer’s dialogues in “Anger” quest were fixed.
The mistake in mercenaries script which caused the leaving the employer earlier was fixed.

Rev.181
http://www2.xp-dev.com/sc/change/94227/181
Reading nicknames from ignor list file was fixed.
Console command for adding a player to the ignor list was added ~ignore PlayerName.

Rev.180
http://www2.xp-dev.com/sc/change/94227/180
Mechanism of reputation calculation was switched off due to its incorrect work.
Now all the list will be visible, but will work correctly.

Rev.179
http://www2.xp-dev.com/sc/change/94227/179
Network protocol bug which caused short hangs up was fixed.
Client’s script was fixed which could cause null parameter call.

Rev.178
http://www2.xp-dev.com/sc/change/94227/178
Superfluous rifles on offer were fixed.

Rev.177
http://www2.xp-dev.com/sc/change/94227/177
Game version increment.

Rev.176
http://www2.xp-dev.com/sc/change/94227/176
Sequence of handlers calling was fixed
MAP_EVENT_OUT_CRITTER, MAP_EVENT_IN_CRITTER
now the first one is called initially, then the second
On intro_init map static lighting was set.
Group moving indication on the global map was fixed (previous update bug).

Rev.175
http://www2.xp-dev.com/sc/change/94227/175
Console command ~globalmap was added. It moves player to global map. It works only on noPvP maps for players not in combat mode and with noPvP mode turned on.
In caravans and travellers scripts functions of moving to final destination’s map were updated.

Rev.174
http://www2.xp-dev.com/sc/change/94227/174
Porting game to Linux was started.
Also supporting of 64 bit platforms.
Client’s native libraries are now transmitted automatically. They are stored in ‘Client/data/cache’. Folder with scripts ‘Client/data/scripts’ is not used anymore and was deleted.
To the server’s folder library STLPort (http://www.stlport.org/) was added. Client’s libraries are now compiling with it’s help. It is connected with porting to other platforms.
Additional methods of moving were added to critters in server scripts
bool Critter::TransitToMap(uint mapId, uint16 hexX, uint16 hexY, uint8 dir, bool withGroup)
bool Critter::TransitToMap(uint mapId, int entireNum, bool withGroup)
bool withGroup – when moving from global map to local map, all the group will be moved.
Regular TransitToMap (without bool withGroup) work as with withGroup == false.
Previously they worked as как withGroup == true, what led to moving all the group when replicating, if dead critter was on the global map.
3d critters were switched off. For switching on see PLAYERS_3D in _defines.fos.
Constants for operating with game constants were added(see 168 revision, http://www2.xp-dev.com/sc/change/94227/168).
Specification for the reserved function Log in native scripts was changed. Now the first returned parameter is function’s name from which it was called.

Rev.173
http://www2.xp-dev.com/sc/change/94227/173
Traders were added to Atoll and Redding.
Barterground was moved to position 690:760 as it isn’t needed anymore in north-west region due to noPvP mode.
Locations “BiX Church” and “Atom’s Church” were moved to special encounters class.
Fixed rewards in some quests.
Maps fixes.
Biscuit on Modoc can be received only once now (as in Fallout 2).

Rev.172
http://www2.xp-dev.com/sc/change/94227/172
noPvP mode was activated on some TLA maps. It will be used on the next TLA session.
For switching it off on your server set global variable
__NoPvpMaps=false; in script config.fos
Ability of making a list of ignored players, it works similarly NameColorizing. It needs manual adding nickname of ignored player to IgnoreList.txt
For refreshing the list of ignored players in game use console command ~ignorelist.

Rev.171
http://www2.xp-dev.com/sc/change/94227/171
Derivative objects system for mapper was updated.
When placing base object, all his derivatives are placed automatically. If one object from the group is being selected - all others are being selected too.
If the prototype or position of the derivative object is changed, changes will be automatically applied by mapper or server when loading.
For the example see cars, at the present time they have one derivative object – their trunk. Now when placing the car, it will be created automatically, also it will be moved with it and if base or derivative object is deleted, all the group will be deleted too.
The system of moving selected objects in mapper was upgraded. Now in hexagonal system the selected objects will be moved without being tearing apart.
Also the selected objects, when being moved, will stop at the map’s edge, so they won’t mix into a pile.
The problem with detecting whether items in container belong to their inventory or container.
Previously items were placing on the hex and if you place two containers on the same hex, all the items will stack in one container. Now it is fixed.
Item::TrapValue initialization through mapper was fixed.
If rewriting is performed on prototypes loading, alert is displayed. It was added for items and critters prototypes.
In object’s structure in mapper was deleted field
const bool Item_InContainer
and added
const uint UID, ContainerUID, ParentUID, ParentChildIndex

Rev.170
http://www2.xp-dev.com/sc/change/94227/170
Now server doesn’t block client’s libraries while working. Previously you needed to stop the server to replace client’s dll (Server/scripts/fonline_tla_client.dll).

Rev.169
http://www2.xp-dev.com/sc/change/94227/169
Combined content of MASTER.DAT + CRITTER.DAT. Size – 201 MB!

Rev.168
http://www2.xp-dev.com/sc/change/94227/168
Client and Mapper are no longer bounded with Fallout’s data files – MASTER.DAT and CRITTER.DAT.
These files content is combined (excess data is deleted) and packed into fallout.dat (will be uploaded with the next update) and defined in DataFiles.cfg.
Global variables string __MasterPath, __CritterPath were deleted.
The configurator (FOConfig.exe) is updated accordingly fixes above.
Critter’s lighting in the death moment and flat items lighting was fixed.
To server/client/mapper scripts the next functions for operating with the constants (*Names.lst) were added:
int GetConstantValue(int constCollection, string@+ name) – identifying constant’s value by the name;
string@ GetConstantName(int constCollection, int value) - identifying constant’s name by the value;
void AddConstant(int constCollection, string@+ name, int value) – adding separate constant to the collection;
bool LoadConstants(int constCollection, string@+ fileName, int pathType) – loading/reloading the collection;
int constCollection – collection’s number, see Constants collections in _defines.fos, also you can define your own collections;
string@+ name – constant’s name;
int value – constant’s value;
string@+ fileName, int pathType – collection file’s name and folder path.

Rev.167
http://www2.xp-dev.com/sc/change/94227/167
Bug with error of name/password in login menu if it exceeds 12 symbols was fixed.
Screen centering on the player when loading map in right-angle geometry was fixed.
Copying objects in Mapper from smaller map to the bigger one was fixed.
Mapper hanging up when Sleep < 0 was fixed.
Crashes when loading ART files were fixed.
Principe of transparency defining with parameter ‘”t” was changed, now it isn’t equal to 255 – paletteIndex, but to max(R, G, B).

Rev.166
http://www2.xp-dev.com/sc/change/94227/166
System of operating with items prototypes was updated (ProtoItem).
Ability to add your own fields to proto class was added. New pragma ‘bindfield’ is used for this, e.g.:
#pragma bindfield "const int ProtoItem::MyValue -> 400"
it means creation of field MyValue of int type with offset 400 (considering thas int is 4 byte, it will occupy bytes 400, 401, 402, 403). Totally for user’s fields 500 bytes are available.
Field is equal to zero as defaults, but it is possible to change the value by defining value (in the current case MyValue=111 or MyValue=SkillBigGuns) in proto file (.fopro), number (if it contains only numbers) or path to the file (it is identified by the presence of ‘/’ or ‘\’ symbols).
For now fields which are not used by the engine are taken out to scripts, see _defines.fos Item prototypes fields.
Changes in structure ProtoItem.
All next methods are deleted
uint8 GetType() const
uint16 GetProtoId() const
bool IsGrouped() const
bool IsWeared() const
bool Container_IsGroundLevel() const
List of new fields which are registered in the engine (part of them is renamed, some were deleted)
http://pastebin.com/8R4QkP3h
The other fields are registered with #pragma bindfield in _defines.fos.
Now all items can stack and wear out, for this Boolean fields are added to the prototypes
bool ProtoItem::IsStackable
bool ProtoItem::IsDeteriorable
Item type ITEM_MISC_EX was deleted, it is combined with ITEM_MISC (miscex.fopro is deleted).
Vehicles are taken out to separate type ITEM_CAR (car.fopro was added).
Also now user can define any type numbers for the items.
Former fields uint MiscEx_StartVal0..9 of the start values for Item::Val0..9 were moved to common area named StartValue0..9, and with these values Item::Val0..9 are initialized.
Metod bool Item::IsCar() const was deleted, instead of it use GetType()==ITEM_CAR.
The next methods are renamed
bool Item::IsGrouped() const -> bool Item::IsStackable() const
bool Item::IsWeared() const -> bool Item::IsDeteriorable() const
The next fields are renamed
uint16 Item/ItemCl::BrokenWear -> Item/ItemCl::Deterioration
uint16 Item/ItemCl::CarDeteoration -> Item/ItemCl::CarDeterioration
uint8 MapperObject::Item_DeteorationFlags -> uint8 MapperObject::Item_BrokenFlags
uint8 MapperObject::Item_DeteorationCount -> uint8 MapperObject::Item_BrokenCount
uint16 MapperObject::Item_DeteorationValue -> uint16 MapperObject::Item_Deterioration
Mechanism of affiliated objects was moved for common use. Previously it was available only for vehicle’s trunk.
One object can have up to five derivatives. Numbers of the derivative objects are defined in uint16 ProtoItem::ChildPid_0..4. By creation of base object, derivatives are created automatically.
For now Mapper doesn’t create affiliated obkects automatically, but it will be fixed in further.
For setting the place of situation, special field ChildLines_0..4 is used (former MiscEx.Car.Bag_0..1, see below by recording format).
Also it is possible now to define automatic blocking for any objects, not only for vehicles – field BlockLines (former MiscEx.Car.Blockers).
Recording format for Child/BlockLines – XYXYXY..., where X is direction number (0..5/7), Y is the amount of steps (1..9) in this direction (previously for vehicle’s trunk for another recording format – XXXX...).
Maximum amount of steps for BlockLines – 50, for ChildLines – 6.
For operating with derivative objects use methods
Item@+ Item::GetChild(uint childIndex) const
(бывшая Item@+ Item::CarGetBag(int numBag))
bool Map::CheckPlaceForItem(uint16 hexX, uint16 hexY, uint16 pid) const
(bool Map::CheckPlaceForCar(uint16 hexX, uint16 hexY, uint16 pid) const)
Fields renaming affected lots of scripts, be attentive.
Old proto format is converted to the new one automatically, but Object Editor (ObjectEditor.exe) still operates only with old format. It will be fixed soon.
To replication.fos and entires.fos scripts the influence of right-angled geometry was added.
Script main_planes.fos is formatted as a separate module.
All pragmas were move to the end of _defines.fos.
Drop of FPS when switching on view/attack borders was fixed.

Rev.165
http://www2.xp-dev.com/sc/change/94227/165
Fix for the ASCompiler.

Rev.164
http://www2.xp-dev.com/sc/change/94227/164
Changed ASCompiler output format to “filename(linenumber) : message”. Such output is recognized by a number of IDEs and allow jumping to the code by a double-click on the output line.

Rev.163
http://www2.xp-dev.com/sc/change/94227/163
Tabs management system was added to Mapper. Now one tab can have numerous subtabs.
Tabs names and its filling is defined in mappers scripts. But some tabs already have initial filling.
Item – items prototypes by defaults (items.lst);
Tile – tiles by default, search is performed in ‘art/tiles/’;
Crit – critters prototypes by defaults (critters.lst);
Fast – displays often used objects, initial state is defined in scripts (InitializeTabs in mapper_main.fos);
Ign – Ignore, shows ignored objects which are not shown on the map;
Inv, Msg, Map – special tabs which have nothing to do with the mechanism, but it is possible to change its name throug TabSetName (see below).
The tab can have subtabs only of one type – tiles, critters or items (displayed in priority order). For items and critters the subtab’s name is chosen by user, for the tiles it is performed automatically.
The lowest subtab “all” contains all prototypes (or tiles) on a list above.
For activation the menu of tab choosing – perform a double click on it. If positions are numerous then use mouse wheel for navigation (scroll speed: normal – 4, with pressed shift – 8, with pressed ctrl – 20, with pressed alt – 50).
For tabs management use scripts, functions Tab*
uint TabGetTileDirs(int tab, string@[]+ dirNames, bool[]+ includeSubdirs)
uint TabGetItemPids(int tab, string@+ subTab, uint16[]@+ itemPids)
uint TabGetCritterPids(int tab, string@+ subTab, uint16[]@+ critterPids)
void TabSetTileDirs(int tab, string@[]+ dirNames, bool[]+ includeSubdirs)
void TabSetItemPids(int tab, string@+ subTab, uint16[]@+ itemPids)
void TabSetCritterPids(int tab, string@+ subTab, uint16[]@+ critterPids)
void TabDelete(int tab)
void TabSelect(int tab, string@+ subTab)
void TabSetName(int tab, string@+ tabName)
int tab – tab’s number (see Tabs in _mapper_defines.fos);
string@[]@+ dirNames – folder’s names for tiles searching;
bool[]@+ includeSubdirs – turn on search in subfolders;
string@+ subTab – subtab’s name;
uint16[]@+ itemPids – item’s prototype numbers array;
uint16[]@+ critterPids – critters’s prototype numbers array;
string@+ subName – tab’s name.
Global variable was added
bool __SplitTilesCollection = true
It defines whether tiles should be divided into groups in the folders. The group is defined as a string in the file’s name before the first number (e.g. abc12.png – group abc), if the number is absent, then group is defined as '<other>'.
In connection with these changes, the global functions are deleted
uint GetFastPrototypes(uint16[]@+ pids)
void SetFastPrototypes(uint16[]@+ pids)
Other updates.
Fixed incorrect work of server/client which caused some bugs.
Global variable int __GeometryType was added to _defines.fos for the indication of chosen geometry. See constants in _defines.fos Geometry.
Depending on its value, tab with Tactics and Arcanum is added.
Ability to work with file names which include spaces is added.
When loading ART files, it is possible to flip them vertical or horizontal. Parameters in the file name - ‘v’/‘V’ and ‘h’/‘H’.
When loading SPR file, if you define in changing color parameter – layer’s number -1, then the modificator will be applied to all four layers.

Rev.162
http://www2.xp-dev.com/sc/change/94227/162
Quest perks “Midnight Child”, “Nosderatu Blood” were added (Modoc, “Night’s tender”).
Now new home position is set for NPC-travelers (Devin, Eli) when they enter new location.
Female characters now can finish quest of removing childkiller status.
Allies HP and resistances were increased in “Dangerous hunt” quest. Also a simple dialogue is added to them.
The forged letter is now removed from the inventory when finishing quest “Forgery”.
Edvin in Klamath tells with a popup phrase when starting gathering items.
A delay was added to the prisoner giving the cues in “Ernst Telman” quest.
Ability of intimidating the NPC visitor if it’s a woman was deleted in quest “Wrath”.
Barcus now reacts with popup phrases to the futher meetings with the player who have done quest “Amnesty for Joshua”.
Upon the receiving lieutenant rank of Vaultcity’s Guard, player is awarded with a black combat armor.
In “Diplomatic Courier” quest time (24 hours) which Sheiman takes for the thoughts now is calculated correctly. Upon finishing this quest, player receives +1 reputation in NCR.
Sell price of the buggy which player receives upon finishing the quest in NCR was set to zero.
Dialogue launch when player uses an antidote in quest “Poisoned Regulator” in Redding was fixed.
Players who gained Vaultcity citizenship now can trade with Randal with no restrictions.
Reputation calculation in quests “Real Cowboy”, “Hub Bibliography” in NCR was fixed. If player refuses the reward in “Hub Bibliography” quest, he gains +2 reputation (was +1) when he delivers 5 books.
Increasing raider’s resistances and skills every new attack on NCR was switched off.
Ability of crafting and buying chitin armor was added. Giant beetles drop chitin.
Items with ITEM_GAG flag deletion upon player’s death was fixed.

Rev.161
http://www2.xp-dev.com/sc/change/94227/161
Ability to customize game geometry was added, either the support of isometric projection with quadrangles was.
For customization use global variables
bool __MapHexagonal – isometry type: true – hexagonal, false – quadrangular;
int __MapHexWidth – hex width;
int __MapHexHeight – hex height;
int __MapHexLineHeight – hex line height;
int __MapTileOffsX/Y – ground tiles offset;
int __MapRoofOffsX/Y – roof tiles offset;
int __MapRoofSkipSize – amount of hex per one roof tile (necessary for its correct hiding);
float __MapCameraAngle – 3d model rendering angle;
bool __MapSmoothPath – path smoothing when moving;
string __MapDataPrefix – path and prefix for the geometry files.
Operational sprites for geometry are situated in art/geometry/.
Quadrangular isometry use 8 directions, hexagonal – 6.
In script config.fos in function InitializeGeometry(), necessary adjustments for 3 games (Fallout1/2, Fallout Tactics and Arcanum) are added. This function can be called in server, client and mapper scripts, as all three of them need geometry information.
Global variables uint __LookDir4, uint __LookSneakDir4 were added for 8-directional geometry.
Fixed Tactics SPR files loading.
Mode MODE_NO_TALK was added. It affects ability to talk and appearance of the icon in the context menu.
Double click on hex, affecting avatar’s moving, was fixed.
Creation of descriptions for critters prototypes (FODLG.MSG) with high identifiers was fixed.
Image of elephant gun was added in 3d.

Rev.160
http://www2.xp-dev.com/sc/change/94227/160
Fixed a bug with server and client communication.
Fixed a bug with wrong sprites display.

Rev.159
http://www2.xp-dev.com/sc/change/94227/159
Documentation’s update, mistakes fixes.

Rev.158
http://www2.xp-dev.com/sc/change/94227/158
Script start_server_client.fos was renamed to config.fos and now it isn’t simply pasted into function start(), but presented as a separate module with function InitializeGame().
Macros for operating with time were moved from _macros.fos to separate module _time.fos.
Slight fix of drugs.fos.

Rev.157
http://www2.xp-dev.com/sc/change/94227/157
Errors messages in server log when operating with functions GetPlayerName/GetPlayerId were removed.
Also GetPlayerName returns null now, if the player wasn’t found.
Bugs of reputation calculation were fixed.

Rev.156
http://www2.xp-dev.com/sc/change/94227/156
Ability to affect the colors when loading Tactics sprites was added.
To make color shift, define necessary values in file name’s parameters (“$”).
Format: fileName$[index,r,g,b]animName.spr (can be any amount of shifts […])
where index – body part’s number (0 – miscellaneous, 1 – skin, 2 -hair, 3 – armor);
r,g,b – color shift for the each component, can be negative
Example: someSprite$[2,50,-30,-20]anim1.spr – load sprite someSprite.spr, with animation anim1 and hair’s color shift in RGB (50,-30,-20).
Additional flags for operating with color’s shift were added for Tactics critters (_animation.fos, animation.fos).
Use macros ANIM1_COLOR_SKIN(index), ANIM1_COLOR_HAIR(index), ANIM1_COLOR_ARMOR(index) for values defining. Index can take on value from 0 to 15, appropriate to it values of color shift look in array colorOffsets of animation.fos script.
For ability testing you can use text function void ColorOffset(Critter& cr, int skin, int hair, int armor) in test.fos.

Rev.155
Some native structures were fixed.

Rev.154
http://www2.xp-dev.com/sc/change/94227/154
AngleScript is updated to revision 822.
Ability of sorting is added to scripts arrays
Ascending sort
void array::sortAsc()
void array::sortAsc(uint index, uint count)
Descending sort
void array::sortDesc()
void array::sortDesc(uint index, uint count)
For user’s classes sorting realize opCmp method
http://www.angelcode.com/angelscript/sdk/docs/manual/doc_script_class_ops.html
Vehicle animations on the global map and item’s animations in Mapper are fixed.
Some points in operating with critter’s animations are fixed (animation.fos).
Global variable __GmapActive is fixed.
Global variable for setting min. offline time after that client will completely exit from the game was added.
uint __MinimumOfflineTime = 180000; // 3 minutes

Rev.153
http://www2.xp-dev.com/sc/change/94227/153
Additional constants for operating with Chosen’s actions were updated (Get/SetChosenActions, for CHOSEN_USE_ITEM).

Rev.152
http://www2.xp-dev.com/sc/change/94227/152
Additional constants for operating with Chosen’s actions were added (Get/SetChosenActions).

Rev.151
http://www2.xp-dev.com/sc/change/94227/151
Bugs with incorrect files’s names path detecting were fixed.

Rev.150
http://www2.xp-dev.com/sc/change/94227/150
3d models loading was fixed.
3d models rendering to sprites was fixed.
Critters animations were fixed (death in 2d and 3d modes).
Shift calculation for some models was fixet found.
Bugs of reputation calculation were fixed.

Rev.156
http://www2.xp-dev.com/sc/change/94227/156
Ability to affect the colors when loading Tactics sprites was added.
To make color shift, define necessary values in file name’s parameters (“$”).
Format: fileName$[index,r,g,b]animName.spr (can be any amount of shifts […])
where index – body part’s number (0 – miscellaneous, 1 – skin, 2 -hair, 3 – armor);
r,g,b – color shift for the each component, can be negative
Example: someSprite$[2,50,-30,-20]anim1.spr – load sprite someSprite.spr, with animation anim1 and hair’s color shift in RGB (50,-30,-20).
Additional flags for operating with color’s shift were added for Tactics critters (_animation.fos, animation.fos).
Use macros ANIM1_COLOR_SKIN(index), ANIM1_COLOR_HAIR(index), ANIM1_COLOR_ARMOR(index) for values defining. Index can take on value from 0 to 15, appropriate to it values of color shift look in array colorOffsets of animation.fos script.
For ability testing you can use text function void ColorOffset(Critterd.
SAY_DIALOG/SAY_APPEND mechanics was fixed. (by Atom)
Server’s config loading in Mapper was fixed. (by Atom)
File HashNames.lst was added to client. Names of files which contain parameters (‘$params’) should be entered in it. If you use such names in the prototypes, Mapper or scripts GetStrHash), then include this name to this list.
Format of writing: [any number] [file’s name] [end of string]
E.g.
0 art\scenery\BrazureFire$t.ART
0 art\scenery\BrazureFire$t3.ART
In further it is possible to detect and transmit such names automatically, but for the present use this system.
Roof disappearing if it is situated in odd hex in two axis.

Rev.149
http://www2.xp-dev.com/sc/change/94227/149
Documentation was updated.
Some fixes in Arroyo (Minoc’s quest about raiders).
Usage mode was added for sledgehammer and supersledge (for resources mining).
Guard lib was brought into common standard of scripts formatting.

Rev.148
http://www2.xp-dev.com/sc/change/94227/148
Two reserved variables were added to HLSL effects
float AnimPosProc – current animation’s per cent 0%..100%, [0,1);
float AnimPosTime – current animation’s time in seconds.
Client’s hanging under certain circumstances was fixed (e.g. receiving item’s data when player in process of moving between maps).
Dump generation when closing server application without stopping was switched off.
Generation of unnecessary messages to log in function animation_ animation.fos was fixed.

Rev.147
http://www2.xp-dev.com/sc/change/94227/147
Parameters for critter’s movement controlling were added.
Time for moving in milliseconds:
#define ST_WALK_TIME (117)
#define ST_RUN_TIME (118)
Ability to move
#define MODE_NO_WALK (539)
#define MODE_NO_RUN (540)
If these parameters are equal to zero, then data is taken from CritterTypes.cfg.
Loading of some ART files was fixed (Arcanum).
Ability of specifying special image processing was added. Palette elements will be transparent depending on its index in the palette (alpha = 255 – index). To chose this loading type - use symbol “t” (or “T”) in file name parameters. E.g. ‘filename$t.art’; also you can combine with palette, e.g. ‘filename$1t.art’.
Ignoring of spec.symbol “/r” was additionally added for splitEx function.
In functions
void DrawSprite(... bool applyOffsets) if applyOffsets == true
there were additionally added shifting of width/2 and height of the image.
Unnecessary fo3d files were deleted.
Palette influence for Arcanum critters was fixed.

Rev.146
http://www2.xp-dev.com/sc/change/94227/146
One more fix of incorrect critter displaying.

Rev.145
http://www2.xp-dev.com/sc/change/94227/145
Quest “Communicated” was added (Redding).
Caravaneers phrases were fixed, now they tell correct departure dates.
Quest “Honomer’s bodyguard” was added (San Francisco).
Retina scanner in GECK town was fixed.
Slight fixes of the hubbolog’s map in San Francisco.
Special result function for skill rise calculation through a dialogue was added.(dialog@r_SkillUp)
The script for quest locations creating was fixed (hostile_location_quest.fos), allies and enemies scripts now work correctly. Resetting of a quest variable when deleting the location was fixed.
Script for realization a dialogue between several npc’s with popping up phrases was added. (npc_dialog.fos)
Story line implementation was continued.
Maps numeration in the location with mutants was fixed (quest string “Guardian”).

Rev.144
http://www2.xp-dev.com/sc/change/94227/144
Critter’s hitpoints regeneration was moved to scripts, you can look realization in function critter_idle main.fos.
Global function for critters sampling from the global map was added to server scripts.
uint GetGlobalMapCritters(uint16 worldX, uint16 worldY, uint radius, int findType, Critter@[]@+ critters)
Additionally to methods
bool Map::GetNearEntireCoords(int& entire, uint16& hexX, uint16& hexY) const
bool Map::GetEntireCoords(int entire, uint skip, uint16& hexX, uint16& hexY) const
were added methods
bool Map::GetNearEntireCoords(int& entire, uint16& hexX, uint16& hexY, uint8& dir) const
bool Map::GetEntireCoords(int entire, uint skip, uint16& hexX, uint16& hexY, uint8& dir) const
which return direction.
Global variable which specifies if the password in the client’s login window should be hidden was added
bool __HidePassword = true
Incorrect critters creation in Mapper was fixed.
Displaying of switching critter’s type 3d->2d on the client’s side was fixed.

Rev.143
http://www2.xp-dev.com/sc/change/94227/143
Fixed critters loading in Mapper (141 revision’s bug).

Rev.142
http://www2.xp-dev.com/sc/change/94227/142
Fixed server loading (the previous revision bug).

Rev.141
http://www2.xp-dev.com/sc/change/94227/141
Mechanism for identifying critter’s animation file name was added.
Now you can operate with critter’s animations from Tactics and Arcanum without any conversions.
All data files which you need for enabling one or another critters are cited in CritterTypes.cfg comments.
The next critters were added to SDK: Humanoid, Behemoth, MTT, Pacification. They are repacked to the separate archive ftrobots.bos.
But all available critters from Tactics and Arcanum are added to CritterTypes.cfg with correctly defined parameters for them (by Tabloid), so you can enable the needed data files and use the critters.
All animations are transformed to the general appearance (ANIM2_2D*, ANIM2_3D* -> ANIM2*). The functional for operating with them is moved to scripts.
In some places where these values are used, numeric literals are replaced by string constants, which description you can find in DefineNames.lst. Fixes were made in weapons prototypes (weapons.fopro) and fo3d templates for 3d critters from VanBuren (_VBHuman.fo3d, _VBMob.fo3d, _VBWeapon.fo3d).
Now three sets of primary and secondary animations are used for critters, for three condition types – alive, knockout, dead
const uint Critter/CritterCl::Anim1/2Life/Knockout/Dead (const uint Critter/CritterCl::Anim1/2 were deleted).
These values are used for animations as default. Pay attention that Anim1 additionally is summed up with animation of the weapon in the active slot, bit-by-bit OR.
It is necessary for assignation certain values on continuing basis (e.g. sitting, lying position).
For changing these values the next method is used
void Critter::SetAnims(int cond, uint anim1, uint anim2)
int cond – defines the position to apply values to (COND_* in _defines.fos), if null it is applied to all three;
uint anim1, anim2 – animation values.
Deleted
const uint8 Critter/CritterCl::CondExt
Accordingly all COND_*_* for them are deleted. Now position is differentiated by the animations.
In connection with it, the next methods specifications were changed
void ToDead(uint anim2, Critter@+ killer)
bool ToKnockout(uint anim2begin, uint anim2idle, uint anim2end, uint lostAp, uint16 knockHx, uint16 knockHy)
void EventKnockout(uint anim2begin, uint anim2idle, uint anim2end, uint lostAp, uint knockDist)
void EventSmthKnockout(Critter& fromCr, uint anim2begin, uint anim2idle, uint anim2end, uint lostAp, uint knockDist)
uint anim2begin, anim2idle, anim2end – animations of the knockout begging, staying in it and coming to yourself. Standard macroses are defined for the transfer
KNOCKOUT_ANIM2_DEFAULT, KNOCKOUT_ANIM2_STUNNED (in _animation.fos).
Also Mapper operates now not with CondExt, but with Anim1/Anim2 for the current Cond.
Global variables for client/mapper for defining combat mode animations were added
uint __Anim2CombatBegin = ANIM2_BEGIN_COMBAT
uint __Anim2CombatIdle = ANIM2_IDLE_COMBAT
uint __Anim2CombatEnd = ANIM2_END_COMBAT
The next reserved client/mapper functions were added (animation.fos):
- string@ critter_animation(int animType, uint crType, uint anim1, uint anim2, uint& pass, uint& flags, int& ox, int& oy)
Function which is called when loading necessary animation.
Returned value - file’s path and name.
int animType – critter’s animation type (new parameter which is set in CritterTypes.cfg);
uint crType – critter’s type;
uint anim1, anim2 – animation’s indexes;
uint& pass – function call’s number, is changed by the user. If animation loading failed and this parameter was changed, then function will be recalled (in certain cases you should try to load different files for the one animation);
uint& flags – flags, at the present moment two of them – to take the first or the last frame from the animation ( Anim loading flags in _animation.fos);
int& ox, &oy – shifts for the animation, in pixels.
- bool critter_animation_substitute(int animType, uint crTypeBase, uint anim1Base, uint anim2Base, uint& crType, uint& anim1, uint& anim2)
If animation loading failed (and uint& pass wasn’t changed), then this function is called for animation substitute detection (e.g. left hook can be replaced by the right hook).
true is returned if the substitute was found (engine also additionally checks if crType, anim1, anim2 were really changed), false – no substitute, animation won’t be loaded and played.
int animType – see above;
uint crTypeBase, anim1Base, anim2Base – base critter’s and animation’s type, which were at the start;
uint& crType, &anim1, &anim2 – critter’s and the current animation’s type for the substitution
- bool critter_animation_fallout(uint crType, uint& anim1, uint& anim2, uint& anim1ex, uint& anim2ex, uint& flags)
As Fallout’s animations are still loaded by the engine (additional shifts calculation and animations pasting together is needed), for determining animations conformity this function is called, i.e. instead of critter_animation for fallout’s animations this function is called.
true is returned if animation is presented, false – not.
Method
bool Critter::IsAnim3d() const
is deleted, use instead of it the global function
int GetCritterAnimType(uint crType)
values look in Anim types _animation.fos.
Critters actions sounds now are played in the scripts, in animation_2d/3d_process.
New mechanism for sound file name identification was made, look PlayAnimSound in animation.fos.
Critters prototypes were divided into fallout’s (fallout2.fopro) and TLA’s (tla.fopro).
Bug with roof’s non-transparency in Mapper was fixed.
Name indication of chosen critter or tile prototype in mapper was added.
Format fo3d now recognizes named constants DefineNames.fos, namely for modificators Mesh, Subset, Layer, Value, DisableLayer, DisableSubset, Texture, EffDef (для Dword), Anim, AnimSpeed, AnimEqual.
Global server variable for determining call frequency was added
GLOBAL_PROCESS_MOVE
uint __EncounterTime = 5000
Global client variable for determining frequency of foolish trick animation call was added
uint __CritterFidgetTime = 50000
is deleted using formula Random(__CritterFidgetTime, __CritterFidgetTime * 2)
Item prototype’s parameter was deleted
bool ProtoItem::Weapon_RequiresActivation
now if animation doesn’t exist, it is just not played.
Parameters
uint16 MapperObject::Scenery_ToMapX/Y
were deleted, in mapper also. Moving between locations is performed by entery points.
In weapons prototypes types of action animations were substituted from numeric by string constants (accordance look in DefineNames.lst).
Appropriate changes were performed in ObjectEditor.
Client functions PlaySound andPlayMusic now return bool, signalizing if file was found or not.
Global functions for server/client/mapper which return appropriate values from CritterTypes.fos were added
uint GetCritterAlias(uint crType)
string@ GetCritterTypeName(uint crType)
string@ GetCritterSoundName(uint crType)
Mapper’s scripts were moved to server’s scripts folder.
Also the whole set of functions for operating with CritterTypes.fos was added to Mapper
bool IsCritterCanWalk(uint crType)
bool IsCritterCanRun(uint crType)
bool IsCritterCanRotate(uint crType)
bool IsCritterCanAim(uint crType)
bool IsCritterAnim1(uint crType, uint anim1)
int GetCritterAnimType(uint crType)
uint GetCritterAlias(uint crType)
string@ GetCritterTypeName(uint crType)
string@ GetCritterSoundName(uint crType)
Specifications of client’s reserved functions were changed
animation2d_process, animation3d_process
parameter bool animateStay was added to the beginning. It indicates if any action is performed now (false) or stand animation (true).
Reaction for global map’s interface buttons pressing when the size of map’s area (GmapMap) covers the buttons area was fixed.
Bug with incorrect loading/saving maps in which script’s or function’s name consists of spaces was fixed.
Bug with potential server crashing when using AI_PLANE_MISC was fixed.

Rev.140
http://www2.xp-dev.com/sc/change/94227/140
Some robots from Fallout Tactics (look the next revision).

Rev.139
http://www2.xp-dev.com/sc/change/94227/139
The next quests were added in San Francisco: “Introduction into Hubbology”, “Hub’s justice”.
Transport to Atoll is available for the players who are doing “Introduction into Hubbology” quest (npc is in the docs area of San Fracisco);
Automatic transfer to the command center of GECK city citizens when entering the map was removed. Now citizens can choose spawn point.
Quest location “Hubbologists laboratory” was added (author JunoReactor).

Rev.138
http://www2.xp-dev.com/sc/change/94227/138
Arroyo:
Quest “Evidence of Chosen’s death” was added (Todd Stewart);
Two courier quests were added (Cassidy, Todd Stewart);
Encounter fixes:
Fixed bugs of the 120 revision;
Fixed random encounters where normally aggressive npc’s didn’t attack after fighting with the other npc’s;
Fixed bug with unlimited experience in Den;
Fixed mistakes in NCR quests cooldowns;
Slight dialogues fixes.

Rev.137
http://www2.xp-dev.com/sc/change/94227/137
Ability to specify the layer of tiles/roof to organize correct query of displaying.
Totally there can be 5 layers, from 0 to 4. You can switch between them with pressing shift and pressing appropriate key (from 0 to 4).
Indication of the current layer is specified in the map’s supplemental information (in upper right corner).
Specification of MapperMap AddTile/AddTileName methods was expanded, also layer parameter was added
void AddTile(uint16 hexX, uint16 hexY, int offsX, int offsY, int layer, bool roof, uint picHash)
void AddTileName(uint16 hexX, uint16 hexY, int offsX, int offsY, int layer, bool roof, string@+ picName)
Functions for hash calculation by file’s name and inverse function were added to the native scripts
const char* (*GetNameByHash)(uint hash); // Get name of file by hash
uint (* GetHashByName)(const char* name); // Get hash of file name
The functional for operating with the chosen’s actions was added to the client’s scripts.
For taking or specifying the actions use functions
uint GetChosenActions(uint[]@+ actions)
void SetChosenActions(uint[]@+ actions)
This array consists of blocks of seven variables, the first is the type, the other are the parameters. Values of types and parameters look in _client_defines.fos Chosen actions.
Argument with the location was added to the reserved function for checking the entries into this location
bool entrance_FuncName(Location& loc, Critter@[]& critters, uint8 entrance)
The next events were added for critters
CRITTER_EVENT_USE_ITEM_ON_ME
bool EventUseItemOnMe(Critter& whoUse, Item& item)
CRITTER_EVENT_USE_SKILL_ON_ME
bool EventUseSkillOnMe(Critter& whoUse, int skill)
In the calls stack it is situated between CRITTER_EVENT_USE_* and the global handler.
That is
CRITTER_EVENT_USE_ITEM for the player + CRITTER_EVENT_SMTH_USE_ITEM for those who can see the player.
CRITTER_EVENT_USE_ITEM_ON_ME
The global handler critter_use_item.
and
CRITTER_EVENT_USE_SKILL for the player + CRITTER_EVENT_SMTH_USE_SKILL for those who can see the player.
CRITTER_EVENT_USE_SKILL_ON_ME
The global handler critter_use_skill.
The supplemental information (current hex, fps, etc.) in Mapper is presented in the upper right corner.
Bug of 135 revision with transparent tiles when placing them was fixed.
Data connected with unfinished mechanism of textured grid was deleted.

Rev.136
http://www2.xp-dev.com/sc/change/94227/136
Maps converted to text format.

Rev.135
http://www2.xp-dev.com/sc/change/94227/135
Now only text format is used for maps, it is binary only for loading.
All maps are converted to the text format (they will be uploaded with the next revision).
Extension of this format is “fomap”.
To convert your own maps to the new format – execute in Mapper ““#ConvertMaps”, then you should manually or using Mapper set required values in Time, NoLogOut, ScriptModule, ScriptFunc fields, which values you can see in file Maps.cfg.
File Maps.cfg is not used anymore, locations prototype numbers are defined opposite to their name in file Locations.cfg, as in the most cases the one map prototype is used for the one location.
According to these changes, the next MapperMap methods are deleted:
uint GetTile(uint16 tileX, uint16 tileY, bool roof) const
void SetTile(uint16 tileX, uint16 tileY, bool roof, uint picHash)
string@ GetTileName(uint16 tileX, uint16 tileY, bool roof) const
void SetTileName(uint16 tileX, uint16 tileY, bool roof, string@+ picName)
And the next are added:
uint GetTilesCount(uint16 hexX, uint16 hexY, bool roof) const
void DeleteTile(uint16 hexX, uint16 hexY, bool roof, uint index)
uint GetTile(uint16 hexX, uint16 hexY, bool roof, uint index) const
void AddTile(uint16 hexX, uint16 hexY, int offsX, int offsY, bool roof, uint picHash)
string@ GetTileName(uint16 hexX, uint16 hexY, bool roof, uint index) const
void AddTileName(uint16 hexX, uint16 hexY, int offsX, int offsY, bool roof, string@+ picName)
Also the next fields are added:
const int WorkHexX
const int WorkHexY
int Time
bool NoLogOut
string ScriptModule
string ScriptFunc
The next methods are deleted (as their technology is not good enough for now):
string@ GetTerrainName(uint16 tileX, uint16 tileY) cons
void SetTerrainName(uint16 tileX, uint16 tileY, string@+ terrainName).
Function
bool SaveMap(MapperMap@+ map, string& fileName, int pathType, bool text, bool pack)
now looks as
bool SaveMap(MapperMap@+ map, string& fileName, int pathType).
The ability to transmit commands /text /pack when saving by the console is deleted respectively.
Several functions for operating with map’s fields were added to mapper script (you can do this procedure simply editing necessary field in the map’s file with text editor):
#MapTime value – map’s time in minutes;
#MapNoLogOut value –possibility to log out on the map;
#MapScriptModule moduleName – script, module’s name;
#MapScriptFunc funcName – script, function’s name.
Now it is possible to place lots of sprites on one hex. Be attentive, fallout’s tiles have the same size and if you place two tiles on the same hex, you won’t see it (only if you select it , it will be less transparent than the others). Take it into account when you place or copy-paste tiles.
Function #ClearTiles can help you with this problem, it deletes superfluous tiles from the hex. So, if you operate with fallout’s tiles and you don’t need several tiles on the same hex, execute this script when you finish work.
Also you can place tiles on every hex, not in two.
Ability of shifting is added for tiles.
To produce tile shift just make the same operations as switching between tiles, but additionally pressing shift. Also you can use the same shift procedure for items. To cancel shift, press Alt with Shift and move objects.
Fixed 130 revision’s bugs.
Fixed bug with absence of shifting in fofrm with one sprite.
Fixed bug with error in loading sprites in scripts (LoadSprite), which caused several other bugs.
Remained ini files were formatted.

Rev.134
http://www2.xp-dev.com/sc/change/94227/134
Config was uploaded by mistake. Take into accont, don’t use config file from 132 and 133 revisions, admin pass is “hh” there.

Rev.133
http://www2.xp-dev.com/sc/change/94227/133
Redding maps fixed, quest NPC were added.

Rev.132
http://www2.xp-dev.com/sc/change/94227/132
Fixed “Anger” quest, the missing dialogue was restored, now it can be finished.
Added quest “Forgery”. (VC, Linnet)

Rev.131
http://www2.xp-dev.com/sc/change/94227/131
New quests “Anger”, “Ernst Telman” were added. (VC, Linnet)
Fixed bug in VC guard’s AI scripts.
Fixed mistakes in quest “Amnesty for Joshua” dialogues.
Ability to cancel their service for mercs/companions was added if the owner exits from location to the global map.

Rev.130
http://www2.xp-dev.com/sc/change/94227/130
Support of graphics files SPR, TIL, ZAR from Fallout Tactics was added.
Support of data files BOS from Fallout Tactics was added (works as ZIP archieve).

For loading certain animation from SPR files, state it in the name after “$” sign.
E.g. loading CrouchAttackClubSwing animation from file Mutant.spr - “Mutant$CrouchAttackClubSwing.spr”. The first frame of first animation is taken without direction.
Also, ability to set certain palette for ART files (graphics files from Arcanum) was added – state palette’s number (from 0 to 3) after “$” sign.
E.g. to load dfmbnsba.art file with the second palette - “dfmbnsba$1.art”. First palette is taken without direction (that is 0).
Operation with sprites was changed. Now all interface graphics (which is set in ini files) is represented not as one sprite, as continuously played animation.

Functional for operation with currently drawn sprites on the map was added to the native client’s and mapper’s scripts.
Structures:
struct Sprite – displayed sprite;
struct SpriteInfo – additional information about the sprite.
Functions:
Sprite* (*GetDrawingSprites)(uint& count); - currently drawn sprites, if no sprites (on the global, menu), then NULL is returned and count == 0;
SpriteInfo* (*GetSpriteInfo)(uint sprId); - getting additional information about certain sprite;
uint (*GetSpriteColor)(uint sprId, int x, int y, bool affectZoom); - getting pixel’s colour, with the ability of taking zoom into account; it isn’t available for 3d models yet; format – ARGB;
bool (IsSpriteHit)(Sprite sprite, int x, int y, bool checkEgg); - test whether the point on the display matches with the current sprite with taking zoom, transparence and egg of transparence into account (optional).
The reserved native global variable GameOpt was renamed to Game.
Global variables int __MouseX, __MouseY for current mouse position indication were added. Function void GetMousePosition(int& x, int& y) was deleted.
Indication of opened console bool __ConsoleActive was added to client’s scripts.
Bug with memory leak when rendering 3d graphics to sprites was fixed.

Rev.129
http://www2.xp-dev.com/sc/change/94227/129
Added ability to use robot-guards from Sierra as bodyguards (for those who had completed quest “No-sweat job” in Navarro)
Added quest “Amnesty for Joshua” (VC, Amanda)
Work of teleport on special encounter “Mad scientist's laboratory” was restored.

Rev.128
http://www2.xp-dev.com/sc/change/94227/128
Second stable SDK assembly.
For the purpose of decreasing repository’s size, assemblies will be stored in another places. Links you can find in text files.

Rev.127
http://www2.xp-dev.com/sc/change/94227/127
Quest “No-sweat job” in Navarro.

Rev.126
http://www2.xp-dev.com/sc/change/94227/126
Mercenaries and companions mechanism (merc.fos) was updated. Now every companion has term of service. Companions don’t meddle in player’s showdowns with NPC’s.
Fixed quest “Dip.Courier”. Now it can be finished.
Fixed quest “Dock’s attack”. Now it can be finished after killing 5 giant insects.
Added 3 new mercs for Lo Pan.
Updates NPC-travellers mechanism (traveller.fos). The first NPC-traveller was added (eli.fos).
Functions which cooldowns checkup for NPCs in dialogues were fixed.
When character dies, all items with flag ITEM_GAG are deleted.
Fixed cooldowns for quests “Hub bibliography”, “Sick Brahmin” and in the dialogue with dr.Klaus for stimpacks and first aid kits delivery.
When NPC repairs an item, ammo is ejected.
Script for NPC monologues realization was added. (monologue.fos)

Rev.125
http://www2.xp-dev.com/sc/change/94227/125
Fixes of password encryption in the client’s files.

Rev.124
http://www2.xp-dev.com/sc/change/94227/124
Fixed bug with graphics loading in the previous update.

Rev.123
http://www2.xp-dev.com/sc/change/94227/123
DAT2.1 (Arcanum) files support was added.
ART (Arcanum) graphic format was added.
Function for operating with strings splitEx was added.
Principle is the same as in split, but empty elements are not included in the result array. Also spaces/tabs/string_hyphenation are deleted from the result elements.
Examples:
split(“A|B||D”, “|”) -> {“A”, “B”, "", “D”}
splitEx(“A|B||D”, “|”) -> {“A”, “B”, “D”}
split(“A| B\t\t||D| E|F ”, “|”) -> {“A”, “ B\t\t”, "", “D”, “ E”, “F ”}
splitEx(“A| B\t\tC||D| E|F ”, “|”) -> {“A”, “B”, “D”, “E”, “F”}
Additional DrawSprite functions for the client and mapper were added. You can transfer true with the last argument and as the result, the shift which is stored in the current file will be added to the sprite’s position.
void DrawSprite(uint sprId, int sprIndex, int x, int y, uint color, bool applyOffsets)
void DrawSprite(uint sprId, int sprIndex, int x, int y, int w, int h, bool scratch, bool center, uint color, bool applyOffsets)
Fixed bugs with incorrect ini settings parsing in the scripts.

Rev.122
http://www2.xp-dev.com/sc/change/94227/122
Client scripts updates:
For the reserved function void render_iface(uint layer) was added calling with value layer 100 to give the ability of drawing on the global map.
Also the next global variables were added for operating with the global map:
bool __GmapActive – whether global map is active and all the variables below are correct;
bool __GmapWait – whether waiting mode of encounter affirming is active;
float __GmapZoom – current zoom, don’t forget it to take into account while drawing a map;
int __GmapOffsetX, __GmapOffsetY – map shift from the zero-coordinate (up-left corner);
int __GmapGroupX, __GmapGroupY – player’s group coordinates;
int __GmapMoveX, __GmapMoveY – destination point’s coordinates;
float __GmapSpeedX, __GmapSpeedY – movement speed every 50 ms, without taking relief into account
For example, calculating the current pixel group’s position - (x = __GmapGroupX / __GmapZoom + __GmapOffsetX), (y = __GmapGroupY / __GmapZoom + __GmapOffsetY).
Fixed bug with hanging when drawing 3d model, occurred in the last update.
Fixed missing bracket in English texts. (by Kilgore)

Rev.121
http://www2.xp-dev.com/sc/change/94227/121
Added more mouse sensitivity and now you can see mouse’s speed percent in the settings.
Updated FOConfig.exe.
Added AlwaysRun option.
Possible values for option Mouse speed were corrected.
Option Sleep now can be set to -1, that means switching it off (maximum performance).
Added ability of redirecting keyboard’s symbol codes input. For this, use option KeyboardRemap (in FOnline.cfg).
It is performed after space – X Y X Y …, where X is the code which is substituted by Y.
Code numbers - http://fonline.pastebin.com/Qy3E0qwj
Interface description in default.ini is formatted and commented. (by LoadRunner)
Location prototypes updates:
Option max_copy was deleted.
Option max_players was added. It limits the amount of players who can be on the location simultaneously.
Players, who can’t enter location because of exceeding the limit will see message 904 from FOGAME.MSG
{904}{}{Location is overcrowded, try to enter later.}
Password encryption in server *.client. files was added.
Mouse shift when switching between movement modes was fixed.
Also, for more accurate work, the hex mask was added – look \Client\data\art\misc\hex_mask.png. Only red colour is taken into account and when it takes on certain value, the shift to certain direction is performed (50 – 5, 100 – 0, 150 – 3, 200 – 2).
The mask is optional, you can work without it.
Fixed loading/saving tiles in the maps text format.
Fixed global map shifting behind screen’s edge.
Registration of useless clicks in mapper when switching between windows, now isn’t performed.
Fixed the animation of 3d critter standing when situating them on the map.
Also now 3d critters don’t play standing animation in the critter’s list.
Fixed displaying of critters which have only one direction.
Fixed command ~reloadscripts.
Now when you mark items for deleting (DeleteItem/DeleteItems), their quantity is saved. So, in the moment when real deleting is performed, server will delete the requested number of items.
Now knockout during turn-based fight leads to immediate loosing action points, not after finishing the turn.
Also, frequent checks for the necessity of finishing the turn were added at the server - if critter’s dead, critter has negative AP, critter has no more AP.
Scripts:
Fixed critter’s flags (Critter extra flags, _defines.fos).
Fixed special encounter scripts Guardian of Forever, Mad Brahmins.
Script trader.fos was formatted.
Reserved function was added to client scripts, which is called with attacks
void hit_aim(uint8& aim)
aim value can be redefined( Hit locations in _defines.fos).
Function int Critter::GetScore(uint score) was added to server scripts.
Specification Critter::AddScore(int score, int val) was changed to Critter::AddScore(uint score, int val).
Function for calculation the size of drawn text was added to client and mapper scripts
void GetTextInfo(string& text, int w, int h, int font, int flags, int& tw, int& th, int& lines)
string& text – text;
int w, h, font, flags – height, width, print, flags;
int& tw, int& th, int& lines – total width, height and amount of strings in the current text.

Rev.120
http://www2.xp-dev.com/sc/change/94227/120
Unused encounter tables for Fallout 1 and commented original’s scripts were deleted from worldmap_init.fos;
Random encounters of “beasts versus beasts” type were enabled, which were presented in the scripts, but were absent in the original.
Added some new kinds of non-unique random encounters.
Now, if player uses to kill NPC’s of certain group or organizations on random encounters, then they become aggressive.
Vault City guard’s automatic search is deactivated. Now you need to activate the dialogue to pass through.
Fixes in English dialogues versions.
Maps fixes.

Rev.119
http://www2.xp-dev.com/sc/change/94227/119
Fixed lots of little mistakes in dialogues;
Fixed bugs in some Den and Klamath quests;
Maps fixes;
Duplicate dialogues with different names were deleted.

Rev.118
http://www2.xp-dev.com/sc/change/94227/118
Fixed modificator’s argument from Parent-0-7 to Parent0-7.

Rev.117
http://www2.xp-dev.com/sc/change/94227/117
Added dialogues to Arroyo doctor and his team.
Slight fixes (dialogues, maps).

Rev.116
http://www2.xp-dev.com/sc/change/94227/116
Library for importing different 3d models was enabled – Assimp
http://assimp.sourceforge.net/
Formats that are supported:
http://assimp.sourceforge.net/main_features_formats.html
Built-in one is still used for X format, for other ones – this library.
If you don’t need the library, you can delete it (file Assimp32.dll), client and mapper are able to work without it.
Updated mechanism of linking models and animations, now you can link any animation to any skeleton from any file.
fo3d format changes:
Modificator ModelAnimation was deleted.
Modificators Anim, RenderFrame, RenderFrames were expanded – now file name which consists needed animation is placed before the animation’s name (if you state “ModelFile”, then search is performed in the file of loaded model)/
Specification of indicating parent texture (Texture X Parent) was expanded. Now you can additionally state the mesh number and its part, from which the texture is taken - Texture X ParentY-Z, where X is the texture’s number, Y is mesh number, Z is mesh part number; parameters Y-Z are optional, you may don’t use them at all or you may use them partly (Parent, Parent0, Parent-5).
Fixed bug with incorrect script processing when operating with Critter::ShowScreen.
Fixed bug with incorrect operating and crashing when using Log function with some special symbols.
Added Combat Armor 3d model (by Gray).

Rev.115
http://www2.xp-dev.com/sc/change/94227/115
Added special encounter “Warehouse of lost doughnuts” (author – Ponchik).
Scripts for some original special encounters (author – Cracker).
Remade some prototypes. Windows without glasses in Vault’s walls can be shooted through now.
Slight fixes.

Rev.114
http://www2.xp-dev.com/sc/change/94227/114
Maps for quests from the 113 revision.

Rev.113
http://www2.xp-dev.com/sc/change/94227/113
Klamath: quests - “Worker searching”, “Husband's alert”, “Brahmins vaccination” (author – Ponchik).
Slight fixes.

Rev.112
http://www2.xp-dev.com/sc/change/94227/112
Finished appearance of random encounter “Ocean Trader”.
Slight maps, dialogues and graphics fixes.
Added buttons for BarterGround, GECK town, Warehouse and Hell for the global map (author – Ponchik).
Slight fixes.

Rev.111
http://www2.xp-dev.com/sc/change/94227/111
Added additional mechanism for data files loading (dat, zip).
It is necessary for loading data files loading before scripts initializing and processing start() function as some date is needed to be used before this (effects, prints and some other resourses).
For adding files to loading – create DataFiles.cfg file in which you should list all necessary file names. The program searches for the content from the last to the first data file. This mechanism uses server, client, mapper. If list isn’t found then no alerts will be displayed. If one of the files from the list can’t be found or load error appears, then alert will be shown.
Option PatchDatPath was deleted, loading of this file is moved to DataFiles.cfg.

Rev.110
http://www2.xp-dev.com/sc/change/94227/110
Fixed model’s borders calculating which caused nick or text shift above critter’s head.

Rev.109
http://www2.xp-dev.com/sc/change/94227/109
Fixed skin setting-up when registration 3d character.
Fixed order of loaded packs (dat, zip) scanning while searching and parsing ini files.
Addition to 106 revision – for stating specific keys for certain resolutions now are used not separate files with different names, but marks in the main file. At the start of the string write “resolution”, than min. width and height for starting using these options. By default these values are equal to zero.
For example:
"resolution 1024 768
key = value..."
It means, that “key = value ...(and so on till the next keyword ”resolution”)” will be included in the final ini.
Found data will be inserted in the main file as screen width grows.

Rev.108
http://www2.xp-dev.com/sc/change/94227/108
Actual cash files.

Rev.107
http://www2.xp-dev.com/sc/change/94227/107
SDK is switched to 3d players mode. Normal version will be restored after finishing mechanism debugging process.
For switching off 3d players models – comment the next strings in Server\scripts\_defines.fos
#define PLAYERS_3D // Enable 3d players
#define PLAYERS_3D_NO_HEAD // No head slot
#define PLAYERS_3D_VAULT_SUITE // Vault suite by default, not naked
3d updates:
Fixed and reduced the size of attributes and weapons. Added missing attributes of opened pipboy.
In the left hand now is displayed the item, which player has in the second slot.
Armor’s models are divided between the current armor items in the such way, that gamer could see the difference. For example combat armor consists of power armor and the helmet, robes are replaced by jail suit and etc.
Fixed animation playing during creating the new character in single mode.
Added skin change processing in start intro and after Kitty’s haircut.
Added skeleton’s skins.
Added sound for men and women.
Fixed sound name for critters parameter’s loading (CritterTypes.cfg, SoundName).
Now characters walk slowly with double click if alwaysrun option is turned on.

Rev.106
http://www2.xp-dev.com/sc/change/94227/106
Added ability to make 3d characters available to play for.
To enable it (it is disabled as default) - comment certain strings in _defines.fos
// #define PLAYERS_3D // Enable 3d players
// #define PLAYERS_3D_NO_HEAD // No head slot
// #define PLAYERS_3D_VAULT_SUITE // Vault suite by default, not naked
Updated mechanism of working with ini files.
Now, when searching for the keys, excess spaces and tabulations are skipped
(now you can type “ key = value ”, previously was correct only variant “key=value”)
Added function bool AppendIfaceIni(string& iniName), which enables additional ini files.
If the name includes slashes, than the search is being performed from data root, if not – than from folder data/art/interface/.
default.ini is added automatically by the engine, others you can enable in start() client function.
Loading is performed sequentially from default.ini to ones enabled by user by turn. Every packed file is checked by the turn of loading, then in the folder.
Global variable string __UserInterface was deleted.
Fixed bug with incorrect parsing of animation indexes in fo3d file.
Fixed bug with incorrect position of the egg of transparence in zoom mode.
For better readability the next scripts were formatted:
start_server_client.fos
client_main.fos
In the future this practice will be continued.

Rev.105
http://www2.xp-dev.com/sc/change/94227/105
Documentation update – slight fixes.

Rev.104
http://www2.xp-dev.com/sc/change/94227/104
Added structure of script array (ScriptArray) to native scripts.
Added ability to client’s native scripts of calling hex data – Field.
Data is stored in Field* GameOptions::ClientMap,
uint GameOptions::ClientMapWidth/ClientMapHeight.
If map is loaded, than ClientMap != NULL, hex calling – ClientMap[hexY * ClientMapWidth + hexX].

Rev.103
http://www2.xp-dev.com/sc/change/94227/103
Added always run option – can be enabled in client’s config file “AlwaysRun”. Disabled as default.
Added global variables for AlwaysRun regulating:
bool __AlwaysRun (as default – false) - enabling AlwaysRun ability;
uint __AlwaysRunMoveDist (as default = 1) - run with click, if distance is equal or more than the value;
uint __AlwaysRunUseDist (as default = 5) - run with using smth/dialogue/etc, if distance is equal or more than the value.
TLA’s mechanics is equal to original – always run with click, always run with using if distance is more than 4 hexes.
Added parameter uint Critter::ItemTransferCount to native scripts. It stores the value of transferred items during the last transaction.

Rev.102
http://www2.xp-dev.com/sc/change/94227/102
Optimized server operation (script calling) in one tread operation mode, performance increased up to 400%.
Fixed bug with crash when calling Critter::Say* methods with parametr SAY_SAY_TITLE.

Rev.101
http://www2.xp-dev.com/sc/change/94227/101
Changes in fo3d format, new specification was created – look this theme:
http://www.fonline.ru/forum/showthread.php?t=19689
New format added new abilities of working with 3d objects – trasmission of texures, other paremeters, etc.
Also added ability to render certain animation to sprites as for one frame, either for the whole animation.
But the bug with cutting off the shade situated below the lowest edge of model still presents.
Updated old fo3d files, also VanBuren’s critters and weapon models were added.
Changed effects structure, added effect for normal mapping (3D_NormalMapping.fx).
Added transfer of real numbers through scripts, float __EffectValue0..9.
Fixed bugs with loading 3ds files – miss of meshes except the first; crash if texture coordinates are not presented.
Fixed bug in Mapper with data copying when copy-pasting a large number of objects.
Fixed text centering of hexes amount in zoom mode.

Rev.100
http://www2.xp-dev.com/sc/change/94227/100
Documentation update.

Rev.99
http://www2.xp-dev.com/sc/change/94227/99
Updated documentation file, which was missed in the previous revision.

Rev.98
http://www2.xp-dev.com/sc/change/94227/98
Added resourse gathering system;
Documentation updating.

Rev.97
http://www2.xp-dev.com/sc/change/94227/97
Fixes of “Night is tender” quest, now healing must work properly.
Added preview from global map for GECK location.

Rev.96
http://www2.xp-dev.com/sc/change/94227/96
Gecks counting on the location now affects its auto moving away and visibility separately;
Parameter geck_enabled (Map::GeckEnabled) renamed to geck_visible (Map::GeckVisible).

Rev.95
http://www2.xp-dev.com/sc/change/94227/95
Added global server function
void SetChosenSendParameter(int index, bool enabled)
which can denie transmitting parameters to client.
Transmitting of all parameters is enabled by default.

Rev.94
http://www2.xp-dev.com/sc/change/94227/94
Fixes of sea encounter maps.

Rev.93
http://www2.xp-dev.com/sc/change/94227/93
Added sea encounters;
Added posibility of an encounter while travelling on air/water transport;
Player always have possibility of cancellation water/air encounter and never gains experience for that;
Bug fix in mapper with incorrect editing critter’s parameters.

Rev.92
http://www2.xp-dev.com/sc/change/94227/92
Fixed displaying rating in pipboy.
In mapper additional indication of cut sprites was added to make lines, which are needed for correct interaction, visible.

Rev.91
http://www2.xp-dev.com/sc/change/94227/91
Added traffic encryption between server and client.

Rev.90
http://www2.xp-dev.com/sc/change/94227/90
Fixed choosing automatically cut sprites in zoom mode.

Rev.89
http://www2.xp-dev.com/sc/change/94227/89
Added parametr DrawOrderOffsetHexY for shifting order of drawing lower (Y axis).
This is an analogue for recently deleted DrawPosOffsX.
Fixed using car trunk.
Different slight fixes.

Rev.88
http://www2.xp-dev.com/sc/change/94227/88
Fixed exit from Redding; slight fixes.

Rev.87
http://www2.xp-dev.com/sc/change/94227/87
Fix for weapon AP cost.

Rev.86
http://www2.xp-dev.com/sc/change/94227/86
May be fixed bug with incorrect displaying of some tiles.
Fixed bug with unworking elevators.
Added restoration of effects when loosing a device (cause crashed e.g. with alt+tab)

Rev.85
http://www2.xp-dev.com/sc/change/94227/85
Fixed bug with chat disappearing.
Fixed AI bug when combat plans always finished with REASON_CANT_WALK.

Rev.84
http://www2.xp-dev.com/sc/change/94227/84
Fix for DT params reading.

Rev.83
http://www2.xp-dev.com/sc/change/94227/83
Safety checks for radio commands.

Rev.82
http://www2.xp-dev.com/sc/change/94227/82
Fixes of some dialogues; translations of dialogues on Barterground; map fixes;
fixes of encounter table; slight fixes.

Rev.81
http://www2.xp-dev.com/sc/change/94227/81
Fixed another bug during moving on the global map.
Fixed unplanned activating of b/w effect.

Rev.80
http://www2.xp-dev.com/sc/change/94227/80
Fixed teleportation bug during moving on the global map.

Rev.79
http://www2.xp-dev.com/sc/change/94227/79
Fixed bug with incorrect tear and wear and fuel consumption calculation during moving on the global map by car.

Rev.78
http://www2.xp-dev.com/sc/change/94227/78
Fixed brightness output.
Fixed outlining activation.

Rev.77
http://www2.xp-dev.com/sc/change/94227/77
Added automatic sprite cutting. Main purpose – correct displaying of long walls.
Parameter SpriteCut was added to prototypes and mapper (only for scenery) for modification.
Cutting values: 0 – switched off, 1 – horizontal (X axis), 2 – vertical (Y axis).
Wall blocks should be set manually , for that purpose six blocks with different corner types with visual indication were added. It is necessary for correct calculation of brightness and egg of transparence reaction. Numbers 6800..6805 at the end of Wall and Fast list.
Fixed client instability after recent update.
Primary indexes array for animations was expanded to the range ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789.
For value changing use native means (structure CritterType in fonline.h).
Support of effects (HLSL) loading with earlier version of compiler.
Automatic attempt of compilation is performed after failure in compilation with the current library.
Added data updating for client function GetIniStr in the start function (start) after each call of LoadDataFile.
Mapper update:
Fixed bug with error in loading tiles with extension not in lower case.
Fixed algorithm of sprite displaying calculation (when big sprites were disappearing near the screen edge).
Additional visual means for debugging:
- Ctrl + Q: Corners type viewing;
- Ctrl + W: Viewing the result of sprite cutting, linking them to hexes;
- Ctrl + E: Viewing the sequence of sprites drawing.
At the time of renewing NPC’s bag, only items which are not in inventory are repaired and reloaded.
Added ability to set sprite shift in screen coordinates to prototypes.
Fixed bug with double notification of quest state change.

Rev.76
http://www2.xp-dev.com/sc/change/94227/76
Added quest “Night is tender”

Rev.75
http://www2.xp-dev.com/sc/change/94227/75
Tables for sea encounters, slight fixes.

Rev.74
http://www2.xp-dev.com/sc/change/94227/74
Source documentation.

Rev.73
http://www2.xp-dev.com/sc/change/94227/73
SPECIAL calculating is moved to native scripts – fonline_tla.dll for server and fonline_tla_client.dll for client (must be situated in data\scripts).
The other parameters which are used in the engine are needed generally for drawing GUI, but soon they’ll be moved to scripts too.
Native scripts files are moved from data folder to scripts. Added bat-file make_tla.bat for their compilation (installation of MSVS8 is necessary).
For example of use new methods for critter classes are added (IsInjured, IsDmgArm...), items (IsHtHAttack, IsGunAttack...) with pragma bindfunc.
Example of linking global varieties of standard and native scripts is added (__HitAimEyes, __HitAimHead..., these global varieties are moved to scripts).
Callback functions are added (to GameOptions) for item usage cost determination – GetUseApCost. For attack max range determination - - GetAttackDistantion. It further such functions will force out usage of critter parameters in the engine. These functions are binded at the stage of connecting of library to the engine (DllMainEx).
For operating with the engine added the next functions (to GameOptions):
CritterChangeParameter – for correct change of critter parameter, this function should be called firstly, then you can change the value. CritterTypes – index of CritterType structures where data from CritterTypes.cfg is stored.
Added method to client’s critters for detection whether now is time of its move in the turn-based mode
bool CritterCl::IsTurnBasedTurn() const
Some logics of operating with turn-based mode is moved to the scripts – turn_based_process main.fos.
Some recommended specifications for the reserved functions are changed – templates.fos.
Min. time of dialogue or barter with NPC now is regulated by the global varieties __DlgTalkMinTime (now default 100 seconds) и __DlgBarterMinTime (now default 50 seconds).
Range for all prototypes (maps, locations, items) is expanded to 30000.
Fixed bug with incorrect drawing of minimap in the pipboy.
Fixed bug with incorrect calculating of healing rate while registration.
Fixes of Zerg’s special encounter.

Rev.72
http://www2.xp-dev.com/sc/change/94227/72
Data library for script compilation (updated on 27 October)

Rev.71
http://www2.xp-dev.com/sc/change/94227/71
Added Zerg special encounter.
Fixed bug with incorrect names in Fixboy.
Added function LoadDataFile to server scripts, analogue of client/mapper.
Fixed mistiming of player movement on global map.
Deleted function Critter::SendQuestVar, now alert about changing of local variable is automatic.
Changed function specification
void ShowScreen(int screenType, uint param, string& funcName)
to
void ShowScreen(int screenType, uint param, string@+ funcName),
now can transmit both empty string or null.

Rev.70
http://www2.xp-dev.com/sc/change/94227/70
Documentation is updated.
Deleted incorrect splash-picture.
Added urgent files for scripts autoaddition in Notepad++.

Rev.69
http://www2.xp-dev.com/sc/change/94227/69
Added ability to use your own shaders for game graphics drawing.
High Level Shader Language is used for this.
Effects folder is situated in data\effects. After the first compilation they are cashed in the folder data\cache (in futher other different data will be cashed there).
You can read specifications on the game engine effects in data\effects\ReadMe.txt.
Added ability to link any effect to sprite or model in .fofrm and .fo3d (“effect=effect_name.fx”).
For default effect changing, function void SetEffect(int effectType, int effectSubtype, string@+ effectName) was implemented into the client scripts.
int effectType, effectSubtype – effect types look in _client_defines.fos (Subtype for fonts used font type);
string@+ effectName – the name of the effect file (with extension) is in the folder data\effects.
Added changing of detailization of game objects for demonstration. For activation press Alt+W, for return press Alt+Q.
Added client function for map redrawing
void RefreshMap(bool onlyTiles, bool onlyRoof, bool onlyLight)
if all three parameters are false, than everything will be redrawed. Also these three parameters are incompatible.
Fixed bug in mapper with impossibility of viewing 3d critters in prototypes table. At present time they can’t be ranged.
Added ability to play sounds/music from different folders.
void RefreshMap(bool onlyTiles, bool onlyRoof, bool onlyLight)
If there isn’t slashes (‘/’,‘\’) in path name than search is performed in the folder sfx/music. If there are slashes, than in the root (“data/mysounds/mysound.ogg”).

Rev.68
http://www2.xp-dev.com/sc/change/94227/68
Fixed bug in the ObjectEditor when damage type is saved incorrectly.

Rev.67
http://www2.xp-dev.com/sc/change/94227/67
Fixed crashing when calling CritterCl::[Param/Stat/Perk/etc]Base in client scripts;
Fixed error with recording Anydata of zero length (by Atom).

Rev.66
http://www2.xp-dev.com/sc/change/94227/66
Fixed incorrect weapon prototype; errors in checking for special encounters; added decraft of the sand sack to fixboy; other little fixes.

Rev.65
http://www2.xp-dev.com/sc/change/94227/65
Redding: finished map according to the last concept;
- Garbage was returned to static locations;
- Ammo craft on benches (beta-version);
- Destruction of the sack using skill repair now gives use empty sack.
- Entering Den message was moved to texts from script.

Rev.64
http://www2.xp-dev.com/sc/change/94227/64
AngelScript updated to 732 revision.
Added new methods for arrays:
void T[]::insertAt(uint, const T&) – element inserting in specified position in the array;
void T[]::removeAt(uint) – deleting the element by index;
void T[]::insertFirst(const T&) – element inserting to the beginning of the array;
void T[]::removeFirst() – deleting the first element;
void T[]::insertLast(const T&) – element inserting to the end of the array;
void T[]::removeLast() – deleting the last element;
void T[]::grow(uint) – add elements (the sames as a.resize(length()+X));
void T[]::reduce(uint) – delete elements (the same as a.resize(length()-X));
T& T[]::first() – call of the first element of the array (the same as a[0]);
T& T[]::last() – call of the last element of the array (the same as a[a.length()-1]).
Also deleted all functions ArrayPushBack as the built-in array functional was expanded.
All the scripts were fixed accordingly.

Rev.63
http://www2.xp-dev.com/sc/change/94227/63
Added ability to start the server as a service.
For registration/start use key “-service” (shortcut FOServerService.exe.lnk).
For deleting use keys “-service -delete” (shortcut FOServerServiceDelete.exe.lnk).
Added ability to log using function OutputDebugString.
The log can be caught (even remotely) using program DebugView
http://technet.microsoft.com/en-us/sysinternals/bb896647.aspx
For switching it on in server and client configs option LoggingDebugOutput is added.
Server/client/mapper will work normally now with incorrect active folders. At start you set the current folder of executable.
Fixed bug with absence of replacement “x” by “ч” in built-in punto switcher.
Fixed crash in turn based mode and incorrect work of Map::GetCritter(uint critterId).

Rev.62
http://www2.xp-dev.com/sc/change/94227/62
Fixed bug with updating vehicle data on the global map.
Fixed bug with system hanging while looking items quantity in game info.
Fixed bug with the incorrect login/disconnect.
Fixed bug with incorrect creating non-stacking items on the map in the number of >1.
Fixed bug with incorrect critters gathering when path tracing (by Atom).
CRITTER_EVENT_TALK now performed before checking NPC for settings which could restrict speaking with it.
Added new mechanism for script garbage gathering (by Atom).
For config file simplification, the next options were removed:
ASGarbageTime, VarsGarbageTime.
Deleted transfer of a group of critters into global map processing global_process, CRITTER_EVENT_GLOBAL_PROCESS.
Also instead of transferring a group into global map processing global_invite, CRITTER_EVENT_GLOBAL_INVITE, now only the leader is transferred.
Instead of picking group use Critter@[]@ Critter::GetGlobalGroup().
Because of that, specification methods were changed:
bool Critter::EventGlobalProcess(int type, Critter@[]& group, ...)
bool Critter::EventGlobalInvite(Critter@[]& group, ...)
for
bool Critter::EventGlobalProcess(int type, Critter& cr, ...)
bool Critter::EventGlobalInvite(Critter& leader, ...)
Reserved functions of critter event CRITTER_EVENT_GLOBAL_PROCESS, CRITTER_EVENT_GLOBAL_INVITE
bool _FuncName(Critter& cr, int type, Critter@[]& group, ...)
bool _FuncName(Critter& leader, Critter@[]& group, ...)
for
bool _FuncName(Critter& cr, int type, ...)
bool _FuncName(Critter& leader, ...)
Fixed bug with incorrect cooldown for hijacking, now it is equal for a normal lock.
Added checking for unopenable door to the lock break script.

Rev.61
http://www2.xp-dev.com/sc/change/94227/61
Fixed bug with incorrect reappraisal of item flags in Mapper.
Fixed bug when player isn’t notified about moved item.

Rev.60
http://www2.xp-dev.com/sc/change/94227/60
Fixed bug with incorrect displaying of the rain on roofs.

Rev.59
http://www2.xp-dev.com/sc/change/94227/59
Mapper’s fix for correct operating with new folder and print’s names.

Rev.58
http://www2.xp-dev.com/sc/change/94227/58
For editing use program Bitmap Font Generator v1.12.
http://www.angelcode.com/products/bmfont/
Print should have the next attributes – OEM RUSSIAN, Padding 1 (in all directions), Binary, all symbols should be placed on the one texture.
All prints are moved in the separate folder “Client\data\fonts\”.
For the example print FONT_COURIER_NEW_SMALL is added. Look _client_defines.fos, client_main.fos, CourierNewSmall.bmfc, CourierNewSmall.fnt, CourierNewSmall_0.png.
Added function in client’s scripts of activating the clock which shows you the time signal comes to server and returns (ping).
You can use it for restriction of input while waiting for server’s answer.
Fixed crushing when looking players statistics on server.
Fixed crushing of Dialogue Editor (by Atom).

Rev.57
http://www2.xp-dev.com/sc/change/94227/57
Expanded mechanism of operating with ingame radio.
Added flag ITEM_RADIO for radio. (in _defines.fos).
Radio messages are now also sent to radios which are on the ground . For their identification engine sends them with color 0xFFFFFFFE (in map_message in client_main.fos).
Realization is in script radio.fos (interface, mechanics), call from main.fos. Interface data is taken from default.ini (Radio*).
You can edit it with using item or using science skill on it.
Radio data is situated in general fields of several item types. That’s why it isn’t a good idea to use this flag with Doors, Keys, Cars, Weapons, Armors, Holodiscs.
Transmitting and receiving functions are separated. For managing the next flags and range types are used (_defines.fos):
Restriction of transmitting/receiving is stored in Item/ItemCl::RadioFlags, used by the engine:
RADIO_DISABLE_SEND, RADIO_DISABLE_RECV.
Restriction of switching radio state in в Item/ItemCl::RadioFlags:
RADIO_DISABLE_SHIFT_SEND, RADIO_DISABLE_SHIFT_RECV – restriction of switching transmit/receive;
RADIO_DISABLE_SHIFT_BC_SEND, RADIO_DISABLE_SHIFT_BC_RECV – restriction of changing distance range;
RADIO_DISABLE_SHIFT_CHANNEL – restriction of channel switching.
Range types are stored in Item/ItemCl::RadioBroadcastSend/RadioBroadcastRecv, are used by the engine:
RADIO_BROADCAST_WORLD – works all over the world;
RADIO_BROADCAST_MAP – works within the limits of the current map;
RADIO_BROADCAST_LOCATION - works within the limits of the current location;
RADIO_BROADCAST_ZONE(x) - works within the limits of “x” zones on the global map;
RADIO_BROADCAST_FORCE_ALL – works everywhere regardless of the adjustments of transmitting or receiving radio/
Added support of these flags to the object editor (both engine and script ones).
Added scripts uint16 ProtoItem::RadioChannel, uint16 ProtoItem::RadioFlags, uint8 ProtoItem::RadioBroadcastSend, uint8 ProtoItem::RadioBroadcastRecv.
For holodisc marking added flag ITEM_HOLODISK (in _defines.fos).
Holodisc data is situated in general fields of several item types. That’s why it isn’t a good idea to use this flag with Doors, Keys, Cars, Weapons, Armors, Holodiscs.
Added support of this flag in object editor.
Added script uint ProtoItem::HolodiskNum.
Added ability to use built-in cartridge indicator for other purposes.
Added the next parameters:
uint8 ProtoItem::IndicatorStart – initial value, - Item/ItemCl::Indicator;
uint8 ProtoItem::IndicatorMax – maximum available value (for correct calculation of the strip position);
uint8 Item/ItemCl::Indicator – current value.
Mechanism is considered activated if maximum value in the prototype isn’t equal to zero.
Added support of editing of initial and maximum values in the object editor.
Method Item::GetMapPosition for the items which are in the global map returns their coordinates.
Fixed bug with system hanging while looking online statistics.
Added storing up to 20 ip addresses for one account (fonline.h).
Item prototype’s fields, which are equal to zero, now cannot be saved. All prototypes are resaved.
Continued working on multithreading in game logics.
Added ignoring of non-initialized maps or locations while loading save (NPC’s would be moved to global map, items – deleted).
Fixed bug in the dialogue on BiX location.
Updated abilities of GUI scripting.
In script _defines.fos notes “Used in engine” are replaced by “Hardcoded”; point is the same - to show that this data is used by engine also.
Corrected some specifications in template.fos of reserved functions.

Rev.56
http://www2.xp-dev.com/sc/change/94227/56
Changes in craft: some new recipe’s (new weapon, etc.), added workbenches in some town/military bases.

Rev.55
http://www2.xp-dev.com/sc/change/94227/55
- Updated Redding maps;
- Deleted unused graphics;
- Added second entrance to NCR;
- Some changes in NPC’s inventories on encounters.

Rev.54
http://www2.xp-dev.com/sc/change/94227/54
- Slight fixes in Hartman’s and Shrim’s dialogues (Vault City);
- Fixed problem with immediate sending off caravans/patrols Ahe9mPDq;
- Changed content of the quest variable for the quest "Third trial. Drill."
- Restored functions for triggers t_DialogNpc and scenery s_TransitToMap.

Rev.53
http://www2.xp-dev.com/sc/change/94227/53
Fixes of KotW location.
Quest for oil can can be done by everybody in Arroyo now.

Rev.52
http://www2.xp-dev.com/sc/change/94227/52
Fixes of Brok and Xander Church location (by VaultTec)

Rev.51
http://www2.xp-dev.com/sc/change/94227/51
Fixed names loading (*Names.lst) with the dialogue editor. Changed extention of its config file.

Rev.50
http://www2.xp-dev.com/sc/change/94227/50
Fixed bug with duplicating of time events.

Rev.49
http://www2.xp-dev.com/sc/change/94227/49
Slight optimization of multi-threading.

Rev.48
http://www2.xp-dev.com/sc/change/94227/48
Fixed error in loading of games variables values.
Fixed loading of saves games in single player mode.

Rev.47
http://www2.xp-dev.com/sc/change/94227/47
Time events changes.
- function specification
void EraseTimeEvent(uint num)
changed to
bool EraseTimeEvent(uint num)
Return value shows whether deleting is done or the event isn’t found.
- Deleted the next functions:
uint CreateTimeEvent(uint beginSecond, string& funcName, Critter& cr, bool save)
uint CreateTimeEvent(uint beginSecond, string& funcName, Item& item, bool save)
uint CreateTimeEvent(uint beginSecond, string& funcName, Critter@[]+ critters, Item[]@+ items, bool save)
For migration just put the identificator to the critter or item.
Added the next functions for operating with event’s values:
bool GetTimeEvent(uint num, uint& duration, uint[]@+ values)
bool GetTimeEvent(uint num, uint& duration, int[]@+ values)
bool SetTimeEvent(uint num, uint duration, uint[]@+ values)
bool SetTimeEvent(uint num, uint duration, int[]@+ values)
Parametr “duration” - time till the event is done in seconds.
Return value means that operation is completed, error means that event wasn’t found.
These functions are thread-safe, 2 thread can’t operate with the events simultaneously.
Function GetTimeEvent blocks using (changing) of the event until the script is finished or until SetTimeEvent is called, which unblocks the event.
GetTimeEvent writes value to the end of the array, SetTimeEvent rewrites it completely.
When null is transmitted to values SetTimeEvent values are not changed.
- Event function specification can be of two types now:
uint e_FuncName(uint[]@ values)
uint e_FuncName(int[]@ values)
Fixed bug with crashing while loading 3ds file without texture coordinates.

Rev.46
http://www2.xp-dev.com/sc/change/94227/46
Added next fuctional for operating with files (class “file”):
- for data reading
uint8 file::readUint8()
uint16 file::readUint16()
uint32 file::readUint32()
uint64 file::readUint64()
In the case of error or the end of file it returns 0.
uint file::readData(uint count, uint8[]& data)
If data == 0 then program read all data till the end of the file beginning from the current position.
Read data is added to the end of the array.
The return value shows the real amount of read bytes.
- For data recording
bool file::writeUint8(uint8 data)
bool file::writeUint16(uint16 data)
bool file::writeUint32(uint32 data)
bool file::writeUint64(uint64 data)
bool file::writeData(uint8[]& data, uint count)
If count == 0 it records all data from an array.
In the case of error it returns false.
Fixed bug with incorrect output of zoom value on minimap.

Rev.45
http://www2.xp-dev.com/sc/change/94227/45
Extended range of game variables:
- local variable of location (LLVAR_);
- local variable of map (LMVAR_);
- local variable of item (LIVAR_).
When using them in dialogue values are taken from:
for location – current critter’s location;
for map – current critter’s map;
for item – current item in the main slot.
For operating with scripts use function GetLocalVar with transmitting of needed operator.
Server will delete unused variables of all types automatically.
Deleted server function uint DeleteVars(uint id).
Dialog editor was adapted to the last updates of game variables.
Added ability to define named value (DefineNames.lst) as a value for conditions and results.
Added missed translations.
Translations of commit history you can find here: http://www.xp-dev.com/forum/topic/3220

Rev.44
http://www2.xp-dev.com/sc/change/94227/44
Updated format of time output in dialogue with repairer-npc;
Added script for realization of npc-travellers on global map.(traveller.fos and Davine’s script in sf_common.fos);
Added npc-traveller explosives-seller Davine. Can be hired in GECK town;
Added trade mode “cash only” MODE_BARTER_ONLY_CASH;
Fixed bugs in maps structure on maps with holodiscs.

Rev.43
http://www2.xp-dev.com/sc/change/94227/43
Added setting in config which defines whether to bind logic threads to the core or let OS do it. In default it is enabled (1)
1. If zero then operating system automatically manage threads between cores, else affinity thread per core

LogicThreadSetAffinity=1
Continued work on multi-threading of game logics.

Rev.42
http://www2.xp-dev.com/sc/change/94227/42
Fixed crashing under certain conditions;
Fixed cycle counting per second.

Rev.41
http://www2.xp-dev.com/sc/change/94227/41
Fixed bug connected with the last update.

Rev.40
http://www2.xp-dev.com/sc/change/94227/40
Multi-threading of game logics is now supported. You can read about this in details on the forum;
Fixed path of recording/reading ban files;
Added seconds on the globalmap clock;
Decreased permissible length of text listener of channels and maps from 5 to 2 symbols;
Deleted global server function void DeleteNpcForce(Critter& npc);
Changed specification of method from
uint Location::GetMaps(Map@[]& maps) const
to
uint Location::GetMaps(Map@[]@+ maps) const
Now you can know the amount of maps on the location without recording them into array;
Added basic server command ~log (~37). It is intended for text listening of server log. Minimum access: administrator. For adding to text listening you should transmit arguement “+”, for disconnecting “-”;
Fixed basic creating locations command ~addloc (~16);
Upgraded basic command of looking player’s id using his name ~id (~4);
Changed specifications of global functions
void critter_attack(Critter& cr, Critter& target, ProtoItem& weapon, ProtoItem@ ammo, uint8 aim)
-> void critter_attack(Critter& cr, Critter& target, ProtoItem& weapon, uint8 weaponMode, ProtoItem@ ammo)
int to_hit(CritterCl& chosen, CritterCl& target, ProtoItem& weapon, int hitLocation)
-> int to_hit(CritterCl& chosen, CritterCl& target, ProtoItem& weapon, uint8 weaponMode);
Added variables for weapons which state their active mode
const uint8 Item::Mode
const uint8 ItemCl::Mode
4 high-order bits – sight (look Hit locations in _defines.fos),
4 low-order bits – mode (0 – primary, 1 – secondary, 2 – third);
Added macroses for convenience _WeaponModeUse, _WeaponModeAim, _WeaponModeMake в _macros.fos;
Added returnable value of the current mode in method GetSlotProto (urgent for weapons)
ProtoItem@+ Critter/CritterCl::GetSlotProto(int slot, uint8& mode) const;
Renamed parametr
#define ST_RATE_ITEM (102)
to
#define ST_HANDS_ITEM_AND_MODE (102)
value stored in it: XXXX00YY, where XXXX pid – unarmed blow, and YY – mode.
Changed way of the dialogue redirecting.
You should use returnable value of result function or say-mode instead of uint __ForceDialog;
Added specifications of functions:
uint r_FuncName(...), uint dlg_FuncName(...)
which are detected by server automatically;
Fixed bug with moving pushed players only in one direction;
Object pointers (derivatives arrays or class members)Location, Map, Critter, Item, GameVar can’t be saved in global varities now.
For scripts migration save their identificators (Location::Id, Map::Id, Critter::Id, Item::Id), addresing to the objects with (GetLocation, GetMap, GetCritter, GetItem).
Weapons prototypes don’t save curret mode of fire (in connection with multi-threading).
Changed specifications of class members ProtoItem
const uint8 Weapon_Skill, const uint8 Weapon_DmgType, const uint8 Weapon_Anim2, const uint16 Weapon_DmgMin,
const uint16 Weapon_DmgMax, const uint16 Weapon_MaxDist, const uint16 Weapon_Effect, const uint16 Weapon_Round,
const uint8 Weapon_ApCost, const uint8 Weapon_SoundId, const bool Weapon_Remove, const bool Weapon_Aim,
const uint8 Weapon_CurrentUse, void Weapon_SetUse(uint8 use) const
to
const uint16 Weapon_Skill_F, const uint16 Weapon_Skill_S, const uint16 Weapon_Skill_T,
const uint16 Weapon_DmgType_F, const uint16 Weapon_DmgType_S, const uint16 Weapon_DmgType_T,
const uint16 Weapon_Anim2_F, const uint16 Weapon_Anim2_S, const uint16 Weapon_Anim2_T,
const uint16 Weapon_DmgMin_F, const uint16 Weapon_DmgMin_S, const uint16 Weapon_DmgMin_T,
const uint16 Weapon_DmgMax_F, const uint16 Weapon_DmgMax_S, const uint16 Weapon_DmgMax_T,
const uint16 Weapon_MaxDist_F, const uint16 Weapon_MaxDist_S, const uint16 Weapon_MaxDist_T,
const uint16 Weapon_Effect_F, const uint16 Weapon_Effect_S, const uint16 Weapon_Effect_T,
const uint16 Weapon_Round_F, const uint16 Weapon_Round_S, const uint16 Weapon_Round_T,
const uint16 Weapon_ApCost_F, const uint16 Weapon_ApCost_S, const uint16 Weapon_ApCost_T,
const uint8 Weapon_SoundId_F, const uint8 Weapon_SoundId_S, const uint8 Weapon_SoundId_T,
const bool Weapon_Remove_F, const bool Weapon_Remove_S, const bool Weapon_Remove_T,
const bool Weapon_Aim_F, const bool Weapon_Aim_S, const bool Weapon_Aim_T
Added special macros for convenience (Weapon in _macros.fos)
_WeaponIsPrimaryAviable, _WeaponIsSecondaryAviable, _WeaponIsThirdAviable, _WeaponSkill, _WeaponDmgType,
_WeaponAnim2, _WeaponDmgMin, _WeaponDmgMax, _WeaponMaxDist, _WeaponEffect, _WeaponRound, _WeaponApCost,
_WeaponSoundId, _WeaponRemove, _WeaponAim, _WeaponModeUse, _WeaponModeAim, _WeaponModeMake
Mapper updates:
string@ MapperObject::PicMap/PicInv now return prototype’s picturename if other isn’t set up;
Added const uint16 MapperMap::Width, const uint16 MapperMap::Height for storing current map sizes;
Fixed function GetMapFileNames(...).

Rev.39
http://www2.xp-dev.com/sc/change/94227/39
Slight fixes of quests in Den, Klamath
Improved closed location in Redding

Rev.38
http://www2.xp-dev.com/sc/change/94227/38
Slight fixes of quests from string “Guard”;
Added services for guardsmen: doc. Troy can heal player; give stimpacks; Valery repairs items;
Added universal repairing script for npc (repairer.fos). E.g. in the dialogue vc_valery.foldg
3 new special encounters with holodiscs;
Several deleted functions from stdlib are returned.

Rev.37
http://www2.xp-dev.com/sc/change/94227/37
Fix of calculating amount of dead NPC on location when necessity of attack is being determinated.
Fix of amount loss allies counter when finishing the quest.
Output of messages to log is disabled in quest “The drill”.
Fix of limit of times amount quest “Dangerous hunt” can be done.
Descriptions of deleted maps were returned, which made server restart impossible without saves clearing.

Rev.36
http://www2.xp-dev.com/sc/change/94227/36
Fix of Hartman’s dialog. The wrong requirement was deleted.

Rev.35
http://www2.xp-dev.com/sc/change/94227/35
New quests from string “Guard” in Vaultcity
- Vaultcity guard. Third trial. Drill.
- Easy walk.
- Go there, don’t know where.
- Dangerous hunt.
- Diplomatic courier.
Fix of caravan’s and patrol’s departure time. Relative departure time was substituted for absolute.
Added ability of caravan’s instant departure from the dialog.
Fix of items that were generated in encounters 0 in number. (It was impossible to throw out them)
Fix of quest “Hub bibliography”. Player need 7 books to gain reputation instead of 6.

Rev.34
http://www2.xp-dev.com/sc/change/94227/34
- Maps fixes
- Fixed reaction of BG guards on explosives activation

Rev.33
http://www2.xp-dev.com/sc/change/94227/33
- Graphics fixes
- Non-used files were deleted
- Original map of BG was returned

Rev.32
http://www2.xp-dev.com/sc/change/94227/32
Private car parking in geck town is disabled till the problem with car boot is solved.

Rev.31
http://www2.xp-dev.com/sc/change/94227/31
Added first quests of string “Guardsman”, VaultCity. (Clearing of server saves is needed)
Added template for making quests-combats with npc. (fighter_quest.fos, e.g. “Guard. First trial.”)
Added ability to take quest “Hub bibliography” again if player failed to finish it at previous time.
Fixed incorrect condition in Dappo’s dialogue in quest “Lot of defective rifles”.
Added verification of addressee in “Postman” quest, now player can’t bring letter to any npc of type stated in the letter.

Rev.30
http://www2.xp-dev.com/sc/change/94227/30
Deleted not used MSG files – FOSCRIPT.MSG.

Rev.29
http://www2.xp-dev.com/sc/change/94227/29
Updates of way of making records into log.
Added ability to look the name of the thread which made a record. Option in config – LoggingThread. You can also turn on output in the server application using “Logging with thread”.
Changed format of time output. Now it is not “time in ms”, but “hours:minutes:seconds:milliseconds”.

Rev.28
http://www2.xp-dev.com/sc/change/94227/28
Fix and formatting.

Rev.27
http://www2.xp-dev.com/sc/change/94227/27
Fixed mistakes in calculating karma in quest “Returning of the fugitive”.

Rev.26
http://www2.xp-dev.com/sc/change/94227/26
Changes on Church of Brok and Xander location:
- fixed Preacher, Scientist, repairer Alechandro, Cook, Mickey dialogs;
- quests work correctly now;
- repairer Alechandro identifies items correctly;
- ability to record the information about Church was added (after completing Preacher’s quest).

Rev.25
http://www2.xp-dev.com/sc/change/94227/25
Activating time of dynamite was fixed.

Rev.24
http://www2.xp-dev.com/sc/change/94227/24
New algorithm of generating of pseudorandom variables was added (Mersenne twister). Previously was standart C algorythm srand/rand.

Rev.23
http://www2.xp-dev.com/sc/change/94227/23
Energy barrier on the entrance of GECK town was improved.

Rev.22
http://www2.xp-dev.com/sc/change/94227/22
Fixed client crashing on start. For preventing this bug in future the control system of versions of cashed scripts in the client has been added.

Rev.21
http://www2.xp-dev.com/sc/change/94227/21
Fixed problem when it was impossible to add players to GECK town after removing them with option “Clear list”.

Rev.20
http://www2.xp-dev.com/sc/change/94227/20
Fixed cooldown of the Postman quest.

Rev.19
http://www2.xp-dev.com/sc/change/94227/19
Wrongly deleted dialogs are returned.

Rev.18
http://www2.xp-dev.com/sc/change/94227/18
Fixes
Deleted not used files.
Fixed errors when player removes child killer karma additional times.
Fixed error with incorrect name of script of map_v15_village map.
Added output of message of increasing trade skill when finishing “Farm vermins” quest to the log.
Weakened the giant wasp in the quest in Modoc.

Rev.17
http://www2.xp-dev.com/sc/change/94227/17

AngelScript was updated to rev.684, v. 2.19.2
Added global variables to the client: bool __ShowTile, __ShowRoof, __ShowItem, __ShowScen, __ShowWall, __ShowCrit, __ShowFast, __ShowPlayerNames, __ShowNpcNames, __ShowCritId.

Deleted limit of min. time of using Map::SetLoopTime (it was 1 second).
Fixed registration of the global variables of string type (pragma globalvar).
Fixed using reserved global variables string type.

Added global variables to mapper: string __ClientPath, __ServerPath.

Deleted constant modificators in client from string CritterlCl::Name, CritterlCl::Lexems.
Added variable CritterlCl::NameOnHead, which if is not empty, outputted above critter’s head.

Rev.16
http://www2.xp-dev.com/sc/change/94227/16
Fixed reclearing of child killer status.

Rev.15
http://www2.xp-dev.com/sc/change/94227/15
Fixes:
- Fixed names of Giant Wasps and bugs in kills statistic;
- Reduced requirements of amount of killed mobs and intelligence in Broken Hills quests (bh_marcus.fodlg, bh_super.fodlg);
- Reduced requirement of intelligence for “Fresh blood” quest (vc_doctor_troy.foldg);
- Fixed possibility of gaining experience multiple times in “Cabbage” quest in Modoc (mod_farmer_q.fodlg);
- Player receives reputation in NCR for quest “True cowboy” even if only one Brahmin is brought (ncr_felix.fodlg);
- Michael’s miniquest in NCR can be done by every player only once (ncr_michael.fodlg);
- Added requirement of 16 level for “buggy” quest (ncr_ratch.fodlg);
- Fixed amount of gaining experience when player rejects gratuity in “Postman” quest (q_mail_reciever.fodlg);
- Fixed cooldown of “Postman” quest;
- Cave mobs – spawn point near the exit grid was removed in the smallest cave;
- Fixes of several dialogues in Vault City;
- New quest – “Fugitive returning” – when finished, status “Child killer” is removed. Hubbologist in Redding bank offers this quest;
- New quest “Farm vermines”. It is offered by Joe in Modoc (mod_joe.fodlg);
- Fixed energy barrier in GECK town;
- Added computer for breaking of energy barrier inside the town;
- Added car lots for GECK town citizens (not more than 2);
- Added ability of clearing of citizens list by town leader using the terminal.

Rev.14
http://www2.xp-dev.com/sc/change/94227/14
Update for Notepad++ (Syntax_highlighting, autocomplete, function parameters hints)

Rev.13
http://www2.xp-dev.com/sc/change/94227/13
First stable version.h3. Your title here...

Forum Topic Options

Entry has no comments

You do not have sufficient permissions to comment

5 months ago
cvet picture

Title: Update log in EnglishUpdate log in English (revisions 13 - 199)

Description: Rev.199 http://xp-dev.com/sc/change/94227/199 Updated libraries for scripts compilation. Rev.198 http://xp-dev.com/sc/change/94227/198 Mistake in tanker captain's dialog which caused impossibility of finishing "Lost punks" quest was fixed. Mistake in determination of quest caravan's path was fixed. AHS-7 dialogue was fixed, killed children counter now works correctly. Rev.197 http://xp-dev.com/sc/change/94227/197 Fixes connected with server crashing/hanging because of the last updates. Mechanics of moving on the global map was fixed – normal vehicles tear and wear, fuel consumption, moving leaps and notification of breakdown were fixed. Rev.196 http://xp-dev.com/sc/change/94227/196 Outdated parts of the global map’s mechanism were deleted on the client’s side. Rev.195 http://xp-dev.com/sc/change/94227/195 Some fixes of hangings on connection to server. Mechanism for operating with graphic images on server’s side was added. It is necessary for convenient operating with data arrays which are presented as a picture. At the present time this is used for determining the landscape when moving on the global map. For operating with the mechanism the next functions were added: bool LoadImage(uint index, string@+ imageName, uint imageDepth, int pathType) – image loading; uint GetImageColor(uint index, uint x, uint y) – identifying pixel’s color; uint index – image’s number, which is currently operated, for the list see Game images in _defines.fos; string@+ imageName – file’s name, the only format is PNG, if null – the current image is deleted; uint imageDepth – depth of the image which is being created, 4 – ARGB, 3 – RGB, 2 – GB, 1 – B. It is needed for optimization operations with memory to give no memory which is not used (you can see the amount of given memory for the images in server’s window Memory -> Images); int pathType – pat type (see Paths in _defines.fos); uint x, y – pixel’s coordinates. Look for examples in functions void WorldmapInit(), uint GetGlobalMapRelief(uint x, uint y) скрипта worldmap.fos. All calculations connected with the global map are performed now only on the server’s side without duplication on the client’s side. Reserved functions global_process, global_invite were moved from main.fos to new script global_group.fos. Specification of reserved function global_process was changed and appropriately client’s processor CRITTER_EVENT_GLOBAL_PROCESS – current, destination coordinate types and speed were changed from integer to real number. global_process call with parameter #define GLOBAL_PROCESS_KICK (7) was added. It determines whether group leader or player himself wants to leave the group. The next functions were added for operating with locations on the global map: uint GetVisibleLocations(uint16 worldX, uint16 worldY, uint radius, Critter@+ visibleBy, Location@[]@+ locations) – it returns visible locations in certain radius. If parameter visibleBy is set, then the critter’s ability to see the location will be taken into account.; uint GetZoneLocationIds(uint16 zoneX, uint16 zoneY, uint zoneRadius, uint[]@+ locationIds) – it returns locations identificators which belong to the certain areas. __GmapGroupX/Y -> __GmapGroupCurX/Y, __GmapMoveX/Y -> __GmapGroupToX/Y; Удалены float __GmapSpeedX/Y were renamed; Universal speed parameter float __GmapGroupSpeed was added. Global variable uint __EncounterTime = 5000 was moved from the engine to scripts. Global variable which defines the frequency of calling global map’s processor GLOBAL_PROCESS_MOVE was added to the engine. Rev.194 http://www2.xp-dev.com/sc/change/94227/194 Variable __MaxLifeLevelSoftCap was added, it determines hitpoints rise per level. If it is equal to 0, then there’re no limitations, otherwise when character gets level = __MaxLifeLevelSoftCap, he won’t get more hitpoints per level . (For TLA __MaxLifeLevelSoftCap = 36). Dialogue with pay off Redding caravan fails was fixed. Chemist dialogue in SF who sells chitin armor was fixed. Locks for chests on Syd and Nancy’s quest location are generated randomly for each map. Output of errors to log in hostile_location_quest.fos script was switched off. Function of determination access rights when passing Redding gates was fixed (previously invalid permissions were accumulating in persons who have access list). Quest “Drill” script was fixed, now excess records in AnyData are deleted correctly after passing or failing the quest. Item “Chitin armor recipe” was restored, it was deleted by mistake. Rev.193 http://www2.xp-dev.com/sc/change/94227/193 Russian text output into log was fixed. Error appearing on starting single mode with enabled server GUI was fixed. One more fix of client-server network interaction (attempt of fixing hangings while downloading chache). Rev.192 http://www2.xp-dev.com/sc/change/94227/192 Bug with visualisation of other playing movement was fixed. It appeared in 161 revision. Rev.191 http://www2.xp-dev.com/sc/change/94227/191 Operation with network interaction was optimized, the processor will be loaded less when sending large volumes of information (e.g. cache transmitting). Models, which are situated in separate folders, loading was fixed (slashes are replaces by dots). Rev.190 http://www2.xp-dev.com/sc/change/94227/190 Cache loading was fixed. Cache situation was changed on the client’s side and now a separate folder for cache is created for every server. DataFiles.cfg situation was fixed. For critters in Mapper with Cond == 3 (dead) now automatically parameter ST_REPLICATION_TIME is set to -1 (if it is equal to 0) i.e. nonreplicated. And for Cond == 2 (knockout) big cooldown for getting up is set. For “dictionary” class was added method uint keys(string@[]@ keys) const which returns all the keys and their quantity. Now it is checked for presence of palette with the same name with the FRM file which is loading. If there isn’t one, then default is used (like now). Rev.189 http://www2.xp-dev.com/sc/change/94227/189 Extra system for detecting launched client’s windows was added. Bug with impossibility of reading some files when one copy of client/mapper/server is launched. Check for ITEM_GAG on detection of finishing REASON_HEX_BUSY_RING plan (when critter is surrounded by impassable objects or critters) was added. Ground and roof tiles offset was fixed in FOnline geometry. Rev.188 http://www2.xp-dev.com/sc/change/94227/188 Support of graphic formats MOS and BAM from Ininity Engine (Boldur’s Gate, Icewind Dale, Planescape Torment) was added. It is possible to define the number of played cycle or frame. To define cycle’s number in file name parameters (“S”) – define its index and to define the frame add dash and frame’s index. Examples: fileName$5.bam – load fileName.bam with frames for cycle № 5; fileName$1-4.bam - load fileName.bam with frame № 4 with cycle № 1; fileName.bam - load fileName.bam с with frames for cycle № 0. Rev.187 http://www2.xp-dev.com/sc/change/94227/187 Some actions were performed to fix server's hanging up. Rev.186 http://www2.xp-dev.com/sc/change/94227/186 Some actions were performed to fix server's hanging up. Not adding function's name to log was fixed. Levelcap was removed in the scripts. Rev.185 http://www2.xp-dev.com/sc/change/94227/185 NO_LOOT and NO_DROP mode were switched off for the giant bugs. Rev.184 http://www2.xp-dev.com/sc/change/94227/184 In connection with porting the server (*nix and 64bit) the next changes were made: Operating with net was rebuilded. Libevent library is used. http://monkey.org/~provos/libevent/ http://en.wikipedia.org/wiki/Libevent http://ru.wikipedia.org/wiki/Libevent Operating with GUI was remade. FLTK library is used. http://fltk.org/ http://en.wikipedia.org/wiki/FLTK http://ru.wikipedia.org/wiki/FLTK Operating with threads was remade. Pthreads is used http://sources.redhat.com/pthreads-win32/ (Windows port) http://en.wikipedia.org/wiki/Pthreads http://ru.wikipedia.org/wiki/Pthreads Changes are serious and can cause unstable work. Memory leak when loading maps was fixed in server. Loading maps with items in containers/inventories in mapper was fixed. Don’t use mapper of 171-182 revisions for editing old maps. Now parameters values for critters in mapper are applies only if they are not equal to zero. Initially value is taken from defaults (from .fopro), then from the map’s data if !=0. Critter’s names in mapper are now taken only by prototype number without accounting dialogue’s number. Old specification of Log function which was changed in 174 revision was returned to native scripts. Server’s GUI now ‘Courier New’ type, option in config was deleted. Option for changing server’s window size and its elements was added GUI size modifier GUISize=0 E.g. if GUISize=-50 then server’s window and all its elements will be 50% smaller, if GUISize=30 then 30% larger. Log in server window is unrolled as defaults. Also, the information from the log can be copied and scrolling is stopped if it is focused. Client’s crashing when playing items animation was fixed. Paths make_tla.bat were converted to Visual Studio 2008 (9.0). Rev.183 http://www2.xp-dev.com/sc/change/94227/183 Lo Pan’s mercenaries call leader’s name correctly now. Nancy and Sid’s quest location now is deleted after leaving it (previously it wasn’t deleted and hanged in the memory). SF docs were excluded from NoPvP locations. Letters generation in Postman quest was fixed. Holodisk with combat robot’s video recordings can be given to Buster now. Shaneman’s documents now have description in “Diplomatic mission” quest. A dialogue between bar clients in outer Vault City was added (wipe is required). Mini quest “Seduce art” was added in Klamath (wipe is required). Rev.182 http://www2.xp-dev.com/sc/change/94227/182 NPC-travellers will no longer take dead characters to the global map. Atoll was removed from Eli’s destinations. Skill displaying when increasing it through the dialogue was fixed. The mistakes in the newcomer’s dialogues in “Anger” quest were fixed. The mistake in mercenaries script which caused the leaving the employer earlier was fixed. Rev.181 http://www2.xp-dev.com/sc/change/94227/181 Reading nicknames from ignor list file was fixed. Console command for adding a player to the ignor list was added ~ignore PlayerName. Rev.180 http://www2.xp-dev.com/sc/change/94227/180 Mechanism of reputation calculation was switched off due to its incorrect work. Now all the list will be visible, but will work correctly. Rev.179 http://www2.xp-dev.com/sc/change/94227/179 Network protocol bug which caused short hangs up was fixed. Client's script was fixed which could cause null parameter call. Rev.178 http://www2.xp-dev.com/sc/change/94227/178 Superfluous rifles on offer were fixed. Rev.177 http://www2.xp-dev.com/sc/change/94227/177 Game version increment. Rev.176 http://www2.xp-dev.com/sc/change/94227/176 Sequence of handlers calling was fixed MAP_EVENT_OUT_CRITTER, MAP_EVENT_IN_CRITTER now the first one is called initially, then the second On intro_init map static lighting was set. Group moving indication on the global map was fixed (previous update bug). Rev.175 http://www2.xp-dev.com/sc/change/94227/175 Console command ~globalmap was added. It moves player to global map. It works only on noPvP maps for players not in combat mode and with noPvP mode turned on. In caravans and travellers scripts functions of moving to final destination's map were updated. Rev.174 http://www2.xp-dev.com/sc/change/94227/174 Porting game to Linux was started. Also supporting of 64 bit platforms. Client’s native libraries are now transmitted automatically. They are stored in ‘Client/data/cache’. Folder with scripts ‘Client/data/scripts’ is not used anymore and was deleted. To the server’s folder library STLPort (http://www.stlport.org/) was added. Client’s libraries are now compiling with it’s help. It is connected with porting to other platforms. Additional methods of moving were added to critters in server scripts bool Critter::TransitToMap(uint mapId, uint16 hexX, uint16 hexY, uint8 dir, bool withGroup) bool Critter::TransitToMap(uint mapId, int entireNum, bool withGroup) bool withGroup – when moving from global map to local map, all the group will be moved. Regular TransitToMap (without bool withGroup) work as with withGroup == false. Previously they worked as как withGroup == true, what led to moving all the group when replicating, if dead critter was on the global map. 3d critters were switched off. For switching on see PLAYERS_3D in _defines.fos. Constants for operating with game constants were added(see 168 revision, http://www2.xp-dev.com/sc/change/94227/168). Specification for the reserved function Log in native scripts was changed. Now the first returned parameter is function’s name from which it was called. Rev.173 http://www2.xp-dev.com/sc/change/94227/173 Traders were added to Atoll and Redding. Barterground was moved to position 690:760 as it isn’t needed anymore in north-west region due to noPvP mode. Locations “BiX Church” and “Atom’s Church” were moved to special encounters class. Fixed rewards in some quests. Maps fixes. Biscuit on Modoc can be received only once now (as in Fallout 2). Rev.172 http://www2.xp-dev.com/sc/change/94227/172 noPvP mode was activated on some TLA maps. It will be used on the next TLA session. For switching it off on your server set global variable __NoPvpMaps=false; in script config.fos Ability of making a list of ignored players, it works similarly NameColorizing. It needs manual adding nickname of ignored player to IgnoreList.txt For refreshing the list of ignored players in game use console command ~ignorelist. Rev.171 http://www2.xp-dev.com/sc/change/94227/171 Derivative objects system for mapper was updated. When placing base object, all his derivatives are placed automatically. If one object from the group is being selected - all others are being selected too. If the prototype or position of the derivative object is changed, changes will be automatically applied by mapper or server when loading. For the example see cars, at the present time they have one derivative object – their trunk. Now when placing the car, it will be created automatically, also it will be moved with it and if base or derivative object is deleted, all the group will be deleted too. The system of moving selected objects in mapper was upgraded. Now in hexagonal system the selected objects will be moved without being tearing apart. Also the selected objects, when being moved, will stop at the map’s edge, so they won’t mix into a pile. The problem with detecting whether items in container belong to their inventory or container. Previously items were placing on the hex and if you place two containers on the same hex, all the items will stack in one container. Now it is fixed. Item::TrapValue initialization through mapper was fixed. If rewriting is performed on prototypes loading, alert is displayed. It was added for items and critters prototypes. In object’s structure in mapper was deleted field const bool Item_InContainer and added const uint UID, ContainerUID, ParentUID, ParentChildIndex Rev.170 http://www2.xp-dev.com/sc/change/94227/170 Now server doesn't block client's libraries while working. Previously you needed to stop the server to replace client's dll (Server/scripts/fonline_tla_client.dll). Rev.169 http://www2.xp-dev.com/sc/change/94227/169 Combined content of MASTER.DAT + CRITTER.DAT. Size - 201 MB! Rev.168 http://www2.xp-dev.com/sc/change/94227/168 Client and Mapper are no longer bounded with Fallout’s data files - MASTER.DAT and CRITTER.DAT. These files content is combined (excess data is deleted) and packed into fallout.dat (will be uploaded with the next update) and defined in DataFiles.cfg. Global variables string __MasterPath, __CritterPath were deleted. The configurator (FOConfig.exe) is updated accordingly fixes above. Critter’s lighting in the death moment and flat items lighting was fixed. To server/client/mapper scripts the next functions for operating with the constants (*Names.lst) were added: int GetConstantValue(int constCollection, string@+ name) – identifying constant’s value by the name; string@ GetConstantName(int constCollection, int value) - identifying constant’s name by the value; void AddConstant(int constCollection, string@+ name, int value) – adding separate constant to the collection; bool LoadConstants(int constCollection, string@+ fileName, int pathType) – loading/reloading the collection; int constCollection – collection’s number, see Constants collections in _defines.fos, also you can define your own collections; string@+ name – constant’s name; int value - constant’s value; string@+ fileName, int pathType – collection file’s name and folder path. Rev.167 http://www2.xp-dev.com/sc/change/94227/167 Bug with error of name/password in login menu if it exceeds 12 symbols was fixed. Screen centering on the player when loading map in right-angle geometry was fixed. Copying objects in Mapper from smaller map to the bigger one was fixed. Mapper hanging up when Sleep < 0 was fixed. Crashes when loading ART files were fixed. Principe of transparency defining with parameter ‘”t” was changed, now it isn’t equal to 255 – paletteIndex, but to max(R, G, B). Rev.166 http://www2.xp-dev.com/sc/change/94227/166 System of operating with items prototypes was updated (ProtoItem). Ability to add your own fields to proto class was added. New pragma ‘bindfield’ is used for this, e.g.: #pragma bindfield "const int ProtoItem::MyValue -> 400" it means creation of field MyValue of int type with offset 400 (considering thas int is 4 byte, it will occupy bytes 400, 401, 402, 403). Totally for user’s fields 500 bytes are available. Field is equal to zero as defaults, but it is possible to change the value by defining value (in the current case MyValue=111 or MyValue=SkillBigGuns) in proto file (.fopro), number (if it contains only numbers) or path to the file (it is identified by the presence of ‘/’ or ‘\’ symbols). For now fields which are not used by the engine are taken out to scripts, see _defines.fos Item prototypes fields. Changes in structure ProtoItem. All next methods are deleted uint8 GetType() const uint16 GetProtoId() const bool IsGrouped() const bool IsWeared() const bool Container_IsGroundLevel() const List of new fields which are registered in the engine (part of them is renamed, some were deleted) http://pastebin.com/8R4QkP3h The other fields are registered with #pragma bindfield in _defines.fos. Now all items can stack and wear out, for this Boolean fields are added to the prototypes bool ProtoItem::IsStackable bool ProtoItem::IsDeteriorable Item type ITEM_MISC_EX was deleted, it is combined with ITEM_MISC (miscex.fopro is deleted). Vehicles are taken out to separate type ITEM_CAR (car.fopro was added). Also now user can define any type numbers for the items. Former fields uint MiscEx_StartVal0..9 of the start values for Item::Val0..9 were moved to common area named StartValue0..9, and with these values Item::Val0..9 are initialized. Metod bool Item::IsCar() const was deleted, instead of it use GetType()==ITEM_CAR. The next methods are renamed bool Item::IsGrouped() const -> bool Item::IsStackable() const bool Item::IsWeared() const -> bool Item::IsDeteriorable() const The next fields are renamed uint16 Item/ItemCl::BrokenWear -> Item/ItemCl::Deterioration uint16 Item/ItemCl::CarDeteoration -> Item/ItemCl::CarDeterioration uint8 MapperObject::Item_DeteorationFlags -> uint8 MapperObject::Item_BrokenFlags uint8 MapperObject::Item_DeteorationCount -> uint8 MapperObject::Item_BrokenCount uint16 MapperObject::Item_DeteorationValue -> uint16 MapperObject::Item_Deterioration Mechanism of affiliated objects was moved for common use. Previously it was available only for vehicle’s trunk. One object can have up to five derivatives. Numbers of the derivative objects are defined in uint16 ProtoItem::ChildPid_0..4. By creation of base object, derivatives are created automatically. For now Mapper doesn’t create affiliated obkects automatically, but it will be fixed in further. For setting the place of situation, special field ChildLines_0..4 is used (former MiscEx.Car.Bag_0..1, see below by recording format). Also it is possible now to define automatic blocking for any objects, not only for vehicles – field BlockLines (former MiscEx.Car.Blockers). Recording format for Child/BlockLines – XYXYXY..., where X is direction number (0..5/7), Y is the amount of steps (1..9) in this direction (previously for vehicle’s trunk for another recording format - XXXX...). Maximum amount of steps for BlockLines – 50, for ChildLines – 6. For operating with derivative objects use methods Item@+ Item::GetChild(uint childIndex) const (бывшая Item@+ Item::CarGetBag(int numBag)) bool Map::CheckPlaceForItem(uint16 hexX, uint16 hexY, uint16 pid) const (bool Map::CheckPlaceForCar(uint16 hexX, uint16 hexY, uint16 pid) const) Fields renaming affected lots of scripts, be attentive. Old proto format is converted to the new one automatically, but Object Editor (ObjectEditor.exe) still operates only with old format. It will be fixed soon. To replication.fos and entires.fos scripts the influence of right-angled geometry was added. Script main_planes.fos is formatted as a separate module. All pragmas were move to the end of _defines.fos. Drop of FPS when switching on view/attack borders was fixed. Rev.165 http://www2.xp-dev.com/sc/change/94227/165 Fix for the ASCompiler. Rev.164 http://www2.xp-dev.com/sc/change/94227/164 Changed ASCompiler output format to “filename(linenumber) : message”. Such output is recognized by a number of IDEs and allow jumping to the code by a double-click on the output line. Rev.163 http://www2.xp-dev.com/sc/change/94227/163 Tabs management system was added to Mapper. Now one tab can have numerous subtabs. Tabs names and its filling is defined in mappers scripts. But some tabs already have initial filling. Item – items prototypes by defaults (items.lst); Tile – tiles by default, search is performed in ‘art/tiles/’; Crit – critters prototypes by defaults (critters.lst); Fast – displays often used objects, initial state is defined in scripts (InitializeTabs in mapper_main.fos); Ign – Ignore, shows ignored objects which are not shown on the map; Inv, Msg, Map – special tabs which have nothing to do with the mechanism, but it is possible to change its name throug TabSetName (see below). The tab can have subtabs only of one type – tiles, critters or items (displayed in priority order). For items and critters the subtab’s name is chosen by user, for the tiles it is performed automatically. The lowest subtab “all” contains all prototypes (or tiles) on a list above. For activation the menu of tab choosing – perform a double click on it. If positions are numerous then use mouse wheel for navigation (scroll speed: normal – 4, with pressed shift – 8, with pressed ctrl – 20, with pressed alt – 50). For tabs management use scripts, functions Tab* uint TabGetTileDirs(int tab, string@[]+ dirNames, bool[]+ includeSubdirs) uint TabGetItemPids(int tab, string@+ subTab, uint16[]@+ itemPids) uint TabGetCritterPids(int tab, string@+ subTab, uint16[]@+ critterPids) void TabSetTileDirs(int tab, string@[]+ dirNames, bool[]+ includeSubdirs) void TabSetItemPids(int tab, string@+ subTab, uint16[]@+ itemPids) void TabSetCritterPids(int tab, string@+ subTab, uint16[]@+ critterPids) void TabDelete(int tab) void TabSelect(int tab, string@+ subTab) void TabSetName(int tab, string@+ tabName) int tab – tab’s number (see Tabs in _mapper_defines.fos); string@[]@+ dirNames – folder’s names for tiles searching; bool[]@+ includeSubdirs – turn on search in subfolders; string@+ subTab – subtab’s name; uint16[]@+ itemPids – item’s prototype numbers array; uint16[]@+ critterPids - critters’s prototype numbers array; string@+ subName – tab’s name. Global variable was added bool __SplitTilesCollection = true It defines whether tiles should be divided into groups in the folders. The group is defined as a string in the file’s name before the first number (e.g. abc12.png - group abc), if the number is absent, then group is defined as '<other>'. In connection with these changes, the global functions are deleted uint GetFastPrototypes(uint16[]@+ pids) void SetFastPrototypes(uint16[]@+ pids) Other updates. Fixed incorrect work of server/client which caused some bugs. Global variable int __GeometryType was added to _defines.fos for the indication of chosen geometry. See constants in _defines.fos Geometry. Depending on its value, tab with Tactics and Arcanum is added. Ability to work with file names which include spaces is added. When loading ART files, it is possible to flip them vertical or horizontal. Parameters in the file name - ‘v’/‘V’ and ‘h’/‘H’. When loading SPR file, if you define in changing color parameter – layer’s number -1, then the modificator will be applied to all four layers. Rev.162 http://www2.xp-dev.com/sc/change/94227/162 Quest perks “Midnight Child”, “Nosderatu Blood” were added (Modoc, “Night’s tender”). Now new home position is set for NPC-travelers (Devin, Eli) when they enter new location. Female characters now can finish quest of removing childkiller status. Allies HP and resistances were increased in “Dangerous hunt” quest. Also a simple dialogue is added to them. The forged letter is now removed from the inventory when finishing quest “Forgery”. Edvin in Klamath tells with a popup phrase when starting gathering items. A delay was added to the prisoner giving the cues in “Ernst Telman” quest. Ability of intimidating the NPC visitor if it’s a woman was deleted in quest “Wrath”. Barcus now reacts with popup phrases to the futher meetings with the player who have done quest “Amnesty for Joshua”. Upon the receiving lieutenant rank of Vaultcity’s Guard, player is awarded with a black combat armor. In “Diplomatic Courier” quest time (24 hours) which Sheiman takes for the thoughts now is calculated correctly. Upon finishing this quest, player receives +1 reputation in NCR. Sell price of the buggy which player receives upon finishing the quest in NCR was set to zero. Dialogue launch when player uses an antidote in quest “Poisoned Regulator” in Redding was fixed. Players who gained Vaultcity citizenship now can trade with Randal with no restrictions. Reputation calculation in quests “Real Cowboy”, “Hub Bibliography” in NCR was fixed. If player refuses the reward in “Hub Bibliography” quest, he gains +2 reputation (was +1) when he delivers 5 books. Increasing raider’s resistances and skills every new attack on NCR was switched off. Ability of crafting and buying chitin armor was added. Giant beetles drop chitin. Items with ITEM_GAG flag deletion upon player’s death was fixed. Rev.161 http://www2.xp-dev.com/sc/change/94227/161 Ability to customize game geometry was added, either the support of isometric projection with quadrangles was. For customization use global variables bool __MapHexagonal – isometry type: true - hexagonal, false - quadrangular; int __MapHexWidth – hex width; int __MapHexHeight – hex height; int __MapHexLineHeight – hex line height; int __MapTileOffsX/Y – ground tiles offset; int __MapRoofOffsX/Y – roof tiles offset; int __MapRoofSkipSize – amount of hex per one roof tile (necessary for its correct hiding); float __MapCameraAngle – 3d model rendering angle; bool __MapSmoothPath – path smoothing when moving; string __MapDataPrefix – path and prefix for the geometry files. Operational sprites for geometry are situated in art/geometry/. Quadrangular isometry use 8 directions, hexagonal – 6. In script config.fos in function InitializeGeometry(), necessary adjustments for 3 games (Fallout1/2, Fallout Tactics and Arcanum) are added. This function can be called in server, client and mapper scripts, as all three of them need geometry information. Global variables uint __LookDir4, uint __LookSneakDir4 were added for 8-directional geometry. Fixed Tactics SPR files loading. Mode MODE_NO_TALK was added. It affects ability to talk and appearance of the icon in the context menu. Double click on hex, affecting avatar’s moving, was fixed. Creation of descriptions for critters prototypes (FODLG.MSG) with high identifiers was fixed. Image of elephant gun was added in 3d. Rev.160 http://www2.xp-dev.com/sc/change/94227/160 Fixed a bug with server and client communication. Fixed a bug with wrong sprites display. Rev.159 http://www2.xp-dev.com/sc/change/94227/159 Documentation's update, mistakes fixes. Rev.158 http://www2.xp-dev.com/sc/change/94227/158 Script start_server_client.fos was renamed to config.fos and now it isn't simply pasted into function start(), but presented as a separate module with function InitializeGame(). Macros for operating with time were moved from _macros.fos to separate module _time.fos. Slight fix of drugs.fos. Rev.157 http://www2.xp-dev.com/sc/change/94227/157 Errors messages in server log when operating with functions GetPlayerName/GetPlayerId were removed. Also GetPlayerName returns null now, if the player wasn't found. Bugs of reputation calculation were fixed. Rev.156 http://www2.xp-dev.com/sc/change/94227/156 Ability to affect the colors when loading Tactics sprites was added. To make color shift, define necessary values in file name’s parameters (“$”). Format: fileName$[index,r,g,b]animName.spr (can be any amount of shifts […]) where index – body part’s number (0 - miscellaneous, 1 - skin, 2 -hair, 3 - armor); r,g,b – color shift for the each component, can be negative Example: someSprite$[2,50,-30,-20]anim1.spr – load sprite someSprite.spr, with animation anim1 and hair’s color shift in RGB (50,-30,-20). Additional flags for operating with color’s shift were added for Tactics critters (_animation.fos, animation.fos). Use macros ANIM1_COLOR_SKIN(index), ANIM1_COLOR_HAIR(index), ANIM1_COLOR_ARMOR(index) for values defining. Index can take on value from 0 to 15, appropriate to it values of color shift look in array colorOffsets of animation.fos script. For ability testing you can use text function void ColorOffset(Critter& cr, int skin, int hair, int armor) in test.fos. Rev.155 Some native structures were fixed. Rev.154 http://www2.xp-dev.com/sc/change/94227/154 AngleScript is updated to revision 822. Ability of sorting is added to scripts arrays Ascending sort void array::sortAsc() void array::sortAsc(uint index, uint count) Descending sort void array::sortDesc() void array::sortDesc(uint index, uint count) For user’s classes sorting realize opCmp method http://www.angelcode.com/angelscript/sdk/docs/manual/doc_script_class_ops.html Vehicle animations on the global map and item’s animations in Mapper are fixed. Some points in operating with critter’s animations are fixed (animation.fos). Global variable __GmapActive is fixed. Global variable for setting min. offline time after that client will completely exit from the game was added. uint __MinimumOfflineTime = 180000; // 3 minutes Rev.153 http://www2.xp-dev.com/sc/change/94227/153 Additional constants for operating with Chosen's actions were updated (Get/SetChosenActions, for CHOSEN_USE_ITEM). Rev.152 http://www2.xp-dev.com/sc/change/94227/152 Additional constants for operating with Chosen's actions were added (Get/SetChosenActions). Rev.151 http://www2.xp-dev.com/sc/change/94227/151 Bugs with incorrect files's names path detecting were fixed. Rev.150 http://www2.xp-dev.com/sc/change/94227/150 3d models loading was fixed. 3d models rendering to sprites was fixed. Critters animations were fixed (death in 2d and 3d modes). Shift calculation for some models was fixed. SAY_DIALOG/SAY_APPEND mechanics was fixed. (by Atom) Server’s config loading in Mapper was fixed. (by Atom) File HashNames.lst was added to client. Names of files which contain parameters (‘$params’) should be entered in it. If you use such names in the prototypes, Mapper or scripts GetStrHash), then include this name to this list. Format of writing: [any number] [file’s name] [end of string] E.g. 0 art\scenery\BrazureFire$t.ART 0 art\scenery\BrazureFire$t3.ART In further it is possible to detect and transmit such names automatically, but for the present use this system. Roof disappearing if it is situated in odd hex in two axis. Rev.149 http://www2.xp-dev.com/sc/change/94227/149 Documentation was updated. Some fixes in Arroyo (Minoc’s quest about raiders). Usage mode was added for sledgehammer and supersledge (for resources mining). Guard lib was brought into common standard of scripts formatting. Rev.148 http://www2.xp-dev.com/sc/change/94227/148 Two reserved variables were added to HLSL effects float AnimPosProc – current animation’s per cent 0%..100%, [0,1); float AnimPosTime – current animation’s time in seconds. Client’s hanging under certain circumstances was fixed (e.g. receiving item’s data when player in process of moving between maps). Dump generation when closing server application without stopping was switched off. Generation of unnecessary messages to log in function animation_ animation.fos was fixed. Rev.147 http://www2.xp-dev.com/sc/change/94227/147 Parameters for critter’s movement controlling were added. Time for moving in milliseconds: #define ST_WALK_TIME (117) #define ST_RUN_TIME (118) Ability to move #define MODE_NO_WALK (539) #define MODE_NO_RUN (540) If these parameters are equal to zero, then data is taken from CritterTypes.cfg. Loading of some ART files was fixed (Arcanum). Ability of specifying special image processing was added. Palette elements will be transparent depending on its index in the palette (alpha = 255 – index). To chose this loading type - use symbol “t” (or “T”) in file name parameters. E.g. ‘filename$t.art’; also you can combine with palette, e.g. ‘filename$1t.art’. Ignoring of spec.symbol “/r” was additionally added for splitEx function. In functions void DrawSprite(... bool applyOffsets) if applyOffsets == true there were additionally added shifting of width/2 and height of the image. Unnecessary fo3d files were deleted. Palette influence for Arcanum critters was fixed. Rev.146 http://www2.xp-dev.com/sc/change/94227/146 One more fix of incorrect critter displaying. Rev.145 http://www2.xp-dev.com/sc/change/94227/145 Quest “Communicated” was added (Redding). Caravaneers phrases were fixed, now they tell correct departure dates. Quest “Honomer’s bodyguard” was added (San Francisco). Retina scanner in GECK town was fixed. Slight fixes of the hubbolog’s map in San Francisco. Special result function for skill rise calculation through a dialogue was added.(dialog@r_SkillUp) The script for quest locations creating was fixed (hostile_location_quest.fos), allies and enemies scripts now work correctly. Resetting of a quest variable when deleting the location was fixed. Script for realization a dialogue between several npc’s with popping up phrases was added. (npc_dialog.fos) Story line implementation was continued. Maps numeration in the location with mutants was fixed (quest string “Guardian”). Rev.144 http://www2.xp-dev.com/sc/change/94227/144 Critter’s hitpoints regeneration was moved to scripts, you can look realization in function critter_idle main.fos. Global function for critters sampling from the global map was added to server scripts. uint GetGlobalMapCritters(uint16 worldX, uint16 worldY, uint radius, int findType, Critter@[]@+ critters) Additionally to methods bool Map::GetNearEntireCoords(int& entire, uint16& hexX, uint16& hexY) const bool Map::GetEntireCoords(int entire, uint skip, uint16& hexX, uint16& hexY) const were added methods bool Map::GetNearEntireCoords(int& entire, uint16& hexX, uint16& hexY, uint8& dir) const bool Map::GetEntireCoords(int entire, uint skip, uint16& hexX, uint16& hexY, uint8& dir) const which return direction. Global variable which specifies if the password in the client’s login window should be hidden was added bool __HidePassword = true Incorrect critters creation in Mapper was fixed. Displaying of switching critter’s type 3d->2d on the client’s side was fixed. Rev.143 http://www2.xp-dev.com/sc/change/94227/143 Fixed critters loading in Mapper (141 revision's bug). Rev.142 http://www2.xp-dev.com/sc/change/94227/142 Fixed server loading (the previous revision bug). Rev.141 http://www2.xp-dev.com/sc/change/94227/141 Mechanism for identifying critter’s animation file name was added. Now you can operate with critter’s animations from Tactics and Arcanum without any conversions. All data files which you need for enabling one or another critters are cited in CritterTypes.cfg comments. The next critters were added to SDK: Humanoid, Behemoth, MTT, Pacification. They are repacked to the separate archive ftrobots.bos. But all available critters from Tactics and Arcanum are added to CritterTypes.cfg with correctly defined parameters for them (by Tabloid), so you can enable the needed data files and use the critters. All animations are transformed to the general appearance (ANIM2_2D*, ANIM2_3D* -> ANIM2*). The functional for operating with them is moved to scripts. In some places where these values are used, numeric literals are replaced by string constants, which description you can find in DefineNames.lst. Fixes were made in weapons prototypes (weapons.fopro) and fo3d templates for 3d critters from VanBuren (_VBHuman.fo3d, _VBMob.fo3d, _VBWeapon.fo3d). Now three sets of primary and secondary animations are used for critters, for three condition types – alive, knockout, dead const uint Critter/CritterCl::Anim1/2Life/Knockout/Dead (const uint Critter/CritterCl::Anim1/2 were deleted). These values are used for animations as default. Pay attention that Anim1 additionally is summed up with animation of the weapon in the active slot, bit-by-bit OR. It is necessary for assignation certain values on continuing basis (e.g. sitting, lying position). For changing these values the next method is used void Critter::SetAnims(int cond, uint anim1, uint anim2) int cond – defines the position to apply values to (COND_* in _defines.fos), if null it is applied to all three; uint anim1, anim2 – animation values. Deleted const uint8 Critter/CritterCl::CondExt Accordingly all COND_*_* for them are deleted. Now position is differentiated by the animations. In connection with it, the next methods specifications were changed void ToDead(uint anim2, Critter@+ killer) bool ToKnockout(uint anim2begin, uint anim2idle, uint anim2end, uint lostAp, uint16 knockHx, uint16 knockHy) void EventKnockout(uint anim2begin, uint anim2idle, uint anim2end, uint lostAp, uint knockDist) void EventSmthKnockout(Critter& fromCr, uint anim2begin, uint anim2idle, uint anim2end, uint lostAp, uint knockDist) uint anim2begin, anim2idle, anim2end – animations of the knockout begging, staying in it and coming to yourself. Standard macroses are defined for the transfer KNOCKOUT_ANIM2_DEFAULT, KNOCKOUT_ANIM2_STUNNED (in _animation.fos). Also Mapper operates now not with CondExt, but with Anim1/Anim2 for the current Cond. Global variables for client/mapper for defining combat mode animations were added uint __Anim2CombatBegin = ANIM2_BEGIN_COMBAT uint __Anim2CombatIdle = ANIM2_IDLE_COMBAT uint __Anim2CombatEnd = ANIM2_END_COMBAT The next reserved client/mapper functions were added (animation.fos): - string@ critter_animation(int animType, uint crType, uint anim1, uint anim2, uint& pass, uint& flags, int& ox, int& oy) Function which is called when loading necessary animation. Returned value - file’s path and name. int animType – critter’s animation type (new parameter which is set in CritterTypes.cfg); uint crType – critter’s type; uint anim1, anim2 – animation’s indexes; uint& pass – function call’s number, is changed by the user. If animation loading failed and this parameter was changed, then function will be recalled (in certain cases you should try to load different files for the one animation); uint& flags – flags, at the present moment two of them – to take the first or the last frame from the animation ( Anim loading flags in _animation.fos); int& ox, &oy – shifts for the animation, in pixels. - bool critter_animation_substitute(int animType, uint crTypeBase, uint anim1Base, uint anim2Base, uint& crType, uint& anim1, uint& anim2) If animation loading failed (and uint& pass wasn’t changed), then this function is called for animation substitute detection (e.g. left hook can be replaced by the right hook). true is returned if the substitute was found (engine also additionally checks if crType, anim1, anim2 were really changed), false – no substitute, animation won’t be loaded and played. int animType – see above; uint crTypeBase, anim1Base, anim2Base – base critter’s and animation’s type, which were at the start; uint& crType, &anim1, &anim2 - critter’s and the current animation’s type for the substitution - bool critter_animation_fallout(uint crType, uint& anim1, uint& anim2, uint& anim1ex, uint& anim2ex, uint& flags) As Fallout’s animations are still loaded by the engine (additional shifts calculation and animations pasting together is needed), for determining animations conformity this function is called, i.e. instead of critter_animation for fallout’s animations this function is called. true is returned if animation is presented, false – not. Method bool Critter::IsAnim3d() const is deleted, use instead of it the global function int GetCritterAnimType(uint crType) values look in Anim types _animation.fos. Critters actions sounds now are played in the scripts, in animation_2d/3d_process. New mechanism for sound file name identification was made, look PlayAnimSound in animation.fos. Critters prototypes were divided into fallout’s (fallout2.fopro) and TLA's (tla.fopro). Bug with roof’s non-transparency in Mapper was fixed. Name indication of chosen critter or tile prototype in mapper was added. Format fo3d now recognizes named constants DefineNames.fos, namely for modificators Mesh, Subset, Layer, Value, DisableLayer, DisableSubset, Texture, EffDef (для Dword), Anim, AnimSpeed, AnimEqual. Global server variable for determining call frequency was added GLOBAL_PROCESS_MOVE uint __EncounterTime = 5000 Global client variable for determining frequency of foolish trick animation call was added uint __CritterFidgetTime = 50000 is deleted using formula Random(__CritterFidgetTime, __CritterFidgetTime * 2) Item prototype’s parameter was deleted bool ProtoItem::Weapon_RequiresActivation now if animation doesn’t exist, it is just not played. Parameters uint16 MapperObject::Scenery_ToMapX/Y were deleted, in mapper also. Moving between locations is performed by entery points. In weapons prototypes types of action animations were substituted from numeric by string constants (accordance look in DefineNames.lst). Appropriate changes were performed in ObjectEditor. Client functions PlaySound andPlayMusic now return bool, signalizing if file was found or not. Global functions for server/client/mapper which return appropriate values from CritterTypes.fos were added uint GetCritterAlias(uint crType) string@ GetCritterTypeName(uint crType) string@ GetCritterSoundName(uint crType) Mapper’s scripts were moved to server’s scripts folder. Also the whole set of functions for operating with CritterTypes.fos was added to Mapper bool IsCritterCanWalk(uint crType) bool IsCritterCanRun(uint crType) bool IsCritterCanRotate(uint crType) bool IsCritterCanAim(uint crType) bool IsCritterAnim1(uint crType, uint anim1) int GetCritterAnimType(uint crType) uint GetCritterAlias(uint crType) string@ GetCritterTypeName(uint crType) string@ GetCritterSoundName(uint crType) Specifications of client’s reserved functions were changed animation2d_process, animation3d_process parameter bool animateStay was added to the beginning. It indicates if any action is performed now (false) or stand animation (true). Reaction for global map’s interface buttons pressing when the size of map’s area (GmapMap) covers the buttons area was fixed. Bug with incorrect loading/saving maps in which script’s or function’s name consists of spaces was fixed. Bug with potential server crashing when using AI_PLANE_MISC was fixed. Rev.140 http://www2.xp-dev.com/sc/change/94227/140 Some robots from Fallout Tactics (look the next revision). Rev.139 http://www2.xp-dev.com/sc/change/94227/139 The next quests were added in San Francisco: “Introduction into Hubbology”, “Hub’s justice”. Transport to Atoll is available for the players who are doing “Introduction into Hubbology” quest (npc is in the docs area of San Fracisco); Automatic transfer to the command center of GECK city citizens when entering the map was removed. Now citizens can choose spawn point. Quest location “Hubbologists laboratory” was added (author JunoReactor). Rev.138 http://www2.xp-dev.com/sc/change/94227/138 Arroyo: Quest “Evidence of Chosen’s death” was added (Todd Stewart); Two courier quests were added (Cassidy, Todd Stewart); Encounter fixes: Fixed bugs of the 120 revision; Fixed random encounters where normally aggressive npc’s didn’t attack after fighting with the other npc’s; Fixed bug with unlimited experience in Den; Fixed mistakes in NCR quests cooldowns; Slight dialogues fixes. Rev.137 http://www2.xp-dev.com/sc/change/94227/137 Ability to specify the layer of tiles/roof to organize correct query of displaying. Totally there can be 5 layers, from 0 to 4. You can switch between them with pressing shift and pressing appropriate key (from 0 to 4). Indication of the current layer is specified in the map’s supplemental information (in upper right corner). Specification of MapperMap AddTile/AddTileName methods was expanded, also layer parameter was added void AddTile(uint16 hexX, uint16 hexY, int offsX, int offsY, int layer, bool roof, uint picHash) void AddTileName(uint16 hexX, uint16 hexY, int offsX, int offsY, int layer, bool roof, string@+ picName) Functions for hash calculation by file’s name and inverse function were added to the native scripts const char* (*GetNameByHash)(uint hash); // Get name of file by hash uint (* GetHashByName)(const char* name); // Get hash of file name The functional for operating with the chosen’s actions was added to the client’s scripts. For taking or specifying the actions use functions uint GetChosenActions(uint[]@+ actions) void SetChosenActions(uint[]@+ actions) This array consists of blocks of seven variables, the first is the type, the other are the parameters. Values of types and parameters look in _client_defines.fos Chosen actions. Argument with the location was added to the reserved function for checking the entries into this location bool entrance_FuncName(Location& loc, Critter@[]& critters, uint8 entrance) The next events were added for critters CRITTER_EVENT_USE_ITEM_ON_ME bool EventUseItemOnMe(Critter& whoUse, Item& item) CRITTER_EVENT_USE_SKILL_ON_ME bool EventUseSkillOnMe(Critter& whoUse, int skill) In the calls stack it is situated between CRITTER_EVENT_USE_* and the global handler. That is CRITTER_EVENT_USE_ITEM for the player + CRITTER_EVENT_SMTH_USE_ITEM for those who can see the player. CRITTER_EVENT_USE_ITEM_ON_ME The global handler critter_use_item. and CRITTER_EVENT_USE_SKILL for the player + CRITTER_EVENT_SMTH_USE_SKILL for those who can see the player. CRITTER_EVENT_USE_SKILL_ON_ME The global handler critter_use_skill. The supplemental information (current hex, fps, etc.) in Mapper is presented in the upper right corner. Bug of 135 revision with transparent tiles when placing them was fixed. Data connected with unfinished mechanism of textured grid was deleted. Rev.136 http://www2.xp-dev.com/sc/change/94227/136 Maps converted to text format. Rev.135 http://www2.xp-dev.com/sc/change/94227/135 Now only text format is used for maps, it is binary only for loading. All maps are converted to the text format (they will be uploaded with the next revision). Extension of this format is “fomap”. To convert your own maps to the new format – execute in Mapper ““#ConvertMaps”, then you should manually or using Mapper set required values in Time, NoLogOut, ScriptModule, ScriptFunc fields, which values you can see in file Maps.cfg. File Maps.cfg is not used anymore, locations prototype numbers are defined opposite to their name in file Locations.cfg, as in the most cases the one map prototype is used for the one location. According to these changes, the next MapperMap methods are deleted: uint GetTile(uint16 tileX, uint16 tileY, bool roof) const void SetTile(uint16 tileX, uint16 tileY, bool roof, uint picHash) string@ GetTileName(uint16 tileX, uint16 tileY, bool roof) const void SetTileName(uint16 tileX, uint16 tileY, bool roof, string@+ picName) And the next are added: uint GetTilesCount(uint16 hexX, uint16 hexY, bool roof) const void DeleteTile(uint16 hexX, uint16 hexY, bool roof, uint index) uint GetTile(uint16 hexX, uint16 hexY, bool roof, uint index) const void AddTile(uint16 hexX, uint16 hexY, int offsX, int offsY, bool roof, uint picHash) string@ GetTileName(uint16 hexX, uint16 hexY, bool roof, uint index) const void AddTileName(uint16 hexX, uint16 hexY, int offsX, int offsY, bool roof, string@+ picName) Also the next fields are added: const int WorkHexX const int WorkHexY int Time bool NoLogOut string ScriptModule string ScriptFunc The next methods are deleted (as their technology is not good enough for now): string@ GetTerrainName(uint16 tileX, uint16 tileY) cons void SetTerrainName(uint16 tileX, uint16 tileY, string@+ terrainName). Function bool SaveMap(MapperMap@+ map, string& fileName, int pathType, bool text, bool pack) now looks as bool SaveMap(MapperMap@+ map, string& fileName, int pathType). The ability to transmit commands /text /pack when saving by the console is deleted respectively. Several functions for operating with map’s fields were added to mapper script (you can do this procedure simply editing necessary field in the map’s file with text editor): #MapTime value – map’s time in minutes; #MapNoLogOut value –possibility to log out on the map; #MapScriptModule moduleName – script, module’s name; #MapScriptFunc funcName – script, function’s name. Now it is possible to place lots of sprites on one hex. Be attentive, fallout’s tiles have the same size and if you place two tiles on the same hex, you won’t see it (only if you select it , it will be less transparent than the others). Take it into account when you place or copy-paste tiles. Function #ClearTiles can help you with this problem, it deletes superfluous tiles from the hex. So, if you operate with fallout’s tiles and you don’t need several tiles on the same hex, execute this script when you finish work. Also you can place tiles on every hex, not in two. Ability of shifting is added for tiles. To produce tile shift just make the same operations as switching between tiles, but additionally pressing shift. Also you can use the same shift procedure for items. To cancel shift, press Alt with Shift and move objects. Fixed 130 revision’s bugs. Fixed bug with absence of shifting in fofrm with one sprite. Fixed bug with error in loading sprites in scripts (LoadSprite), which caused several other bugs. Remained ini files were formatted. Rev.134 http://www2.xp-dev.com/sc/change/94227/134 Config was uploaded by mistake. Take into accont, don't use config file from 132 and 133 revisions, admin pass is "hh" there. Rev.133 http://www2.xp-dev.com/sc/change/94227/133 Redding maps fixed, quest NPC were added. Rev.132 http://www2.xp-dev.com/sc/change/94227/132 Fixed "Anger" quest, the missing dialogue was restored, now it can be finished. Added quest "Forgery". (VC, Linnet) Rev.131 http://www2.xp-dev.com/sc/change/94227/131 New quests "Anger", "Ernst Telman" were added. (VC, Linnet) Fixed bug in VC guard's AI scripts. Fixed mistakes in quest “Amnesty for Joshua” dialogues. Ability to cancel their service for mercs/companions was added if the owner exits from location to the global map. Rev.130 http://www2.xp-dev.com/sc/change/94227/130 Support of graphics files SPR, TIL, ZAR from Fallout Tactics was added. Support of data files BOS from Fallout Tactics was added (works as ZIP archieve). For loading certain animation from SPR files, state it in the name after “$” sign. E.g. loading CrouchAttackClubSwing animation from file Mutant.spr - “Mutant$CrouchAttackClubSwing.spr”. The first frame of first animation is taken without direction. Also, ability to set certain palette for ART files (graphics files from Arcanum) was added – state palette’s number (from 0 to 3) after “$” sign. E.g. to load dfmbnsba.art file with the second palette - “dfmbnsba$1.art”. First palette is taken without direction (that is 0). Operation with sprites was changed. Now all interface graphics (which is set in ini files) is represented not as one sprite, as continuously played animation. Functional for operation with currently drawn sprites on the map was added to the native client’s and mapper’s scripts. Structures: struct Sprite – displayed sprite; struct SpriteInfo – additional information about the sprite. Functions: Sprite* (*GetDrawingSprites)(uint& count); - currently drawn sprites, if no sprites (on the global, menu), then NULL is returned and count == 0; SpriteInfo* (*GetSpriteInfo)(uint sprId); - getting additional information about certain sprite; uint (*GetSpriteColor)(uint sprId, int x, int y, bool affectZoom); - getting pixel’s colour, with the ability of taking zoom into account; it isn’t available for 3d models yet; format - ARGB; bool (IsSpriteHit)(Sprite sprite, int x, int y, bool checkEgg); - test whether the point on the display matches with the current sprite with taking zoom, transparence and egg of transparence into account (optional). The reserved native global variable GameOpt was renamed to Game. Global variables int __MouseX, __MouseY for current mouse position indication were added. Function void GetMousePosition(int& x, int& y) was deleted. Indication of opened console bool __ConsoleActive was added to client’s scripts. Bug with memory leak when rendering 3d graphics to sprites was fixed. Rev.129 http://www2.xp-dev.com/sc/change/94227/129 Added ability to use robot-guards from Sierra as bodyguards (for those who had completed quest "No-sweat job" in Navarro) Added quest "Amnesty for Joshua" (VC, Amanda) Work of teleport on special encounter "Mad scientist's laboratory" was restored. Rev.128 http://www2.xp-dev.com/sc/change/94227/128 Second stable SDK assembly. For the purpose of decreasing repository's size, assemblies will be stored in another places. Links you can find in text files. Rev.127 http://www2.xp-dev.com/sc/change/94227/127 Quest "No-sweat job" in Navarro. Rev.126 http://www2.xp-dev.com/sc/change/94227/126 Mercenaries and companions mechanism (merc.fos) was updated. Now every companion has term of service. Companions don’t meddle in player’s showdowns with NPC’s. Fixed quest “Dip.Courier”. Now it can be finished. Fixed quest “Dock’s attack”. Now it can be finished after killing 5 giant insects. Added 3 new mercs for Lo Pan. Updates NPC-travellers mechanism (traveller.fos). The first NPC-traveller was added (eli.fos). Functions which cooldowns checkup for NPCs in dialogues were fixed. When character dies, all items with flag ITEM_GAG are deleted. Fixed cooldowns for quests “Hub bibliography”, “Sick Brahmin” and in the dialogue with dr.Klaus for stimpacks and first aid kits delivery. When NPC repairs an item, ammo is ejected. Script for NPC monologues realization was added. (monologue.fos) Rev.125 http://www2.xp-dev.com/sc/change/94227/125 Fixes of password encryption in the client's files. Rev.124 http://www2.xp-dev.com/sc/change/94227/124 Fixed bug with graphics loading in the previous update. Rev.123 http://www2.xp-dev.com/sc/change/94227/123 DAT2.1 (Arcanum) files support was added. ART (Arcanum) graphic format was added. Function for operating with strings splitEx was added. Principle is the same as in split, but empty elements are not included in the result array. Also spaces/tabs/string_hyphenation are deleted from the result elements. Examples: split(“A|B||D”, “|”) -> {“A”, “B”, "", “D”} splitEx(“A|B||D”, “|”) -> {“A”, “B”, “D”} split(“A| B\t\t||D| E|F ”, “|”) -> {“A”, “ B\t\t”, "", “D”, “ E”, “F ”} splitEx(“A| B\t\tC||D| E|F ”, “|”) -> {“A”, “B”, “D”, “E”, “F”} Additional DrawSprite functions for the client and mapper were added. You can transfer true with the last argument and as the result, the shift which is stored in the current file will be added to the sprite’s position. void DrawSprite(uint sprId, int sprIndex, int x, int y, uint color, bool applyOffsets) void DrawSprite(uint sprId, int sprIndex, int x, int y, int w, int h, bool scratch, bool center, uint color, bool applyOffsets) Fixed bugs with incorrect ini settings parsing in the scripts. Rev.122 http://www2.xp-dev.com/sc/change/94227/122 Client scripts updates: For the reserved function void render_iface(uint layer) was added calling with value layer 100 to give the ability of drawing on the global map. Also the next global variables were added for operating with the global map: bool __GmapActive – whether global map is active and all the variables below are correct; bool __GmapWait – whether waiting mode of encounter affirming is active; float __GmapZoom – current zoom, don’t forget it to take into account while drawing a map; int __GmapOffsetX, __GmapOffsetY – map shift from the zero-coordinate (up-left corner); int __GmapGroupX, __GmapGroupY – player’s group coordinates; int __GmapMoveX, __GmapMoveY – destination point’s coordinates; float __GmapSpeedX, __GmapSpeedY – movement speed every 50 ms, without taking relief into account For example, calculating the current pixel group’s position - (x = __GmapGroupX / __GmapZoom + __GmapOffsetX), (y = __GmapGroupY / __GmapZoom + __GmapOffsetY). Fixed bug with hanging when drawing 3d model, occurred in the last update. Fixed missing bracket in English texts. (by Kilgore) Rev.121 http://www2.xp-dev.com/sc/change/94227/121 Added more mouse sensitivity and now you can see mouse’s speed percent in the settings. Updated FOConfig.exe. Added AlwaysRun option. Possible values for option Mouse speed were corrected. Option Sleep now can be set to -1, that means switching it off (maximum performance). Added ability of redirecting keyboard’s symbol codes input. For this, use option KeyboardRemap (in FOnline.cfg). It is performed after space – X Y X Y …, where X is the code which is substituted by Y. Code numbers - http://fonline.pastebin.com/Qy3E0qwj Interface description in default.ini is formatted and commented. (by LoadRunner) Location prototypes updates: Option max_copy was deleted. Option max_players was added. It limits the amount of players who can be on the location simultaneously. Players, who can’t enter location because of exceeding the limit will see message 904 from FOGAME.MSG {904}{}{Location is overcrowded, try to enter later.} Password encryption in server *.client. files was added. Mouse shift when switching between movement modes was fixed. Also, for more accurate work, the hex mask was added – look \Client\data\art\misc\hex_mask.png. Only red colour is taken into account and when it takes on certain value, the shift to certain direction is performed (50 – 5, 100 – 0, 150 – 3, 200 – 2). The mask is optional, you can work without it. Fixed loading/saving tiles in the maps text format. Fixed global map shifting behind screen’s edge. Registration of useless clicks in mapper when switching between windows, now isn’t performed. Fixed the animation of 3d critter standing when situating them on the map. Also now 3d critters don’t play standing animation in the critter’s list. Fixed displaying of critters which have only one direction. Fixed command ~reloadscripts. Now when you mark items for deleting (DeleteItem/DeleteItems), their quantity is saved. So, in the moment when real deleting is performed, server will delete the requested number of items. Now knockout during turn-based fight leads to immediate loosing action points, not after finishing the turn. Also, frequent checks for the necessity of finishing the turn were added at the server - if critter’s dead, critter has negative AP, critter has no more AP. Scripts: Fixed critter’s flags (Critter extra flags, _defines.fos). Fixed special encounter scripts Guardian of Forever, Mad Brahmins. Script trader.fos was formatted. Reserved function was added to client scripts, which is called with attacks void hit_aim(uint8& aim) aim value can be redefined( Hit locations in _defines.fos). Function int Critter::GetScore(uint score) was added to server scripts. Specification Critter::AddScore(int score, int val) was changed to Critter::AddScore(uint score, int val). Function for calculation the size of drawn text was added to client and mapper scripts void GetTextInfo(string& text, int w, int h, int font, int flags, int& tw, int& th, int& lines) string& text – text; int w, h, font, flags – height, width, print, flags; int& tw, int& th, int& lines – total width, height and amount of strings in the current text. Rev.120 http://www2.xp-dev.com/sc/change/94227/120 Unused encounter tables for Fallout 1 and commented original’s scripts were deleted from worldmap_init.fos; Random encounters of “beasts versus beasts” type were enabled, which were presented in the scripts, but were absent in the original. Added some new kinds of non-unique random encounters. Now, if player uses to kill NPC’s of certain group or organizations on random encounters, then they become aggressive. Vault City guard’s automatic search is deactivated. Now you need to activate the dialogue to pass through. Fixes in English dialogues versions. Maps fixes. Rev.119 http://www2.xp-dev.com/sc/change/94227/119 Fixed lots of little mistakes in dialogues; Fixed bugs in some Den and Klamath quests; Maps fixes; Duplicate dialogues with different names were deleted. Rev.118 http://www2.xp-dev.com/sc/change/94227/118 Fixed modificator's argument from Parent-0-7 to Parent0-7. Rev.117 http://www2.xp-dev.com/sc/change/94227/117 Added dialogues to Arroyo doctor and his team. Slight fixes (dialogues, maps). Rev.116 http://www2.xp-dev.com/sc/change/94227/116 Library for importing different 3d models was enabled – Assimp http://assimp.sourceforge.net/ Formats that are supported: http://assimp.sourceforge.net/main_features_formats.html Built-in one is still used for X format, for other ones – this library. If you don’t need the library, you can delete it (file Assimp32.dll), client and mapper are able to work without it. Updated mechanism of linking models and animations, now you can link any animation to any skeleton from any file. fo3d format changes: Modificator ModelAnimation was deleted. Modificators Anim, RenderFrame, RenderFrames were expanded – now file name which consists needed animation is placed before the animation’s name (if you state “ModelFile”, then search is performed in the file of loaded model)/ Specification of indicating parent texture (Texture X Parent) was expanded. Now you can additionally state the mesh number and its part, from which the texture is taken - Texture X ParentY-Z, where X is the texture’s number, Y is mesh number, Z is mesh part number; parameters Y-Z are optional, you may don’t use them at all or you may use them partly (Parent, Parent0, Parent-5). Fixed bug with incorrect script processing when operating with Critter::ShowScreen. Fixed bug with incorrect operating and crashing when using Log function with some special symbols. Added Combat Armor 3d model (by Gray). Rev.115 http://www2.xp-dev.com/sc/change/94227/115 Added special encounter "Warehouse of lost doughnuts" (author - Ponchik). Scripts for some original special encounters (author - Cracker). Remade some prototypes. Windows without glasses in Vault's walls can be shooted through now. Slight fixes. Rev.114 http://www2.xp-dev.com/sc/change/94227/114 Maps for quests from the 113 revision. Rev.113 http://www2.xp-dev.com/sc/change/94227/113 Klamath: quests - "Worker searching", "Husband's alert", "Brahmins vaccination" (author - Ponchik). Slight fixes. Rev.112 http://www2.xp-dev.com/sc/change/94227/112 Finished appearance of random encounter "Ocean Trader". Slight maps, dialogues and graphics fixes. Added buttons for BarterGround, GECK town, Warehouse and Hell for the global map (author - Ponchik). Slight fixes. Rev.111 http://www2.xp-dev.com/sc/change/94227/111 Added additional mechanism for data files loading (dat, zip). It is necessary for loading data files loading before scripts initializing and processing start() function as some date is needed to be used before this (effects, prints and some other resourses). For adding files to loading – create DataFiles.cfg file in which you should list all necessary file names. The program searches for the content from the last to the first data file. This mechanism uses server, client, mapper. If list isn’t found then no alerts will be displayed. If one of the files from the list can’t be found or load error appears, then alert will be shown. Option PatchDatPath was deleted, loading of this file is moved to DataFiles.cfg. Rev.110 http://www2.xp-dev.com/sc/change/94227/110 Fixed model's borders calculating which caused nick or text shift above critter's head. Rev.109 http://www2.xp-dev.com/sc/change/94227/109 Fixed skin setting-up when registration 3d character. Fixed order of loaded packs (dat, zip) scanning while searching and parsing ini files. Addition to 106 revision – for stating specific keys for certain resolutions now are used not separate files with different names, but marks in the main file. At the start of the string write “resolution”, than min. width and height for starting using these options. By default these values are equal to zero. For example: "resolution 1024 768 key = value..." It means, that “key = value ...(and so on till the next keyword ”resolution”)” will be included in the final ini. Found data will be inserted in the main file as screen width grows. Rev.108 http://www2.xp-dev.com/sc/change/94227/108 Actual cash files. Rev.107 http://www2.xp-dev.com/sc/change/94227/107 SDK is switched to 3d players mode. Normal version will be restored after finishing mechanism debugging process. For switching off 3d players models – comment the next strings in Server\scripts\_defines.fos #define PLAYERS_3D // Enable 3d players #define PLAYERS_3D_NO_HEAD // No head slot #define PLAYERS_3D_VAULT_SUITE // Vault suite by default, not naked 3d updates: Fixed and reduced the size of attributes and weapons. Added missing attributes of opened pipboy. In the left hand now is displayed the item, which player has in the second slot. Armor’s models are divided between the current armor items in the such way, that gamer could see the difference. For example combat armor consists of power armor and the helmet, robes are replaced by jail suit and etc. Fixed animation playing during creating the new character in single mode. Added skin change processing in start intro and after Kitty’s haircut. Added skeleton’s skins. Added sound for men and women. Fixed sound name for critters parameter’s loading (CritterTypes.cfg, SoundName). Now characters walk slowly with double click if alwaysrun option is turned on. Rev.106 http://www2.xp-dev.com/sc/change/94227/106 Added ability to make 3d characters available to play for. To enable it (it is disabled as default) - comment certain strings in _defines.fos // #define PLAYERS_3D // Enable 3d players // #define PLAYERS_3D_NO_HEAD // No head slot // #define PLAYERS_3D_VAULT_SUITE // Vault suite by default, not naked Updated mechanism of working with ini files. Now, when searching for the keys, excess spaces and tabulations are skipped (now you can type “ key = value ”, previously was correct only variant “key=value”) Added function bool AppendIfaceIni(string& iniName), which enables additional ini files. If the name includes slashes, than the search is being performed from data root, if not - than from folder data/art/interface/. default.ini is added automatically by the engine, others you can enable in start() client function. Loading is performed sequentially from default.ini to ones enabled by user by turn. Every packed file is checked by the turn of loading, then in the folder. Global variable string __UserInterface was deleted. Fixed bug with incorrect parsing of animation indexes in fo3d file. Fixed bug with incorrect position of the egg of transparence in zoom mode. For better readability the next scripts were formatted: start_server_client.fos client_main.fos In the future this practice will be continued. Rev.105 http://www2.xp-dev.com/sc/change/94227/105 Documentation update - slight fixes. Rev.104 http://www2.xp-dev.com/sc/change/94227/104 Added structure of script array (ScriptArray) to native scripts. Added ability to client's native scripts of calling hex data - Field. Data is stored in Field* GameOptions::ClientMap, uint GameOptions::ClientMapWidth/ClientMapHeight. If map is loaded, than ClientMap != NULL, hex calling - ClientMap[hexY * ClientMapWidth + hexX]. Rev.103 http://www2.xp-dev.com/sc/change/94227/103 Added always run option - can be enabled in client's config file “AlwaysRun”. Disabled as default. Added global variables for AlwaysRun regulating: bool __AlwaysRun (as default - false) - enabling AlwaysRun ability; uint __AlwaysRunMoveDist (as default = 1) - run with click, if distance is equal or more than the value; uint __AlwaysRunUseDist (as default = 5) - run with using smth/dialogue/etc, if distance is equal or more than the value. TLA's mechanics is equal to original - always run with click, always run with using if distance is more than 4 hexes. Added parameter uint Critter::ItemTransferCount to native scripts. It stores the value of transferred items during the last transaction. Rev.102 http://www2.xp-dev.com/sc/change/94227/102 Optimized server operation (script calling) in one tread operation mode, performance increased up to 400%. Fixed bug with crash when calling Critter::Say* methods with parametr SAY_SAY_TITLE. Rev.101 http://www2.xp-dev.com/sc/change/94227/101 Changes in fo3d format, new specification was created - look this theme: http://www.fonline.ru/forum/showthread.php?t=19689 New format added new abilities of working with 3d objects - trasmission of texures, other paremeters, etc. Also added ability to render certain animation to sprites as for one frame, either for the whole animation. But the bug with cutting off the shade situated below the lowest edge of model still presents. Updated old fo3d files, also VanBuren's critters and weapon models were added. Changed effects structure, added effect for normal mapping (3D_NormalMapping.fx). Added transfer of real numbers through scripts, float __EffectValue0..9. Fixed bugs with loading 3ds files - miss of meshes except the first; crash if texture coordinates are not presented. Fixed bug in Mapper with data copying when copy-pasting a large number of objects. Fixed text centering of hexes amount in zoom mode. Rev.100 http://www2.xp-dev.com/sc/change/94227/100 Documentation update. Rev.99 http://www2.xp-dev.com/sc/change/94227/99 Updated documentation file, which was missed in the previous revision. Rev.98 http://www2.xp-dev.com/sc/change/94227/98 Added resourse gathering system; Documentation updating. Rev.97 http://www2.xp-dev.com/sc/change/94227/97 Fixes of "Night is tender" quest, now healing must work properly. Added preview from global map for GECK location. Rev.96 http://www2.xp-dev.com/sc/change/94227/96 Gecks counting on the location now affects its auto moving away and visibility separately; Parameter geck_enabled (Map::GeckEnabled) renamed to geck_visible (Map::GeckVisible). Rev.95 http://www2.xp-dev.com/sc/change/94227/95 Added global server function void SetChosenSendParameter(int index, bool enabled) which can denie transmitting parameters to client. Transmitting of all parameters is enabled by default. Rev.94 http://www2.xp-dev.com/sc/change/94227/94 Fixes of sea encounter maps. Rev.93 http://www2.xp-dev.com/sc/change/94227/93 Added sea encounters; Added posibility of an encounter while travelling on air/water transport; Player always have possibility of cancellation water/air encounter and never gains experience for that; Bug fix in mapper with incorrect editing critter's parameters. Rev.92 http://www2.xp-dev.com/sc/change/94227/92 Fixed displaying rating in pipboy. In mapper additional indication of cut sprites was added to make lines, which are needed for correct interaction, visible. Rev.91 http://www2.xp-dev.com/sc/change/94227/91 Added traffic encryption between server and client. Rev.90 http://www2.xp-dev.com/sc/change/94227/90 Fixed choosing automatically cut sprites in zoom mode. Rev.89 http://www2.xp-dev.com/sc/change/94227/89 Added parametr DrawOrderOffsetHexY for shifting order of drawing lower (Y axis). This is an analogue for recently deleted DrawPosOffsX. Fixed using car trunk. Different slight fixes. Rev.88 http://www2.xp-dev.com/sc/change/94227/88 Fixed exit from Redding; slight fixes. Rev.87 http://www2.xp-dev.com/sc/change/94227/87 Fix for weapon AP cost. Rev.86 http://www2.xp-dev.com/sc/change/94227/86 May be fixed bug with incorrect displaying of some tiles. Fixed bug with unworking elevators. Added restoration of effects when loosing a device (cause crashed e.g. with alt+tab) Rev.85 http://www2.xp-dev.com/sc/change/94227/85 Fixed bug with chat disappearing. Fixed AI bug when combat plans always finished with REASON_CANT_WALK. Rev.84 http://www2.xp-dev.com/sc/change/94227/84 Fix for DT params reading. Rev.83 http://www2.xp-dev.com/sc/change/94227/83 Safety checks for radio commands. Rev.82 http://www2.xp-dev.com/sc/change/94227/82 Fixes of some dialogues; translations of dialogues on Barterground; map fixes; fixes of encounter table; slight fixes. Rev.81 http://www2.xp-dev.com/sc/change/94227/81 Fixed another bug during moving on the global map. Fixed unplanned activating of b/w effect. Rev.80 http://www2.xp-dev.com/sc/change/94227/80 Fixed teleportation bug during moving on the global map. Rev.79 http://www2.xp-dev.com/sc/change/94227/79 Fixed bug with incorrect tear and wear and fuel consumption calculation during moving on the global map by car. Rev.78 http://www2.xp-dev.com/sc/change/94227/78 Fixed brightness output. Fixed outlining activation. Rev.77 http://www2.xp-dev.com/sc/change/94227/77 Added automatic sprite cutting. Main purpose – correct displaying of long walls. Parameter SpriteCut was added to prototypes and mapper (only for scenery) for modification. Cutting values: 0 – switched off, 1 – horizontal (X axis), 2 – vertical (Y axis). Wall blocks should be set manually , for that purpose six blocks with different corner types with visual indication were added. It is necessary for correct calculation of brightness and egg of transparence reaction. Numbers 6800..6805 at the end of Wall and Fast list. Fixed client instability after recent update. Primary indexes array for animations was expanded to the range ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789. For value changing use native means (structure CritterType in fonline.h). Support of effects (HLSL) loading with earlier version of compiler. Automatic attempt of compilation is performed after failure in compilation with the current library. Added data updating for client function GetIniStr in the start function (start) after each call of LoadDataFile. Mapper update: Fixed bug with error in loading tiles with extension not in lower case. Fixed algorithm of sprite displaying calculation (when big sprites were disappearing near the screen edge). Additional visual means for debugging: - Ctrl + Q: Corners type viewing; - Ctrl + W: Viewing the result of sprite cutting, linking them to hexes; - Ctrl + E: Viewing the sequence of sprites drawing. At the time of renewing NPC’s bag, only items which are not in inventory are repaired and reloaded. Added ability to set sprite shift in screen coordinates to prototypes. Fixed bug with double notification of quest state change. Rev.76 http://www2.xp-dev.com/sc/change/94227/76 Added quest “Night is tender” Rev.75 http://www2.xp-dev.com/sc/change/94227/75 Tables for sea encounters, slight fixes. Rev.74 http://www2.xp-dev.com/sc/change/94227/74 Source documentation. Rev.73 http://www2.xp-dev.com/sc/change/94227/73 SPECIAL calculating is moved to native scripts - fonline_tla.dll for server and fonline_tla_client.dll for client (must be situated in data\scripts). The other parameters which are used in the engine are needed generally for drawing GUI, but soon they’ll be moved to scripts too. Native scripts files are moved from data folder to scripts. Added bat-file make_tla.bat for their compilation (installation of MSVS8 is necessary). For example of use new methods for critter classes are added (IsInjured, IsDmgArm...), items (IsHtHAttack, IsGunAttack...) with pragma bindfunc. Example of linking global varieties of standard and native scripts is added (__HitAimEyes, __HitAimHead..., these global varieties are moved to scripts). Callback functions are added (to GameOptions) for item usage cost determination - GetUseApCost. For attack max range determination - - GetAttackDistantion. It further such functions will force out usage of critter parameters in the engine. These functions are binded at the stage of connecting of library to the engine (DllMainEx). For operating with the engine added the next functions (to GameOptions): CritterChangeParameter – for correct change of critter parameter, this function should be called firstly, then you can change the value. CritterTypes – index of CritterType structures where data from CritterTypes.cfg is stored. Added method to client’s critters for detection whether now is time of its move in the turn-based mode bool CritterCl::IsTurnBasedTurn() const Some logics of operating with turn-based mode is moved to the scripts - turn_based_process main.fos. Some recommended specifications for the reserved functions are changed - templates.fos. Min. time of dialogue or barter with NPC now is regulated by the global varieties __DlgTalkMinTime (now default 100 seconds) и __DlgBarterMinTime (now default 50 seconds). Range for all prototypes (maps, locations, items) is expanded to 30000. Fixed bug with incorrect drawing of minimap in the pipboy. Fixed bug with incorrect calculating of healing rate while registration. Fixes of Zerg’s special encounter. Rev.72 http://www2.xp-dev.com/sc/change/94227/72 Data library for script compilation (updated on 27 October) Rev.71 http://www2.xp-dev.com/sc/change/94227/71 Added Zerg special encounter. Fixed bug with incorrect names in Fixboy. Added function LoadDataFile to server scripts, analogue of client/mapper. Fixed mistiming of player movement on global map. Deleted function Critter::SendQuestVar, now alert about changing of local variable is automatic. Changed function specification void ShowScreen(int screenType, uint param, string& funcName) to void ShowScreen(int screenType, uint param, string@+ funcName), now can transmit both empty string or null. Rev.70 http://www2.xp-dev.com/sc/change/94227/70 Documentation is updated. Deleted incorrect splash-picture. Added urgent files for scripts autoaddition in Notepad++. Rev.69 http://www2.xp-dev.com/sc/change/94227/69 Added ability to use your own shaders for game graphics drawing. High Level Shader Language is used for this. Effects folder is situated in data\effects. After the first compilation they are cashed in the folder data\cache (in futher other different data will be cashed there). You can read specifications on the game engine effects in data\effects\ReadMe.txt. Added ability to link any effect to sprite or model in .fofrm and .fo3d (“effect=effect_name.fx”). For default effect changing, function void SetEffect(int effectType, int effectSubtype, string@+ effectName) was implemented into the client scripts. int effectType, effectSubtype – effect types look in _client_defines.fos (Subtype for fonts used font type); string@+ effectName – the name of the effect file (with extension) is in the folder data\effects. Added changing of detailization of game objects for demonstration. For activation press Alt+W, for return press Alt+Q. Added client function for map redrawing void RefreshMap(bool onlyTiles, bool onlyRoof, bool onlyLight) if all three parameters are false, than everything will be redrawed. Also these three parameters are incompatible. Fixed bug in mapper with impossibility of viewing 3d critters in prototypes table. At present time they can’t be ranged. Added ability to play sounds/music from different folders. void RefreshMap(bool onlyTiles, bool onlyRoof, bool onlyLight) If there isn’t slashes (‘/’,‘\’) in path name than search is performed in the folder sfx/music. If there are slashes, than in the root (“data/mysounds/mysound.ogg”). Rev.68 http://www2.xp-dev.com/sc/change/94227/68 Fixed bug in the ObjectEditor when damage type is saved incorrectly. Rev.67 http://www2.xp-dev.com/sc/change/94227/67 Fixed crashing when calling CritterCl::[Param/Stat/Perk/etc]Base in client scripts; Fixed error with recording Anydata of zero length (by Atom). Rev.66 http://www2.xp-dev.com/sc/change/94227/66 Fixed incorrect weapon prototype; errors in checking for special encounters; added decraft of the sand sack to fixboy; other little fixes. Rev.65 http://www2.xp-dev.com/sc/change/94227/65 Redding: finished map according to the last concept; - Garbage was returned to static locations; - Ammo craft on benches (beta-version); - Destruction of the sack using skill repair now gives use empty sack. - Entering Den message was moved to texts from script. Rev.64 http://www2.xp-dev.com/sc/change/94227/64 AngelScript updated to 732 revision. Added new methods for arrays: void T[]::insertAt(uint, const T&) – element inserting in specified position in the array; void T[]::removeAt(uint) – deleting the element by index; void T[]::insertFirst(const T&) – element inserting to the beginning of the array; void T[]::removeFirst() – deleting the first element; void T[]::insertLast(const T&) – element inserting to the end of the array; void T[]::removeLast() – deleting the last element; void T[]::grow(uint) – add elements (the sames as a.resize(length()+X)); void T[]::reduce(uint) – delete elements (the same as a.resize(length()-X)); T& T[]::first() – call of the first element of the array (the same as a[0]); T& T[]::last() – call of the last element of the array (the same as a[a.length()-1]). Also deleted all functions ArrayPushBack as the built-in array functional was expanded. All the scripts were fixed accordingly. Rev.63 http://www2.xp-dev.com/sc/change/94227/63 Added ability to start the server as a service. For registration/start use key “-service” (shortcut FOServerService.exe.lnk). For deleting use keys “-service -delete” (shortcut FOServerServiceDelete.exe.lnk). Added ability to log using function OutputDebugString. The log can be caught (even remotely) using program DebugView http://technet.microsoft.com/en-us/sysinternals/bb896647.aspx For switching it on in server and client configs option LoggingDebugOutput is added. Server/client/mapper will work normally now with incorrect active folders. At start you set the current folder of executable. Fixed bug with absence of replacement “x” by “ч” in built-in punto switcher. Fixed crash in turn based mode and incorrect work of Map::GetCritter(uint critterId). Rev.62 http://www2.xp-dev.com/sc/change/94227/62 Fixed bug with updating vehicle data on the global map. Fixed bug with system hanging while looking items quantity in game info. Fixed bug with the incorrect login/disconnect. Fixed bug with incorrect creating non-stacking items on the map in the number of >1. Fixed bug with incorrect critters gathering when path tracing (by Atom). CRITTER_EVENT_TALK now performed before checking NPC for settings which could restrict speaking with it. Added new mechanism for script garbage gathering (by Atom). For config file simplification, the next options were removed: ASGarbageTime, VarsGarbageTime. Deleted transfer of a group of critters into global map processing global_process, CRITTER_EVENT_GLOBAL_PROCESS. Also instead of transferring a group into global map processing global_invite, CRITTER_EVENT_GLOBAL_INVITE, now only the leader is transferred. Instead of picking group use Critter@[]@ Critter::GetGlobalGroup(). Because of that, specification methods were changed: bool Critter::EventGlobalProcess(int type, Critter@[]& group, ...) bool Critter::EventGlobalInvite(Critter@[]& group, ...) for bool Critter::EventGlobalProcess(int type, Critter& cr, ...) bool Critter::EventGlobalInvite(Critter& leader, ...) Reserved functions of critter event CRITTER_EVENT_GLOBAL_PROCESS, CRITTER_EVENT_GLOBAL_INVITE bool _FuncName(Critter& cr, int type, Critter@[]& group, ...) bool _FuncName(Critter& leader, Critter@[]& group, ...) for bool _FuncName(Critter& cr, int type, ...) bool _FuncName(Critter& leader, ...) Fixed bug with incorrect cooldown for hijacking, now it is equal for a normal lock. Added checking for unopenable door to the lock break script. Rev.61 http://www2.xp-dev.com/sc/change/94227/61 Fixed bug with incorrect reappraisal of item flags in Mapper. Fixed bug when player isn't notified about moved item. Rev.60 http://www2.xp-dev.com/sc/change/94227/60 Fixed bug with incorrect displaying of the rain on roofs. Rev.59 http://www2.xp-dev.com/sc/change/94227/59 Mapper's fix for correct operating with new folder and print's names. Rev.58 http://www2.xp-dev.com/sc/change/94227/58 For editing use program Bitmap Font Generator v1.12. http://www.angelcode.com/products/bmfont/ Print should have the next attributes - OEM RUSSIAN, Padding 1 (in all directions), Binary, all symbols should be placed on the one texture. All prints are moved in the separate folder “Client\data\fonts\”. For the example print FONT_COURIER_NEW_SMALL is added. Look _client_defines.fos, client_main.fos, CourierNewSmall.bmfc, CourierNewSmall.fnt, CourierNewSmall_0.png. Added function in client’s scripts of activating the clock which shows you the time signal comes to server and returns (ping). You can use it for restriction of input while waiting for server’s answer. Fixed crushing when looking players statistics on server. Fixed crushing of Dialogue Editor (by Atom). Rev.57 http://www2.xp-dev.com/sc/change/94227/57 Expanded mechanism of operating with ingame radio. Added flag ITEM_RADIO for radio. (in _defines.fos). Radio messages are now also sent to radios which are on the ground . For their identification engine sends them with color 0xFFFFFFFE (in map_message in client_main.fos). Realization is in script radio.fos (interface, mechanics), call from main.fos. Interface data is taken from default.ini (Radio*). You can edit it with using item or using science skill on it. Radio data is situated in general fields of several item types. That’s why it isn’t a good idea to use this flag with Doors, Keys, Cars, Weapons, Armors, Holodiscs. Transmitting and receiving functions are separated. For managing the next flags and range types are used (_defines.fos): Restriction of transmitting/receiving is stored in Item/ItemCl::RadioFlags, used by the engine: RADIO_DISABLE_SEND, RADIO_DISABLE_RECV. Restriction of switching radio state in в Item/ItemCl::RadioFlags: RADIO_DISABLE_SHIFT_SEND, RADIO_DISABLE_SHIFT_RECV - restriction of switching transmit/receive; RADIO_DISABLE_SHIFT_BC_SEND, RADIO_DISABLE_SHIFT_BC_RECV - restriction of changing distance range; RADIO_DISABLE_SHIFT_CHANNEL – restriction of channel switching. Range types are stored in Item/ItemCl::RadioBroadcastSend/RadioBroadcastRecv, are used by the engine: RADIO_BROADCAST_WORLD – works all over the world; RADIO_BROADCAST_MAP – works within the limits of the current map; RADIO_BROADCAST_LOCATION - works within the limits of the current location; RADIO_BROADCAST_ZONE(x) - works within the limits of “x” zones on the global map; RADIO_BROADCAST_FORCE_ALL – works everywhere regardless of the adjustments of transmitting or receiving radio/ Added support of these flags to the object editor (both engine and script ones). Added scripts uint16 ProtoItem::RadioChannel, uint16 ProtoItem::RadioFlags, uint8 ProtoItem::RadioBroadcastSend, uint8 ProtoItem::RadioBroadcastRecv. For holodisc marking added flag ITEM_HOLODISK (in _defines.fos). Holodisc data is situated in general fields of several item types. That’s why it isn’t a good idea to use this flag with Doors, Keys, Cars, Weapons, Armors, Holodiscs. Added support of this flag in object editor. Added script uint ProtoItem::HolodiskNum. Added ability to use built-in cartridge indicator for other purposes. Added the next parameters: uint8 ProtoItem::IndicatorStart – initial value, - Item/ItemCl::Indicator; uint8 ProtoItem::IndicatorMax – maximum available value (for correct calculation of the strip position); uint8 Item/ItemCl::Indicator – current value. Mechanism is considered activated if maximum value in the prototype isn’t equal to zero. Added support of editing of initial and maximum values in the object editor. Method Item::GetMapPosition for the items which are in the global map returns their coordinates. Fixed bug with system hanging while looking online statistics. Added storing up to 20 ip addresses for one account (fonline.h). Item prototype’s fields, which are equal to zero, now cannot be saved. All prototypes are resaved. Continued working on multithreading in game logics. Added ignoring of non-initialized maps or locations while loading save (NPC’s would be moved to global map, items - deleted). Fixed bug in the dialogue on BiX location. Updated abilities of GUI scripting. In script _defines.fos notes “Used in engine” are replaced by “Hardcoded”; point is the same - to show that this data is used by engine also. Corrected some specifications in template.fos of reserved functions. Rev.56 http://www2.xp-dev.com/sc/change/94227/56 Changes in craft: some new recipe's (new weapon, etc.), added workbenches in some town/military bases. Rev.55 http://www2.xp-dev.com/sc/change/94227/55 - Updated Redding maps; - Deleted unused graphics; - Added second entrance to NCR; - Some changes in NPC's inventories on encounters. Rev.54 http://www2.xp-dev.com/sc/change/94227/54 - Slight fixes in Hartman's and Shrim's dialogues (Vault City); - Fixed problem with immediate sending off caravans/patrols Ahe9mPDq; - Changed content of the quest variable for the quest "Third trial. Drill." - Restored functions for triggers t_DialogNpc and scenery s_TransitToMap. Rev.53 http://www2.xp-dev.com/sc/change/94227/53 Fixes of KotW location. Quest for oil can can be done by everybody in Arroyo now. Rev.52 http://www2.xp-dev.com/sc/change/94227/52 Fixes of Brok and Xander Church location (by VaultTec) Rev.51 http://www2.xp-dev.com/sc/change/94227/51 Fixed names loading (*Names.lst) with the dialogue editor. Changed extention of its config file. Rev.50 http://www2.xp-dev.com/sc/change/94227/50 Fixed bug with duplicating of time events. Rev.49 http://www2.xp-dev.com/sc/change/94227/49 Slight optimization of multi-threading. Rev.48 http://www2.xp-dev.com/sc/change/94227/48 Fixed error in loading of games variables values. Fixed loading of saves games in single player mode. Rev.47 http://www2.xp-dev.com/sc/change/94227/47 Time events changes. - function specification void EraseTimeEvent(uint num) changed to bool EraseTimeEvent(uint num) Return value shows whether deleting is done or the event isn't found. - Deleted the next functions: uint CreateTimeEvent(uint beginSecond, string& funcName, Critter& cr, bool save) uint CreateTimeEvent(uint beginSecond, string& funcName, Item& item, bool save) uint CreateTimeEvent(uint beginSecond, string& funcName, Critter@[]+ critters, Item[]@+ items, bool save) For migration just put the identificator to the critter or item. Added the next functions for operating with event's values: bool GetTimeEvent(uint num, uint& duration, uint[]@+ values) bool GetTimeEvent(uint num, uint& duration, int[]@+ values) bool SetTimeEvent(uint num, uint duration, uint[]@+ values) bool SetTimeEvent(uint num, uint duration, int[]@+ values) Parametr "duration" - time till the event is done in seconds. Return value means that operation is completed, error means that event wasn't found. These functions are thread-safe, 2 thread can't operate with the events simultaneously. Function GetTimeEvent blocks using (changing) of the event until the script is finished or until SetTimeEvent is called, which unblocks the event. GetTimeEvent writes value to the end of the array, SetTimeEvent rewrites it completely. When null is transmitted to values SetTimeEvent values are not changed. - Event function specification can be of two types now: uint e_FuncName(uint[]@ values) uint e_FuncName(int[]@ values) Fixed bug with crashing while loading 3ds file without texture coordinates. Rev.46 http://www2.xp-dev.com/sc/change/94227/46 Added next fuctional for operating with files (class "file"): - for data reading uint8 file::readUint8() uint16 file::readUint16() uint32 file::readUint32() uint64 file::readUint64() In the case of error or the end of file it returns 0. uint file::readData(uint count, uint8[]& data) If data == 0 then program read all data till the end of the file beginning from the current position. Read data is added to the end of the array. The return value shows the real amount of read bytes. - For data recording bool file::writeUint8(uint8 data) bool file::writeUint16(uint16 data) bool file::writeUint32(uint32 data) bool file::writeUint64(uint64 data) bool file::writeData(uint8[]& data, uint count) If count == 0 it records all data from an array. In the case of error it returns false. Fixed bug with incorrect output of zoom value on minimap. Rev.45 http://www2.xp-dev.com/sc/change/94227/45 Extended range of game variables: - local variable of location (LLVAR_); - local variable of map (LMVAR_); - local variable of item (LIVAR_). When using them in dialogue values are taken from: for location - current critter's location; for map - current critter's map; for item - current item in the main slot. For operating with scripts use function GetLocalVar with transmitting of needed operator. Server will delete unused variables of all types automatically. Deleted server function uint DeleteVars(uint id). Dialog editor was adapted to the last updates of game variables. Added ability to define named value (DefineNames.lst) as a value for conditions and results. Added missed translations. Translations of commit history you can find here: http://www.xp-dev.com/forum/topic/3220 Rev.44 http://www2.xp-dev.com/sc/change/94227/44 Updated format of time output in dialogue with repairer-npc; Added script for realization of npc-travellers on global map.(traveller.fos and Davine's script in sf_common.fos); Added npc-traveller explosives-seller Davine. Can be hired in GECK town; Added trade mode "cash only" MODE_BARTER_ONLY_CASH; Fixed bugs in maps structure on maps with holodiscs. Rev.43 http://www2.xp-dev.com/sc/change/94227/43 Added setting in config which defines whether to bind logic threads to the core or let OS do it. In default it is enabled (1) 1. If zero then operating system automatically manage threads between cores, else affinity thread per core LogicThreadSetAffinity=1 Continued work on multi-threading of game logics. Rev.42 http://www2.xp-dev.com/sc/change/94227/42 Fixed crashing under certain conditions; Fixed cycle counting per second. Rev.41 http://www2.xp-dev.com/sc/change/94227/41 Fixed bug connected with the last update. Rev.40 http://www2.xp-dev.com/sc/change/94227/40 Multi-threading of game logics is now supported. You can read about this in details on the forum; Fixed path of recording/reading ban files; Added seconds on the globalmap clock; Decreased permissible length of text listener of channels and maps from 5 to 2 symbols; Deleted global server function void DeleteNpcForce(Critter& npc); Changed specification of method from uint Location::GetMaps(Map@[]& maps) const to uint Location::GetMaps(Map@[]@+ maps) const Now you can know the amount of maps on the location without recording them into array; Added basic server command ~log (~37). It is intended for text listening of server log. Minimum access: administrator. For adding to text listening you should transmit arguement "+", for disconnecting "-"; Fixed basic creating locations command ~addloc (~16); Upgraded basic command of looking player's id using his name ~id (~4); Changed specifications of global functions void critter_attack(Critter& cr, Critter& target, ProtoItem& weapon, ProtoItem@ ammo, uint8 aim) -> void critter_attack(Critter& cr, Critter& target, ProtoItem& weapon, uint8 weaponMode, ProtoItem@ ammo) int to_hit(CritterCl& chosen, CritterCl& target, ProtoItem& weapon, int hitLocation) -> int to_hit(CritterCl& chosen, CritterCl& target, ProtoItem& weapon, uint8 weaponMode); Added variables for weapons which state their active mode const uint8 Item::Mode const uint8 ItemCl::Mode 4 high-order bits - sight (look Hit locations in _defines.fos), 4 low-order bits - mode (0 – primary, 1 – secondary, 2 – third); Added macroses for convenience _WeaponModeUse, _WeaponModeAim, _WeaponModeMake в _macros.fos; Added returnable value of the current mode in method GetSlotProto (urgent for weapons) ProtoItem@+ Critter/CritterCl::GetSlotProto(int slot, uint8& mode) const; Renamed parametr #define ST_RATE_ITEM (102) to #define ST_HANDS_ITEM_AND_MODE (102) value stored in it: XXXX00YY, where XXXX pid - unarmed blow, and YY - mode. Changed way of the dialogue redirecting. You should use returnable value of result function or say-mode instead of uint __ForceDialog; Added specifications of functions: uint r_FuncName(...), uint dlg_FuncName(...) which are detected by server automatically; Fixed bug with moving pushed players only in one direction; Object pointers (derivatives arrays or class members)Location, Map, Critter, Item, GameVar can't be saved in global varities now. For scripts migration save their identificators (Location::Id, Map::Id, Critter::Id, Item::Id), addresing to the objects with (GetLocation, GetMap, GetCritter, GetItem). Weapons prototypes don't save curret mode of fire (in connection with multi-threading). Changed specifications of class members ProtoItem const uint8 Weapon_Skill, const uint8 Weapon_DmgType, const uint8 Weapon_Anim2, const uint16 Weapon_DmgMin, const uint16 Weapon_DmgMax, const uint16 Weapon_MaxDist, const uint16 Weapon_Effect, const uint16 Weapon_Round, const uint8 Weapon_ApCost, const uint8 Weapon_SoundId, const bool Weapon_Remove, const bool Weapon_Aim, const uint8 Weapon_CurrentUse, void Weapon_SetUse(uint8 use) const to const uint16 Weapon_Skill_F, const uint16 Weapon_Skill_S, const uint16 Weapon_Skill_T, const uint16 Weapon_DmgType_F, const uint16 Weapon_DmgType_S, const uint16 Weapon_DmgType_T, const uint16 Weapon_Anim2_F, const uint16 Weapon_Anim2_S, const uint16 Weapon_Anim2_T, const uint16 Weapon_DmgMin_F, const uint16 Weapon_DmgMin_S, const uint16 Weapon_DmgMin_T, const uint16 Weapon_DmgMax_F, const uint16 Weapon_DmgMax_S, const uint16 Weapon_DmgMax_T, const uint16 Weapon_MaxDist_F, const uint16 Weapon_MaxDist_S, const uint16 Weapon_MaxDist_T, const uint16 Weapon_Effect_F, const uint16 Weapon_Effect_S, const uint16 Weapon_Effect_T, const uint16 Weapon_Round_F, const uint16 Weapon_Round_S, const uint16 Weapon_Round_T, const uint16 Weapon_ApCost_F, const uint16 Weapon_ApCost_S, const uint16 Weapon_ApCost_T, const uint8 Weapon_SoundId_F, const uint8 Weapon_SoundId_S, const uint8 Weapon_SoundId_T, const bool Weapon_Remove_F, const bool Weapon_Remove_S, const bool Weapon_Remove_T, const bool Weapon_Aim_F, const bool Weapon_Aim_S, const bool Weapon_Aim_T Added special macros for convenience (Weapon in _macros.fos) _WeaponIsPrimaryAviable, _WeaponIsSecondaryAviable, _WeaponIsThirdAviable, _WeaponSkill, _WeaponDmgType, _WeaponAnim2, _WeaponDmgMin, _WeaponDmgMax, _WeaponMaxDist, _WeaponEffect, _WeaponRound, _WeaponApCost, _WeaponSoundId, _WeaponRemove, _WeaponAim, _WeaponModeUse, _WeaponModeAim, _WeaponModeMake Mapper updates: string@ MapperObject::PicMap/PicInv now return prototype's picturename if other isn't set up; Added const uint16 MapperMap::Width, const uint16 MapperMap::Height for storing current map sizes; Fixed function GetMapFileNames(...). Rev.39 http://www2.xp-dev.com/sc/change/94227/39 Slight fixes of quests in Den, Klamath Improved closed location in Redding Rev.38 http://www2.xp-dev.com/sc/change/94227/38 Slight fixes of quests from string "Guard"; Added services for guardsmen: doc. Troy can heal player; give stimpacks; Valery repairs items; Added universal repairing script for npc (repairer.fos). E.g. in the dialogue vc_valery.foldg 3 new special encounters with holodiscs; Several deleted functions from stdlib are returned. Rev.37 http://www2.xp-dev.com/sc/change/94227/37 Fix of calculating amount of dead NPC on location when necessity of attack is being determinated. Fix of amount loss allies counter when finishing the quest. Output of messages to log is disabled in quest “The drill”. Fix of limit of times amount quest “Dangerous hunt” can be done. Descriptions of deleted maps were returned, which made server restart impossible without saves clearing. Rev.36 http://www2.xp-dev.com/sc/change/94227/36 Fix of Hartman’s dialog. The wrong requirement was deleted. Rev.35 http://www2.xp-dev.com/sc/change/94227/35 New quests from string “Guard” in Vaultcity - Vaultcity guard. Third trial. Drill. - Easy walk. - Go there, don’t know where. - Dangerous hunt. - Diplomatic courier. Fix of caravan’s and patrol’s departure time. Relative departure time was substituted for absolute. Added ability of caravan’s instant departure from the dialog. Fix of items that were generated in encounters 0 in number. (It was impossible to throw out them) Fix of quest “Hub bibliography”. Player need 7 books to gain reputation instead of 6. Rev.34 http://www2.xp-dev.com/sc/change/94227/34 - Maps fixes - Fixed reaction of BG guards on explosives activation Rev.33 http://www2.xp-dev.com/sc/change/94227/33 - Graphics fixes - Non-used files were deleted - Original map of BG was returned Rev.32 http://www2.xp-dev.com/sc/change/94227/32 Private car parking in geck town is disabled till the problem with car boot is solved. Rev.31 http://www2.xp-dev.com/sc/change/94227/31 Added first quests of string “Guardsman”, VaultCity. (Clearing of server saves is needed) Added template for making quests-combats with npc. (fighter_quest.fos, e.g. “Guard. First trial.”) Added ability to take quest “Hub bibliography” again if player failed to finish it at previous time. Fixed incorrect condition in Dappo’s dialogue in quest “Lot of defective rifles”. Added verification of addressee in “Postman” quest, now player can’t bring letter to any npc of type stated in the letter. Rev.30 http://www2.xp-dev.com/sc/change/94227/30 Deleted not used MSG files - FOSCRIPT.MSG. Rev.29 http://www2.xp-dev.com/sc/change/94227/29 Updates of way of making records into log. Added ability to look the name of the thread which made a record. Option in config – LoggingThread. You can also turn on output in the server application using “Logging with thread”. Changed format of time output. Now it is not “time in ms”, but “hours:minutes:seconds:milliseconds”. Rev.28 http://www2.xp-dev.com/sc/change/94227/28 Fix and formatting. Rev.27 http://www2.xp-dev.com/sc/change/94227/27 Fixed mistakes in calculating karma in quest "Returning of the fugitive". Rev.26 http://www2.xp-dev.com/sc/change/94227/26 Changes on Church of Brok and Xander location: - fixed Preacher, Scientist, repairer Alechandro, Cook, Mickey dialogs; - quests work correctly now; - repairer Alechandro identifies items correctly; - ability to record the information about Church was added (after completing Preacher's quest). Rev.25 http://www2.xp-dev.com/sc/change/94227/25 Activating time of dynamite was fixed. Rev.24 http://www2.xp-dev.com/sc/change/94227/24 New algorithm of generating of pseudorandom variables was added (Mersenne twister). Previously was standart C algorythm srand/rand. Rev.23 http://www2.xp-dev.com/sc/change/94227/23 Energy barrier on the entrance of GECK town was improved. Rev.22 http://www2.xp-dev.com/sc/change/94227/22 Fixed client crashing on start. For preventing this bug in future the control system of versions of cashed scripts in the client has been added. Rev.21 http://www2.xp-dev.com/sc/change/94227/21 Fixed problem when it was impossible to add players to GECK town after removing them with option "Clear list". Rev.20 http://www2.xp-dev.com/sc/change/94227/20 Fixed cooldown of the Postman quest. Rev.19 http://www2.xp-dev.com/sc/change/94227/19 Wrongly deleted dialogs are returned. Rev.18 http://www2.xp-dev.com/sc/change/94227/18 Fixes Deleted not used files. Fixed errors when player removes child killer karma additional times. Fixed error with incorrect name of script of map_v15_village map. Added output of message of increasing trade skill when finishing “Farm vermins” quest to the log. Weakened the giant wasp in the quest in Modoc. Rev.17 http://www2.xp-dev.com/sc/change/94227/17 AngelScript was updated to rev.684, v. 2.19.2 Added global variables to the client: bool __ShowTile, __ShowRoof, __ShowItem, __ShowScen, __ShowWall, __ShowCrit, __ShowFast, __ShowPlayerNames, __ShowNpcNames, __ShowCritId. Deleted limit of min. time of using Map::SetLoopTime (it was 1 second). Fixed registration of the global variables of string type (pragma globalvar). Fixed using reserved global variables string type. Added global variables to mapper: string __ClientPath, __ServerPath. Deleted constant modificators in client from string CritterlCl::Name, CritterlCl::Lexems. Added variable CritterlCl::NameOnHead, which if is not empty, outputted above critter’s head. Rev.16 http://www2.xp-dev.com/sc/change/94227/16 Fixed reclearing of child killer status. Rev.15 http://www2.xp-dev.com/sc/change/94227/15 Fixes: - Fixed names of Giant Wasps and bugs in kills statistic; - Reduced requirements of amount of killed mobs and intelligence in Broken Hills quests (bh_marcus.fodlg, bh_super.fodlg); - Reduced requirement of intelligence for “Fresh blood” quest (vc_doctor_troy.foldg); - Fixed possibility of gaining experience multiple times in “Cabbage” quest in Modoc (mod_farmer_q.fodlg); - Player receives reputation in NCR for quest “True cowboy” even if only one Brahmin is brought (ncr_felix.fodlg); - Michael’s miniquest in NCR can be done by every player only once (ncr_michael.fodlg); - Added requirement of 16 level for “buggy” quest (ncr_ratch.fodlg); - Fixed amount of gaining experience when player rejects gratuity in “Postman” quest (q_mail_reciever.fodlg); - Fixed cooldown of “Postman” quest; - Cave mobs – spawn point near the exit grid was removed in the smallest cave; - Fixes of several dialogues in Vault City; - New quest – “Fugitive returning” – when finished, status “Child killer” is removed. Hubbologist in Redding bank offers this quest; - New quest “Farm vermines”. It is offered by Joe in Modoc (mod_joe.fodlg); - Fixed energy barrier in GECK town; - Added computer for breaking of energy barrier inside the town; - Added car lots for GECK town citizens (not more than 2); - Added ability of clearing of citizens list by town leader using the terminal. Rev.14 http://www2.xp-dev.com/sc/change/94227/14 Update for Notepad++ (Syntax_highlighting, autocomplete, function parameters hints) Rev.13 http://www2.xp-dev.com/sc/change/94227/13 First stable version.h3. Your title here...Rev.199 http://xp-dev.com/sc/change/94227/199 Updated libraries for scripts compilation. Rev.198 http://xp-dev.com/sc/change/94227/198 Mistake in tanker captain's dialog which caused impossibility of finishing "Lost punks" quest was fixed. Mistake in determination of quest caravan's path was fixed. AHS-7 dialogue was fixed, killed children counter now works correctly. Rev.197 http://xp-dev.com/sc/change/94227/197 Fixes connected with server crashing/hanging because of the last updates. Mechanics of moving on the global map was fixed – normal vehicles tear and wear, fuel consumption, moving leaps and notification of breakdown were fixed. Rev.196 http://xp-dev.com/sc/change/94227/196 Outdated parts of the global map’s mechanism were deleted on the client’s side. Rev.195 http://xp-dev.com/sc/change/94227/195 Some fixes of hangings on connection to server. Mechanism for operating with graphic images on server’s side was added. It is necessary for convenient operating with data arrays which are presented as a picture. At the present time this is used for determining the landscape when moving on the global map. For operating with the mechanism the next functions were added: bool LoadImage(uint index, string@+ imageName, uint imageDepth, int pathType) – image loading; uint GetImageColor(uint index, uint x, uint y) – identifying pixel’s color; uint index – image’s number, which is currently operated, for the list see Game images in _defines.fos; string@+ imageName – file’s name, the only format is PNG, if null – the current image is deleted; uint imageDepth – depth of the image which is being created, 4 – ARGB, 3 – RGB, 2 – GB, 1 – B. It is needed for optimization operations with memory to give no memory which is not used (you can see the amount of given memory for the images in server’s window Memory -> Images); int pathType – pat type (see Paths in _defines.fos); uint x, y – pixel’s coordinates. Look for examples in functions void WorldmapInit(), uint GetGlobalMapRelief(uint x, uint y) скрипта worldmap.fos. All calculations connected with the global map are performed now only on the server’s side without duplication on the client’s side. Reserved functions global_process, global_invite were moved from main.fos to new script global_group.fos. Specification of reserved function global_process was changed and appropriately client’s processor CRITTER_EVENT_GLOBAL_PROCESS – current, destination coordinate types and speed were changed from integer to real number. global_process call with parameter #define GLOBAL_PROCESS_KICK (7) was added. It determines whether group leader or player himself wants to leave the group. The next functions were added for operating with locations on the global map: uint GetVisibleLocations(uint16 worldX, uint16 worldY, uint radius, Critter@+ visibleBy, Location@[]@+ locations) – it returns visible locations in certain radius. If parameter visibleBy is set, then the critter’s ability to see the location will be taken into account.; uint GetZoneLocationIds(uint16 zoneX, uint16 zoneY, uint zoneRadius, uint[]@+ locationIds) – it returns locations identificators which belong to the certain areas. __GmapGroupX/Y -> __GmapGroupCurX/Y, __GmapMoveX/Y -> __GmapGroupToX/Y; Удалены float __GmapSpeedX/Y were renamed; Universal speed parameter float __GmapGroupSpeed was added. Global variable uint __EncounterTime = 5000 was moved from the engine to scripts. Global variable which defines the frequency of calling global map’s processor GLOBAL_PROCESS_MOVE was added to the engine. Rev.194 http://www2.xp-dev.com/sc/change/94227/194 Variable __MaxLifeLevelSoftCap was added, it determines hitpoints rise per level. If it is equal to 0, then there’re no limitations, otherwise when character gets level = __MaxLifeLevelSoftCap, he won’t get more hitpoints per level . (For TLA __MaxLifeLevelSoftCap = 36). Dialogue with pay off Redding caravan fails was fixed. Chemist dialogue in SF who sells chitin armor was fixed. Locks for chests on Syd and Nancy’s quest location are generated randomly for each map. Output of errors to log in hostile_location_quest.fos script was switched off. Function of determination access rights when passing Redding gates was fixed (previously invalid permissions were accumulating in persons who have access list). Quest “Drill” script was fixed, now excess records in AnyData are deleted correctly after passing or failing the quest. Item “Chitin armor recipe” was restored, it was deleted by mistake. Rev.193 http://www2.xp-dev.com/sc/change/94227/193 Russian text output into log was fixed. Error appearing on starting single mode with enabled server GUI was fixed. One more fix of client-server network interaction (attempt of fixing hangings while downloading chache). Rev.192 http://www2.xp-dev.com/sc/change/94227/192 Bug with visualisation of other playing movement was fixed. It appeared in 161 revision. Rev.191 http://www2.xp-dev.com/sc/change/94227/191 Operation with network interaction was optimized, the processor will be loaded less when sending large volumes of information (e.g. cache transmitting). Models, which are situated in separate folders, loading was fixed (slashes are replaces by dots). Rev.190 http://www2.xp-dev.com/sc/change/94227/190 Cache loading was fixed. Cache situation was changed on the client’s side and now a separate folder for cache is created for every server. DataFiles.cfg situation was fixed. For critters in Mapper with Cond == 3 (dead) now automatically parameter ST_REPLICATION_TIME is set to -1 (if it is equal to 0) i.e. nonreplicated. And for Cond == 2 (knockout) big cooldown for getting up is set. For “dictionary” class was added method uint keys(string@[]@ keys) const which returns all the keys and their quantity. Now it is checked for presence of palette with the same name with the FRM file which is loading. If there isn’t one, then default is used (like now). Rev.189 http://www2.xp-dev.com/sc/change/94227/189 Extra system for detecting launched client’s windows was added. Bug with impossibility of reading some files when one copy of client/mapper/server is launched. Check for ITEM_GAG on detection of finishing REASON_HEX_BUSY_RING plan (when critter is surrounded by impassable objects or critters) was added. Ground and roof tiles offset was fixed in FOnline geometry. Rev.188 http://www2.xp-dev.com/sc/change/94227/188 Support of graphic formats MOS and BAM from Ininity Engine (Boldur’s Gate, Icewind Dale, Planescape Torment) was added. It is possible to define the number of played cycle or frame. To define cycle’s number in file name parameters (“S”) – define its index and to define the frame add dash and frame’s index. Examples: fileName$5.bam – load fileName.bam with frames for cycle № 5; fileName$1-4.bam - load fileName.bam with frame № 4 with cycle № 1; fileName.bam - load fileName.bam с with frames for cycle № 0. Rev.187 http://www2.xp-dev.com/sc/change/94227/187 Some actions were performed to fix server's hanging up. Rev.186 http://www2.xp-dev.com/sc/change/94227/186 Some actions were performed to fix server's hanging up. Not adding function's name to log was fixed. Levelcap was removed in the scripts. Rev.185 http://www2.xp-dev.com/sc/change/94227/185 NO_LOOT and NO_DROP mode were switched off for the giant bugs. Rev.184 http://www2.xp-dev.com/sc/change/94227/184 In connection with porting the server (*nix and 64bit) the next changes were made: Operating with net was rebuilded. Libevent library is used. http://monkey.org/~provos/libevent/ http://en.wikipedia.org/wiki/Libevent http://ru.wikipedia.org/wiki/Libevent Operating with GUI was remade. FLTK library is used. http://fltk.org/ http://en.wikipedia.org/wiki/FLTK http://ru.wikipedia.org/wiki/FLTK Operating with threads was remade. Pthreads is used http://sources.redhat.com/pthreads-win32/ (Windows port) http://en.wikipedia.org/wiki/Pthreads http://ru.wikipedia.org/wiki/Pthreads Changes are serious and can cause unstable work. Memory leak when loading maps was fixed in server. Loading maps with items in containers/inventories in mapper was fixed. Don’t use mapper of 171-182 revisions for editing old maps. Now parameters values for critters in mapper are applies only if they are not equal to zero. Initially value is taken from defaults (from .fopro), then from the map’s data if !=0. Critter’s names in mapper are now taken only by prototype number without accounting dialogue’s number. Old specification of Log function which was changed in 174 revision was returned to native scripts. Server’s GUI now ‘Courier New’ type, option in config was deleted. Option for changing server’s window size and its elements was added GUI size modifier GUISize=0 E.g. if GUISize=-50 then server’s window and all its elements will be 50% smaller, if GUISize=30 then 30% larger. Log in server window is unrolled as defaults. Also, the information from the log can be copied and scrolling is stopped if it is focused. Client’s crashing when playing items animation was fixed. Paths make_tla.bat were converted to Visual Studio 2008 (9.0). Rev.183 http://www2.xp-dev.com/sc/change/94227/183 Lo Pan’s mercenaries call leader’s name correctly now. Nancy and Sid’s quest location now is deleted after leaving it (previously it wasn’t deleted and hanged in the memory). SF docs were excluded from NoPvP locations. Letters generation in Postman quest was fixed. Holodisk with combat robot’s video recordings can be given to Buster now. Shaneman’s documents now have description in “Diplomatic mission” quest. A dialogue between bar clients in outer Vault City was added (wipe is required). Mini quest “Seduce art” was added in Klamath (wipe is required). Rev.182 http://www2.xp-dev.com/sc/change/94227/182 NPC-travellers will no longer take dead characters to the global map. Atoll was removed from Eli’s destinations. Skill displaying when increasing it through the dialogue was fixed. The mistakes in the newcomer’s dialogues in “Anger” quest were fixed. The mistake in mercenaries script which caused the leaving the employer earlier was fixed. Rev.181 http://www2.xp-dev.com/sc/change/94227/181 Reading nicknames from ignor list file was fixed. Console command for adding a player to the ignor list was added ~ignore PlayerName. Rev.180 http://www2.xp-dev.com/sc/change/94227/180 Mechanism of reputation calculation was switched off due to its incorrect work. Now all the list will be visible, but will work correctly. Rev.179 http://www2.xp-dev.com/sc/change/94227/179 Network protocol bug which caused short hangs up was fixed. Client's script was fixed which could cause null parameter call. Rev.178 http://www2.xp-dev.com/sc/change/94227/178 Superfluous rifles on offer were fixed. Rev.177 http://www2.xp-dev.com/sc/change/94227/177 Game version increment. Rev.176 http://www2.xp-dev.com/sc/change/94227/176 Sequence of handlers calling was fixed MAP_EVENT_OUT_CRITTER, MAP_EVENT_IN_CRITTER now the first one is called initially, then the second On intro_init map static lighting was set. Group moving indication on the global map was fixed (previous update bug). Rev.175 http://www2.xp-dev.com/sc/change/94227/175 Console command ~globalmap was added. It moves player to global map. It works only on noPvP maps for players not in combat mode and with noPvP mode turned on. In caravans and travellers scripts functions of moving to final destination's map were updated. Rev.174 http://www2.xp-dev.com/sc/change/94227/174 Porting game to Linux was started. Also supporting of 64 bit platforms. Client’s native libraries are now transmitted automatically. They are stored in ‘Client/data/cache’. Folder with scripts ‘Client/data/scripts’ is not used anymore and was deleted. To the server’s folder library STLPort (http://www.stlport.org/) was added. Client’s libraries are now compiling with it’s help. It is connected with porting to other platforms. Additional methods of moving were added to critters in server scripts bool Critter::TransitToMap(uint mapId, uint16 hexX, uint16 hexY, uint8 dir, bool withGroup) bool Critter::TransitToMap(uint mapId, int entireNum, bool withGroup) bool withGroup – when moving from global map to local map, all the group will be moved. Regular TransitToMap (without bool withGroup) work as with withGroup == false. Previously they worked as как withGroup == true, what led to moving all the group when replicating, if dead critter was on the global map. 3d critters were switched off. For switching on see PLAYERS_3D in _defines.fos. Constants for operating with game constants were added(see 168 revision, http://www2.xp-dev.com/sc/change/94227/168). Specification for the reserved function Log in native scripts was changed. Now the first returned parameter is function’s name from which it was called. Rev.173 http://www2.xp-dev.com/sc/change/94227/173 Traders were added to Atoll and Redding. Barterground was moved to position 690:760 as it isn’t needed anymore in north-west region due to noPvP mode. Locations “BiX Church” and “Atom’s Church” were moved to special encounters class. Fixed rewards in some quests. Maps fixes. Biscuit on Modoc can be received only once now (as in Fallout 2). Rev.172 http://www2.xp-dev.com/sc/change/94227/172 noPvP mode was activated on some TLA maps. It will be used on the next TLA session. For switching it off on your server set global variable __NoPvpMaps=false; in script config.fos Ability of making a list of ignored players, it works similarly NameColorizing. It needs manual adding nickname of ignored player to IgnoreList.txt For refreshing the list of ignored players in game use console command ~ignorelist. Rev.171 http://www2.xp-dev.com/sc/change/94227/171 Derivative objects system for mapper was updated. When placing base object, all his derivatives are placed automatically. If one object from the group is being selected - all others are being selected too. If the prototype or position of the derivative object is changed, changes will be automatically applied by mapper or server when loading. For the example see cars, at the present time they have one derivative object – their trunk. Now when placing the car, it will be created automatically, also it will be moved with it and if base or derivative object is deleted, all the group will be deleted too. The system of moving selected objects in mapper was upgraded. Now in hexagonal system the selected objects will be moved without being tearing apart. Also the selected objects, when being moved, will stop at the map’s edge, so they won’t mix into a pile. The problem with detecting whether items in container belong to their inventory or container. Previously items were placing on the hex and if you place two containers on the same hex, all the items will stack in one container. Now it is fixed. Item::TrapValue initialization through mapper was fixed. If rewriting is performed on prototypes loading, alert is displayed. It was added for items and critters prototypes. In object’s structure in mapper was deleted field const bool Item_InContainer and added const uint UID, ContainerUID, ParentUID, ParentChildIndex Rev.170 http://www2.xp-dev.com/sc/change/94227/170 Now server doesn't block client's libraries while working. Previously you needed to stop the server to replace client's dll (Server/scripts/fonline_tla_client.dll). Rev.169 http://www2.xp-dev.com/sc/change/94227/169 Combined content of MASTER.DAT + CRITTER.DAT. Size - 201 MB! Rev.168 http://www2.xp-dev.com/sc/change/94227/168 Client and Mapper are no longer bounded with Fallout’s data files - MASTER.DAT and CRITTER.DAT. These files content is combined (excess data is deleted) and packed into fallout.dat (will be uploaded with the next update) and defined in DataFiles.cfg. Global variables string __MasterPath, __CritterPath were deleted. The configurator (FOConfig.exe) is updated accordingly fixes above. Critter’s lighting in the death moment and flat items lighting was fixed. To server/client/mapper scripts the next functions for operating with the constants (*Names.lst) were added: int GetConstantValue(int constCollection, string@+ name) – identifying constant’s value by the name; string@ GetConstantName(int constCollection, int value) - identifying constant’s name by the value; void AddConstant(int constCollection, string@+ name, int value) – adding separate constant to the collection; bool LoadConstants(int constCollection, string@+ fileName, int pathType) – loading/reloading the collection; int constCollection – collection’s number, see Constants collections in _defines.fos, also you can define your own collections; string@+ name – constant’s name; int value - constant’s value; string@+ fileName, int pathType – collection file’s name and folder path. Rev.167 http://www2.xp-dev.com/sc/change/94227/167 Bug with error of name/password in login menu if it exceeds 12 symbols was fixed. Screen centering on the player when loading map in right-angle geometry was fixed. Copying objects in Mapper from smaller map to the bigger one was fixed. Mapper hanging up when Sleep < 0 was fixed. Crashes when loading ART files were fixed. Principe of transparency defining with parameter ‘”t” was changed, now it isn’t equal to 255 – paletteIndex, but to max(R, G, B). Rev.166 http://www2.xp-dev.com/sc/change/94227/166 System of operating with items prototypes was updated (ProtoItem). Ability to add your own fields to proto class was added. New pragma ‘bindfield’ is used for this, e.g.: #pragma bindfield "const int ProtoItem::MyValue -> 400" it means creation of field MyValue of int type with offset 400 (considering thas int is 4 byte, it will occupy bytes 400, 401, 402, 403). Totally for user’s fields 500 bytes are available. Field is equal to zero as defaults, but it is possible to change the value by defining value (in the current case MyValue=111 or MyValue=SkillBigGuns) in proto file (.fopro), number (if it contains only numbers) or path to the file (it is identified by the presence of ‘/’ or ‘\’ symbols). For now fields which are not used by the engine are taken out to scripts, see _defines.fos Item prototypes fields. Changes in structure ProtoItem. All next methods are deleted uint8 GetType() const uint16 GetProtoId() const bool IsGrouped() const bool IsWeared() const bool Container_IsGroundLevel() const List of new fields which are registered in the engine (part of them is renamed, some were deleted) http://pastebin.com/8R4QkP3h The other fields are registered with #pragma bindfield in _defines.fos. Now all items can stack and wear out, for this Boolean fields are added to the prototypes bool ProtoItem::IsStackable bool ProtoItem::IsDeteriorable Item type ITEM_MISC_EX was deleted, it is combined with ITEM_MISC (miscex.fopro is deleted). Vehicles are taken out to separate type ITEM_CAR (car.fopro was added). Also now user can define any type numbers for the items. Former fields uint MiscEx_StartVal0..9 of the start values for Item::Val0..9 were moved to common area named StartValue0..9, and with these values Item::Val0..9 are initialized. Metod bool Item::IsCar() const was deleted, instead of it use GetType()==ITEM_CAR. The next methods are renamed bool Item::IsGrouped() const -> bool Item::IsStackable() const bool Item::IsWeared() const -> bool Item::IsDeteriorable() const The next fields are renamed uint16 Item/ItemCl::BrokenWear -> Item/ItemCl::Deterioration uint16 Item/ItemCl::CarDeteoration -> Item/ItemCl::CarDeterioration uint8 MapperObject::Item_DeteorationFlags -> uint8 MapperObject::Item_BrokenFlags uint8 MapperObject::Item_DeteorationCount -> uint8 MapperObject::Item_BrokenCount uint16 MapperObject::Item_DeteorationValue -> uint16 MapperObject::Item_Deterioration Mechanism of affiliated objects was moved for common use. Previously it was available only for vehicle’s trunk. One object can have up to five derivatives. Numbers of the derivative objects are defined in uint16 ProtoItem::ChildPid_0..4. By creation of base object, derivatives are created automatically. For now Mapper doesn’t create affiliated obkects automatically, but it will be fixed in further. For setting the place of situation, special field ChildLines_0..4 is used (former MiscEx.Car.Bag_0..1, see below by recording format). Also it is possible now to define automatic blocking for any objects, not only for vehicles – field BlockLines (former MiscEx.Car.Blockers). Recording format for Child/BlockLines – XYXYXY..., where X is direction number (0..5/7), Y is the amount of steps (1..9) in this direction (previously for vehicle’s trunk for another recording format - XXXX...). Maximum amount of steps for BlockLines – 50, for ChildLines – 6. For operating with derivative objects use methods Item@+ Item::GetChild(uint childIndex) const (бывшая Item@+ Item::CarGetBag(int numBag)) bool Map::CheckPlaceForItem(uint16 hexX, uint16 hexY, uint16 pid) const (bool Map::CheckPlaceForCar(uint16 hexX, uint16 hexY, uint16 pid) const) Fields renaming affected lots of scripts, be attentive. Old proto format is converted to the new one automatically, but Object Editor (ObjectEditor.exe) still operates only with old format. It will be fixed soon. To replication.fos and entires.fos scripts the influence of right-angled geometry was added. Script main_planes.fos is formatted as a separate module. All pragmas were move to the end of _defines.fos. Drop of FPS when switching on view/attack borders was fixed. Rev.165 http://www2.xp-dev.com/sc/change/94227/165 Fix for the ASCompiler. Rev.164 http://www2.xp-dev.com/sc/change/94227/164 Changed ASCompiler output format to “filename(linenumber) : message”. Such output is recognized by a number of IDEs and allow jumping to the code by a double-click on the output line. Rev.163 http://www2.xp-dev.com/sc/change/94227/163 Tabs management system was added to Mapper. Now one tab can have numerous subtabs. Tabs names and its filling is defined in mappers scripts. But some tabs already have initial filling. Item – items prototypes by defaults (items.lst); Tile – tiles by default, search is performed in ‘art/tiles/’; Crit – critters prototypes by defaults (critters.lst); Fast – displays often used objects, initial state is defined in scripts (InitializeTabs in mapper_main.fos); Ign – Ignore, shows ignored objects which are not shown on the map; Inv, Msg, Map – special tabs which have nothing to do with the mechanism, but it is possible to change its name throug TabSetName (see below). The tab can have subtabs only of one type – tiles, critters or items (displayed in priority order). For items and critters the subtab’s name is chosen by user, for the tiles it is performed automatically. The lowest subtab “all” contains all prototypes (or tiles) on a list above. For activation the menu of tab choosing – perform a double click on it. If positions are numerous then use mouse wheel for navigation (scroll speed: normal – 4, with pressed shift – 8, with pressed ctrl – 20, with pressed alt – 50). For tabs management use scripts, functions Tab* uint TabGetTileDirs(int tab, string@[]+ dirNames, bool[]+ includeSubdirs) uint TabGetItemPids(int tab, string@+ subTab, uint16[]@+ itemPids) uint TabGetCritterPids(int tab, string@+ subTab, uint16[]@+ critterPids) void TabSetTileDirs(int tab, string@[]+ dirNames, bool[]+ includeSubdirs) void TabSetItemPids(int tab, string@+ subTab, uint16[]@+ itemPids) void TabSetCritterPids(int tab, string@+ subTab, uint16[]@+ critterPids) void TabDelete(int tab) void TabSelect(int tab, string@+ subTab) void TabSetName(int tab, string@+ tabName) int tab – tab’s number (see Tabs in _mapper_defines.fos); string@[]@+ dirNames – folder’s names for tiles searching; bool[]@+ includeSubdirs – turn on search in subfolders; string@+ subTab – subtab’s name; uint16[]@+ itemPids – item’s prototype numbers array; uint16[]@+ critterPids - critters’s prototype numbers array; string@+ subName – tab’s name. Global variable was added bool __SplitTilesCollection = true It defines whether tiles should be divided into groups in the folders. The group is defined as a string in the file’s name before the first number (e.g. abc12.png - group abc), if the number is absent, then group is defined as '<other>'. In connection with these changes, the global functions are deleted uint GetFastPrototypes(uint16[]@+ pids) void SetFastPrototypes(uint16[]@+ pids) Other updates. Fixed incorrect work of server/client which caused some bugs. Global variable int __GeometryType was added to _defines.fos for the indication of chosen geometry. See constants in _defines.fos Geometry. Depending on its value, tab with Tactics and Arcanum is added. Ability to work with file names which include spaces is added. When loading ART files, it is possible to flip them vertical or horizontal. Parameters in the file name - ‘v’/‘V’ and ‘h’/‘H’. When loading SPR file, if you define in changing color parameter – layer’s number -1, then the modificator will be applied to all four layers. Rev.162 http://www2.xp-dev.com/sc/change/94227/162 Quest perks “Midnight Child”, “Nosderatu Blood” were added (Modoc, “Night’s tender”). Now new home position is set for NPC-travelers (Devin, Eli) when they enter new location. Female characters now can finish quest of removing childkiller status. Allies HP and resistances were increased in “Dangerous hunt” quest. Also a simple dialogue is added to them. The forged letter is now removed from the inventory when finishing quest “Forgery”. Edvin in Klamath tells with a popup phrase when starting gathering items. A delay was added to the prisoner giving the cues in “Ernst Telman” quest. Ability of intimidating the NPC visitor if it’s a woman was deleted in quest “Wrath”. Barcus now reacts with popup phrases to the futher meetings with the player who have done quest “Amnesty for Joshua”. Upon the receiving lieutenant rank of Vaultcity’s Guard, player is awarded with a black combat armor. In “Diplomatic Courier” quest time (24 hours) which Sheiman takes for the thoughts now is calculated correctly. Upon finishing this quest, player receives +1 reputation in NCR. Sell price of the buggy which player receives upon finishing the quest in NCR was set to zero. Dialogue launch when player uses an antidote in quest “Poisoned Regulator” in Redding was fixed. Players who gained Vaultcity citizenship now can trade with Randal with no restrictions. Reputation calculation in quests “Real Cowboy”, “Hub Bibliography” in NCR was fixed. If player refuses the reward in “Hub Bibliography” quest, he gains +2 reputation (was +1) when he delivers 5 books. Increasing raider’s resistances and skills every new attack on NCR was switched off. Ability of crafting and buying chitin armor was added. Giant beetles drop chitin. Items with ITEM_GAG flag deletion upon player’s death was fixed. Rev.161 http://www2.xp-dev.com/sc/change/94227/161 Ability to customize game geometry was added, either the support of isometric projection with quadrangles was. For customization use global variables bool __MapHexagonal – isometry type: true - hexagonal, false - quadrangular; int __MapHexWidth – hex width; int __MapHexHeight – hex height; int __MapHexLineHeight – hex line height; int __MapTileOffsX/Y – ground tiles offset; int __MapRoofOffsX/Y – roof tiles offset; int __MapRoofSkipSize – amount of hex per one roof tile (necessary for its correct hiding); float __MapCameraAngle – 3d model rendering angle; bool __MapSmoothPath – path smoothing when moving; string __MapDataPrefix – path and prefix for the geometry files. Operational sprites for geometry are situated in art/geometry/. Quadrangular isometry use 8 directions, hexagonal – 6. In script config.fos in function InitializeGeometry(), necessary adjustments for 3 games (Fallout1/2, Fallout Tactics and Arcanum) are added. This function can be called in server, client and mapper scripts, as all three of them need geometry information. Global variables uint __LookDir4, uint __LookSneakDir4 were added for 8-directional geometry. Fixed Tactics SPR files loading. Mode MODE_NO_TALK was added. It affects ability to talk and appearance of the icon in the context menu. Double click on hex, affecting avatar’s moving, was fixed. Creation of descriptions for critters prototypes (FODLG.MSG) with high identifiers was fixed. Image of elephant gun was added in 3d. Rev.160 http://www2.xp-dev.com/sc/change/94227/160 Fixed a bug with server and client communication. Fixed a bug with wrong sprites display. Rev.159 http://www2.xp-dev.com/sc/change/94227/159 Documentation's update, mistakes fixes. Rev.158 http://www2.xp-dev.com/sc/change/94227/158 Script start_server_client.fos was renamed to config.fos and now it isn't simply pasted into function start(), but presented as a separate module with function InitializeGame(). Macros for operating with time were moved from _macros.fos to separate module _time.fos. Slight fix of drugs.fos. Rev.157 http://www2.xp-dev.com/sc/change/94227/157 Errors messages in server log when operating with functions GetPlayerName/GetPlayerId were removed. Also GetPlayerName returns null now, if the player wasn't found. Bugs of reputation calculation were fixed. Rev.156 http://www2.xp-dev.com/sc/change/94227/156 Ability to affect the colors when loading Tactics sprites was added. To make color shift, define necessary values in file name’s parameters (“$”). Format: fileName$[index,r,g,b]animName.spr (can be any amount of shifts […]) where index – body part’s number (0 - miscellaneous, 1 - skin, 2 -hair, 3 - armor); r,g,b – color shift for the each component, can be negative Example: someSprite$[2,50,-30,-20]anim1.spr – load sprite someSprite.spr, with animation anim1 and hair’s color shift in RGB (50,-30,-20). Additional flags for operating with color’s shift were added for Tactics critters (_animation.fos, animation.fos). Use macros ANIM1_COLOR_SKIN(index), ANIM1_COLOR_HAIR(index), ANIM1_COLOR_ARMOR(index) for values defining. Index can take on value from 0 to 15, appropriate to it values of color shift look in array colorOffsets of animation.fos script. For ability testing you can use text function void ColorOffset(Critter& cr, int skin, int hair, int armor) in test.fos. Rev.155 Some native structures were fixed. Rev.154 http://www2.xp-dev.com/sc/change/94227/154 AngleScript is updated to revision 822. Ability of sorting is added to scripts arrays Ascending sort void array::sortAsc() void array::sortAsc(uint index, uint count) Descending sort void array::sortDesc() void array::sortDesc(uint index, uint count) For user’s classes sorting realize opCmp method http://www.angelcode.com/angelscript/sdk/docs/manual/doc_script_class_ops.html Vehicle animations on the global map and item’s animations in Mapper are fixed. Some points in operating with critter’s animations are fixed (animation.fos). Global variable __GmapActive is fixed. Global variable for setting min. offline time after that client will completely exit from the game was added. uint __MinimumOfflineTime = 180000; // 3 minutes Rev.153 http://www2.xp-dev.com/sc/change/94227/153 Additional constants for operating with Chosen's actions were updated (Get/SetChosenActions, for CHOSEN_USE_ITEM). Rev.152 http://www2.xp-dev.com/sc/change/94227/152 Additional constants for operating with Chosen's actions were added (Get/SetChosenActions). Rev.151 http://www2.xp-dev.com/sc/change/94227/151 Bugs with incorrect files's names path detecting were fixed. Rev.150 http://www2.xp-dev.com/sc/change/94227/150 3d models loading was fixed. 3d models rendering to sprites was fixed. Critters animations were fixed (death in 2d and 3d modes). Shift calculation for some models was fixet found. Bugs of reputation calculation were fixed. Rev.156 http://www2.xp-dev.com/sc/change/94227/156 Ability to affect the colors when loading Tactics sprites was added. To make color shift, define necessary values in file name’s parameters (“$”). Format: fileName$[index,r,g,b]animName.spr (can be any amount of shifts […]) where index – body part’s number (0 - miscellaneous, 1 - skin, 2 -hair, 3 - armor); r,g,b – color shift for the each component, can be negative Example: someSprite$[2,50,-30,-20]anim1.spr – load sprite someSprite.spr, with animation anim1 and hair’s color shift in RGB (50,-30,-20). Additional flags for operating with color’s shift were added for Tactics critters (_animation.fos, animation.fos). Use macros ANIM1_COLOR_SKIN(index), ANIM1_COLOR_HAIR(index), ANIM1_COLOR_ARMOR(index) for values defining. Index can take on value from 0 to 15, appropriate to it values of color shift look in array colorOffsets of animation.fos script. For ability testing you can use text function void ColorOffset(Critterd. SAY_DIALOG/SAY_APPEND mechanics was fixed. (by Atom) Server’s config loading in Mapper was fixed. (by Atom) File HashNames.lst was added to client. Names of files which contain parameters (‘$params’) should be entered in it. If you use such names in the prototypes, Mapper or scripts GetStrHash), then include this name to this list. Format of writing: [any number] [file’s name] [end of string] E.g. 0 art\scenery\BrazureFire$t.ART 0 art\scenery\BrazureFire$t3.ART In further it is possible to detect and transmit such names automatically, but for the present use this system. Roof disappearing if it is situated in odd hex in two axis. Rev.149 http://www2.xp-dev.com/sc/change/94227/149 Documentation was updated. Some fixes in Arroyo (Minoc’s quest about raiders). Usage mode was added for sledgehammer and supersledge (for resources mining). Guard lib was brought into common standard of scripts formatting. Rev.148 http://www2.xp-dev.com/sc/change/94227/148 Two reserved variables were added to HLSL effects float AnimPosProc – current animation’s per cent 0%..100%, [0,1); float AnimPosTime – current animation’s time in seconds. Client’s hanging under certain circumstances was fixed (e.g. receiving item’s data when player in process of moving between maps). Dump generation when closing server application without stopping was switched off. Generation of unnecessary messages to log in function animation_ animation.fos was fixed. Rev.147 http://www2.xp-dev.com/sc/change/94227/147 Parameters for critter’s movement controlling were added. Time for moving in milliseconds: #define ST_WALK_TIME (117) #define ST_RUN_TIME (118) Ability to move #define MODE_NO_WALK (539) #define MODE_NO_RUN (540) If these parameters are equal to zero, then data is taken from CritterTypes.cfg. Loading of some ART files was fixed (Arcanum). Ability of specifying special image processing was added. Palette elements will be transparent depending on its index in the palette (alpha = 255 – index). To chose this loading type - use symbol “t” (or “T”) in file name parameters. E.g. ‘filename$t.art’; also you can combine with palette, e.g. ‘filename$1t.art’. Ignoring of spec.symbol “/r” was additionally added for splitEx function. In functions void DrawSprite(... bool applyOffsets) if applyOffsets == true there were additionally added shifting of width/2 and height of the image. Unnecessary fo3d files were deleted. Palette influence for Arcanum critters was fixed. Rev.146 http://www2.xp-dev.com/sc/change/94227/146 One more fix of incorrect critter displaying. Rev.145 http://www2.xp-dev.com/sc/change/94227/145 Quest “Communicated” was added (Redding). Caravaneers phrases were fixed, now they tell correct departure dates. Quest “Honomer’s bodyguard” was added (San Francisco). Retina scanner in GECK town was fixed. Slight fixes of the hubbolog’s map in San Francisco. Special result function for skill rise calculation through a dialogue was added.(dialog@r_SkillUp) The script for quest locations creating was fixed (hostile_location_quest.fos), allies and enemies scripts now work correctly. Resetting of a quest variable when deleting the location was fixed. Script for realization a dialogue between several npc’s with popping up phrases was added. (npc_dialog.fos) Story line implementation was continued. Maps numeration in the location with mutants was fixed (quest string “Guardian”). Rev.144 http://www2.xp-dev.com/sc/change/94227/144 Critter’s hitpoints regeneration was moved to scripts, you can look realization in function critter_idle main.fos. Global function for critters sampling from the global map was added to server scripts. uint GetGlobalMapCritters(uint16 worldX, uint16 worldY, uint radius, int findType, Critter@[]@+ critters) Additionally to methods bool Map::GetNearEntireCoords(int& entire, uint16& hexX, uint16& hexY) const bool Map::GetEntireCoords(int entire, uint skip, uint16& hexX, uint16& hexY) const were added methods bool Map::GetNearEntireCoords(int& entire, uint16& hexX, uint16& hexY, uint8& dir) const bool Map::GetEntireCoords(int entire, uint skip, uint16& hexX, uint16& hexY, uint8& dir) const which return direction. Global variable which specifies if the password in the client’s login window should be hidden was added bool __HidePassword = true Incorrect critters creation in Mapper was fixed. Displaying of switching critter’s type 3d->2d on the client’s side was fixed. Rev.143 http://www2.xp-dev.com/sc/change/94227/143 Fixed critters loading in Mapper (141 revision's bug). Rev.142 http://www2.xp-dev.com/sc/change/94227/142 Fixed server loading (the previous revision bug). Rev.141 http://www2.xp-dev.com/sc/change/94227/141 Mechanism for identifying critter’s animation file name was added. Now you can operate with critter’s animations from Tactics and Arcanum without any conversions. All data files which you need for enabling one or another critters are cited in CritterTypes.cfg comments. The next critters were added to SDK: Humanoid, Behemoth, MTT, Pacification. They are repacked to the separate archive ftrobots.bos. But all available critters from Tactics and Arcanum are added to CritterTypes.cfg with correctly defined parameters for them (by Tabloid), so you can enable the needed data files and use the critters. All animations are transformed to the general appearance (ANIM2_2D*, ANIM2_3D* -> ANIM2*). The functional for operating with them is moved to scripts. In some places where these values are used, numeric literals are replaced by string constants, which description you can find in DefineNames.lst. Fixes were made in weapons prototypes (weapons.fopro) and fo3d templates for 3d critters from VanBuren (_VBHuman.fo3d, _VBMob.fo3d, _VBWeapon.fo3d). Now three sets of primary and secondary animations are used for critters, for three condition types – alive, knockout, dead const uint Critter/CritterCl::Anim1/2Life/Knockout/Dead (const uint Critter/CritterCl::Anim1/2 were deleted). These values are used for animations as default. Pay attention that Anim1 additionally is summed up with animation of the weapon in the active slot, bit-by-bit OR. It is necessary for assignation certain values on continuing basis (e.g. sitting, lying position). For changing these values the next method is used void Critter::SetAnims(int cond, uint anim1, uint anim2) int cond – defines the position to apply values to (COND_* in _defines.fos), if null it is applied to all three; uint anim1, anim2 – animation values. Deleted const uint8 Critter/CritterCl::CondExt Accordingly all COND_*_* for them are deleted. Now position is differentiated by the animations. In connection with it, the next methods specifications were changed void ToDead(uint anim2, Critter@+ killer) bool ToKnockout(uint anim2begin, uint anim2idle, uint anim2end, uint lostAp, uint16 knockHx, uint16 knockHy) void EventKnockout(uint anim2begin, uint anim2idle, uint anim2end, uint lostAp, uint knockDist) void EventSmthKnockout(Critter& fromCr, uint anim2begin, uint anim2idle, uint anim2end, uint lostAp, uint knockDist) uint anim2begin, anim2idle, anim2end – animations of the knockout begging, staying in it and coming to yourself. Standard macroses are defined for the transfer KNOCKOUT_ANIM2_DEFAULT, KNOCKOUT_ANIM2_STUNNED (in _animation.fos). Also Mapper operates now not with CondExt, but with Anim1/Anim2 for the current Cond. Global variables for client/mapper for defining combat mode animations were added uint __Anim2CombatBegin = ANIM2_BEGIN_COMBAT uint __Anim2CombatIdle = ANIM2_IDLE_COMBAT uint __Anim2CombatEnd = ANIM2_END_COMBAT The next reserved client/mapper functions were added (animation.fos): - string@ critter_animation(int animType, uint crType, uint anim1, uint anim2, uint& pass, uint& flags, int& ox, int& oy) Function which is called when loading necessary animation. Returned value - file’s path and name. int animType – critter’s animation type (new parameter which is set in CritterTypes.cfg); uint crType – critter’s type; uint anim1, anim2 – animation’s indexes; uint& pass – function call’s number, is changed by the user. If animation loading failed and this parameter was changed, then function will be recalled (in certain cases you should try to load different files for the one animation); uint& flags – flags, at the present moment two of them – to take the first or the last frame from the animation ( Anim loading flags in _animation.fos); int& ox, &oy – shifts for the animation, in pixels. - bool critter_animation_substitute(int animType, uint crTypeBase, uint anim1Base, uint anim2Base, uint& crType, uint& anim1, uint& anim2) If animation loading failed (and uint& pass wasn’t changed), then this function is called for animation substitute detection (e.g. left hook can be replaced by the right hook). true is returned if the substitute was found (engine also additionally checks if crType, anim1, anim2 were really changed), false – no substitute, animation won’t be loaded and played. int animType – see above; uint crTypeBase, anim1Base, anim2Base – base critter’s and animation’s type, which were at the start; uint& crType, &anim1, &anim2 - critter’s and the current animation’s type for the substitution - bool critter_animation_fallout(uint crType, uint& anim1, uint& anim2, uint& anim1ex, uint& anim2ex, uint& flags) As Fallout’s animations are still loaded by the engine (additional shifts calculation and animations pasting together is needed), for determining animations conformity this function is called, i.e. instead of critter_animation for fallout’s animations this function is called. true is returned if animation is presented, false – not. Method bool Critter::IsAnim3d() const is deleted, use instead of it the global function int GetCritterAnimType(uint crType) values look in Anim types _animation.fos. Critters actions sounds now are played in the scripts, in animation_2d/3d_process. New mechanism for sound file name identification was made, look PlayAnimSound in animation.fos. Critters prototypes were divided into fallout’s (fallout2.fopro) and TLA's (tla.fopro). Bug with roof’s non-transparency in Mapper was fixed. Name indication of chosen critter or tile prototype in mapper was added. Format fo3d now recognizes named constants DefineNames.fos, namely for modificators Mesh, Subset, Layer, Value, DisableLayer, DisableSubset, Texture, EffDef (для Dword), Anim, AnimSpeed, AnimEqual. Global server variable for determining call frequency was added GLOBAL_PROCESS_MOVE uint __EncounterTime = 5000 Global client variable for determining frequency of foolish trick animation call was added uint __CritterFidgetTime = 50000 is deleted using formula Random(__CritterFidgetTime, __CritterFidgetTime * 2) Item prototype’s parameter was deleted bool ProtoItem::Weapon_RequiresActivation now if animation doesn’t exist, it is just not played. Parameters uint16 MapperObject::Scenery_ToMapX/Y were deleted, in mapper also. Moving between locations is performed by entery points. In weapons prototypes types of action animations were substituted from numeric by string constants (accordance look in DefineNames.lst). Appropriate changes were performed in ObjectEditor. Client functions PlaySound andPlayMusic now return bool, signalizing if file was found or not. Global functions for server/client/mapper which return appropriate values from CritterTypes.fos were added uint GetCritterAlias(uint crType) string@ GetCritterTypeName(uint crType) string@ GetCritterSoundName(uint crType) Mapper’s scripts were moved to server’s scripts folder. Also the whole set of functions for operating with CritterTypes.fos was added to Mapper bool IsCritterCanWalk(uint crType) bool IsCritterCanRun(uint crType) bool IsCritterCanRotate(uint crType) bool IsCritterCanAim(uint crType) bool IsCritterAnim1(uint crType, uint anim1) int GetCritterAnimType(uint crType) uint GetCritterAlias(uint crType) string@ GetCritterTypeName(uint crType) string@ GetCritterSoundName(uint crType) Specifications of client’s reserved functions were changed animation2d_process, animation3d_process parameter bool animateStay was added to the beginning. It indicates if any action is performed now (false) or stand animation (true). Reaction for global map’s interface buttons pressing when the size of map’s area (GmapMap) covers the buttons area was fixed. Bug with incorrect loading/saving maps in which script’s or function’s name consists of spaces was fixed. Bug with potential server crashing when using AI_PLANE_MISC was fixed. Rev.140 http://www2.xp-dev.com/sc/change/94227/140 Some robots from Fallout Tactics (look the next revision). Rev.139 http://www2.xp-dev.com/sc/change/94227/139 The next quests were added in San Francisco: “Introduction into Hubbology”, “Hub’s justice”. Transport to Atoll is available for the players who are doing “Introduction into Hubbology” quest (npc is in the docs area of San Fracisco); Automatic transfer to the command center of GECK city citizens when entering the map was removed. Now citizens can choose spawn point. Quest location “Hubbologists laboratory” was added (author JunoReactor). Rev.138 http://www2.xp-dev.com/sc/change/94227/138 Arroyo: Quest “Evidence of Chosen’s death” was added (Todd Stewart); Two courier quests were added (Cassidy, Todd Stewart); Encounter fixes: Fixed bugs of the 120 revision; Fixed random encounters where normally aggressive npc’s didn’t attack after fighting with the other npc’s; Fixed bug with unlimited experience in Den; Fixed mistakes in NCR quests cooldowns; Slight dialogues fixes. Rev.137 http://www2.xp-dev.com/sc/change/94227/137 Ability to specify the layer of tiles/roof to organize correct query of displaying. Totally there can be 5 layers, from 0 to 4. You can switch between them with pressing shift and pressing appropriate key (from 0 to 4). Indication of the current layer is specified in the map’s supplemental information (in upper right corner). Specification of MapperMap AddTile/AddTileName methods was expanded, also layer parameter was added void AddTile(uint16 hexX, uint16 hexY, int offsX, int offsY, int layer, bool roof, uint picHash) void AddTileName(uint16 hexX, uint16 hexY, int offsX, int offsY, int layer, bool roof, string@+ picName) Functions for hash calculation by file’s name and inverse function were added to the native scripts const char* (*GetNameByHash)(uint hash); // Get name of file by hash uint (* GetHashByName)(const char* name); // Get hash of file name The functional for operating with the chosen’s actions was added to the client’s scripts. For taking or specifying the actions use functions uint GetChosenActions(uint[]@+ actions) void SetChosenActions(uint[]@+ actions) This array consists of blocks of seven variables, the first is the type, the other are the parameters. Values of types and parameters look in _client_defines.fos Chosen actions. Argument with the location was added to the reserved function for checking the entries into this location bool entrance_FuncName(Location& loc, Critter@[]& critters, uint8 entrance) The next events were added for critters CRITTER_EVENT_USE_ITEM_ON_ME bool EventUseItemOnMe(Critter& whoUse, Item& item) CRITTER_EVENT_USE_SKILL_ON_ME bool EventUseSkillOnMe(Critter& whoUse, int skill) In the calls stack it is situated between CRITTER_EVENT_USE_* and the global handler. That is CRITTER_EVENT_USE_ITEM for the player + CRITTER_EVENT_SMTH_USE_ITEM for those who can see the player. CRITTER_EVENT_USE_ITEM_ON_ME The global handler critter_use_item. and CRITTER_EVENT_USE_SKILL for the player + CRITTER_EVENT_SMTH_USE_SKILL for those who can see the player. CRITTER_EVENT_USE_SKILL_ON_ME The global handler critter_use_skill. The supplemental information (current hex, fps, etc.) in Mapper is presented in the upper right corner. Bug of 135 revision with transparent tiles when placing them was fixed. Data connected with unfinished mechanism of textured grid was deleted. Rev.136 http://www2.xp-dev.com/sc/change/94227/136 Maps converted to text format. Rev.135 http://www2.xp-dev.com/sc/change/94227/135 Now only text format is used for maps, it is binary only for loading. All maps are converted to the text format (they will be uploaded with the next revision). Extension of this format is “fomap”. To convert your own maps to the new format – execute in Mapper ““#ConvertMaps”, then you should manually or using Mapper set required values in Time, NoLogOut, ScriptModule, ScriptFunc fields, which values you can see in file Maps.cfg. File Maps.cfg is not used anymore, locations prototype numbers are defined opposite to their name in file Locations.cfg, as in the most cases the one map prototype is used for the one location. According to these changes, the next MapperMap methods are deleted: uint GetTile(uint16 tileX, uint16 tileY, bool roof) const void SetTile(uint16 tileX, uint16 tileY, bool roof, uint picHash) string@ GetTileName(uint16 tileX, uint16 tileY, bool roof) const void SetTileName(uint16 tileX, uint16 tileY, bool roof, string@+ picName) And the next are added: uint GetTilesCount(uint16 hexX, uint16 hexY, bool roof) const void DeleteTile(uint16 hexX, uint16 hexY, bool roof, uint index) uint GetTile(uint16 hexX, uint16 hexY, bool roof, uint index) const void AddTile(uint16 hexX, uint16 hexY, int offsX, int offsY, bool roof, uint picHash) string@ GetTileName(uint16 hexX, uint16 hexY, bool roof, uint index) const void AddTileName(uint16 hexX, uint16 hexY, int offsX, int offsY, bool roof, string@+ picName) Also the next fields are added: const int WorkHexX const int WorkHexY int Time bool NoLogOut string ScriptModule string ScriptFunc The next methods are deleted (as their technology is not good enough for now): string@ GetTerrainName(uint16 tileX, uint16 tileY) cons void SetTerrainName(uint16 tileX, uint16 tileY, string@+ terrainName). Function bool SaveMap(MapperMap@+ map, string& fileName, int pathType, bool text, bool pack) now looks as bool SaveMap(MapperMap@+ map, string& fileName, int pathType). The ability to transmit commands /text /pack when saving by the console is deleted respectively. Several functions for operating with map’s fields were added to mapper script (you can do this procedure simply editing necessary field in the map’s file with text editor): #MapTime value – map’s time in minutes; #MapNoLogOut value –possibility to log out on the map; #MapScriptModule moduleName – script, module’s name; #MapScriptFunc funcName – script, function’s name. Now it is possible to place lots of sprites on one hex. Be attentive, fallout’s tiles have the same size and if you place two tiles on the same hex, you won’t see it (only if you select it , it will be less transparent than the others). Take it into account when you place or copy-paste tiles. Function #ClearTiles can help you with this problem, it deletes superfluous tiles from the hex. So, if you operate with fallout’s tiles and you don’t need several tiles on the same hex, execute this script when you finish work. Also you can place tiles on every hex, not in two. Ability of shifting is added for tiles. To produce tile shift just make the same operations as switching between tiles, but additionally pressing shift. Also you can use the same shift procedure for items. To cancel shift, press Alt with Shift and move objects. Fixed 130 revision’s bugs. Fixed bug with absence of shifting in fofrm with one sprite. Fixed bug with error in loading sprites in scripts (LoadSprite), which caused several other bugs. Remained ini files were formatted. Rev.134 http://www2.xp-dev.com/sc/change/94227/134 Config was uploaded by mistake. Take into accont, don't use config file from 132 and 133 revisions, admin pass is "hh" there. Rev.133 http://www2.xp-dev.com/sc/change/94227/133 Redding maps fixed, quest NPC were added. Rev.132 http://www2.xp-dev.com/sc/change/94227/132 Fixed "Anger" quest, the missing dialogue was restored, now it can be finished. Added quest "Forgery". (VC, Linnet) Rev.131 http://www2.xp-dev.com/sc/change/94227/131 New quests "Anger", "Ernst Telman" were added. (VC, Linnet) Fixed bug in VC guard's AI scripts. Fixed mistakes in quest “Amnesty for Joshua” dialogues. Ability to cancel their service for mercs/companions was added if the owner exits from location to the global map. Rev.130 http://www2.xp-dev.com/sc/change/94227/130 Support of graphics files SPR, TIL, ZAR from Fallout Tactics was added. Support of data files BOS from Fallout Tactics was added (works as ZIP archieve). For loading certain animation from SPR files, state it in the name after “$” sign. E.g. loading CrouchAttackClubSwing animation from file Mutant.spr - “Mutant$CrouchAttackClubSwing.spr”. The first frame of first animation is taken without direction. Also, ability to set certain palette for ART files (graphics files from Arcanum) was added – state palette’s number (from 0 to 3) after “$” sign. E.g. to load dfmbnsba.art file with the second palette - “dfmbnsba$1.art”. First palette is taken without direction (that is 0). Operation with sprites was changed. Now all interface graphics (which is set in ini files) is represented not as one sprite, as continuously played animation. Functional for operation with currently drawn sprites on the map was added to the native client’s and mapper’s scripts. Structures: struct Sprite – displayed sprite; struct SpriteInfo – additional information about the sprite. Functions: Sprite* (*GetDrawingSprites)(uint& count); - currently drawn sprites, if no sprites (on the global, menu), then NULL is returned and count == 0; SpriteInfo* (*GetSpriteInfo)(uint sprId); - getting additional information about certain sprite; uint (*GetSpriteColor)(uint sprId, int x, int y, bool affectZoom); - getting pixel’s colour, with the ability of taking zoom into account; it isn’t available for 3d models yet; format - ARGB; bool (IsSpriteHit)(Sprite sprite, int x, int y, bool checkEgg); - test whether the point on the display matches with the current sprite with taking zoom, transparence and egg of transparence into account (optional). The reserved native global variable GameOpt was renamed to Game. Global variables int __MouseX, __MouseY for current mouse position indication were added. Function void GetMousePosition(int& x, int& y) was deleted. Indication of opened console bool __ConsoleActive was added to client’s scripts. Bug with memory leak when rendering 3d graphics to sprites was fixed. Rev.129 http://www2.xp-dev.com/sc/change/94227/129 Added ability to use robot-guards from Sierra as bodyguards (for those who had completed quest "No-sweat job" in Navarro) Added quest "Amnesty for Joshua" (VC, Amanda) Work of teleport on special encounter "Mad scientist's laboratory" was restored. Rev.128 http://www2.xp-dev.com/sc/change/94227/128 Second stable SDK assembly. For the purpose of decreasing repository's size, assemblies will be stored in another places. Links you can find in text files. Rev.127 http://www2.xp-dev.com/sc/change/94227/127 Quest "No-sweat job" in Navarro. Rev.126 http://www2.xp-dev.com/sc/change/94227/126 Mercenaries and companions mechanism (merc.fos) was updated. Now every companion has term of service. Companions don’t meddle in player’s showdowns with NPC’s. Fixed quest “Dip.Courier”. Now it can be finished. Fixed quest “Dock’s attack”. Now it can be finished after killing 5 giant insects. Added 3 new mercs for Lo Pan. Updates NPC-travellers mechanism (traveller.fos). The first NPC-traveller was added (eli.fos). Functions which cooldowns checkup for NPCs in dialogues were fixed. When character dies, all items with flag ITEM_GAG are deleted. Fixed cooldowns for quests “Hub bibliography”, “Sick Brahmin” and in the dialogue with dr.Klaus for stimpacks and first aid kits delivery. When NPC repairs an item, ammo is ejected. Script for NPC monologues realization was added. (monologue.fos) Rev.125 http://www2.xp-dev.com/sc/change/94227/125 Fixes of password encryption in the client's files. Rev.124 http://www2.xp-dev.com/sc/change/94227/124 Fixed bug with graphics loading in the previous update. Rev.123 http://www2.xp-dev.com/sc/change/94227/123 DAT2.1 (Arcanum) files support was added. ART (Arcanum) graphic format was added. Function for operating with strings splitEx was added. Principle is the same as in split, but empty elements are not included in the result array. Also spaces/tabs/string_hyphenation are deleted from the result elements. Examples: split(“A|B||D”, “|”) -> {“A”, “B”, "", “D”} splitEx(“A|B||D”, “|”) -> {“A”, “B”, “D”} split(“A| B\t\t||D| E|F ”, “|”) -> {“A”, “ B\t\t”, "", “D”, “ E”, “F ”} splitEx(“A| B\t\tC||D| E|F ”, “|”) -> {“A”, “B”, “D”, “E”, “F”} Additional DrawSprite functions for the client and mapper were added. You can transfer true with the last argument and as the result, the shift which is stored in the current file will be added to the sprite’s position. void DrawSprite(uint sprId, int sprIndex, int x, int y, uint color, bool applyOffsets) void DrawSprite(uint sprId, int sprIndex, int x, int y, int w, int h, bool scratch, bool center, uint color, bool applyOffsets) Fixed bugs with incorrect ini settings parsing in the scripts. Rev.122 http://www2.xp-dev.com/sc/change/94227/122 Client scripts updates: For the reserved function void render_iface(uint layer) was added calling with value layer 100 to give the ability of drawing on the global map. Also the next global variables were added for operating with the global map: bool __GmapActive – whether global map is active and all the variables below are correct; bool __GmapWait – whether waiting mode of encounter affirming is active; float __GmapZoom – current zoom, don’t forget it to take into account while drawing a map; int __GmapOffsetX, __GmapOffsetY – map shift from the zero-coordinate (up-left corner); int __GmapGroupX, __GmapGroupY – player’s group coordinates; int __GmapMoveX, __GmapMoveY – destination point’s coordinates; float __GmapSpeedX, __GmapSpeedY – movement speed every 50 ms, without taking relief into account For example, calculating the current pixel group’s position - (x = __GmapGroupX / __GmapZoom + __GmapOffsetX), (y = __GmapGroupY / __GmapZoom + __GmapOffsetY). Fixed bug with hanging when drawing 3d model, occurred in the last update. Fixed missing bracket in English texts. (by Kilgore) Rev.121 http://www2.xp-dev.com/sc/change/94227/121 Added more mouse sensitivity and now you can see mouse’s speed percent in the settings. Updated FOConfig.exe. Added AlwaysRun option. Possible values for option Mouse speed were corrected. Option Sleep now can be set to -1, that means switching it off (maximum performance). Added ability of redirecting keyboard’s symbol codes input. For this, use option KeyboardRemap (in FOnline.cfg). It is performed after space – X Y X Y …, where X is the code which is substituted by Y. Code numbers - http://fonline.pastebin.com/Qy3E0qwj Interface description in default.ini is formatted and commented. (by LoadRunner) Location prototypes updates: Option max_copy was deleted. Option max_players was added. It limits the amount of players who can be on the location simultaneously. Players, who can’t enter location because of exceeding the limit will see message 904 from FOGAME.MSG {904}{}{Location is overcrowded, try to enter later.} Password encryption in server *.client. files was added. Mouse shift when switching between movement modes was fixed. Also, for more accurate work, the hex mask was added – look \Client\data\art\misc\hex_mask.png. Only red colour is taken into account and when it takes on certain value, the shift to certain direction is performed (50 – 5, 100 – 0, 150 – 3, 200 – 2). The mask is optional, you can work without it. Fixed loading/saving tiles in the maps text format. Fixed global map shifting behind screen’s edge. Registration of useless clicks in mapper when switching between windows, now isn’t performed. Fixed the animation of 3d critter standing when situating them on the map. Also now 3d critters don’t play standing animation in the critter’s list. Fixed displaying of critters which have only one direction. Fixed command ~reloadscripts. Now when you mark items for deleting (DeleteItem/DeleteItems), their quantity is saved. So, in the moment when real deleting is performed, server will delete the requested number of items. Now knockout during turn-based fight leads to immediate loosing action points, not after finishing the turn. Also, frequent checks for the necessity of finishing the turn were added at the server - if critter’s dead, critter has negative AP, critter has no more AP. Scripts: Fixed critter’s flags (Critter extra flags, _defines.fos). Fixed special encounter scripts Guardian of Forever, Mad Brahmins. Script trader.fos was formatted. Reserved function was added to client scripts, which is called with attacks void hit_aim(uint8& aim) aim value can be redefined( Hit locations in _defines.fos). Function int Critter::GetScore(uint score) was added to server scripts. Specification Critter::AddScore(int score, int val) was changed to Critter::AddScore(uint score, int val). Function for calculation the size of drawn text was added to client and mapper scripts void GetTextInfo(string& text, int w, int h, int font, int flags, int& tw, int& th, int& lines) string& text – text; int w, h, font, flags – height, width, print, flags; int& tw, int& th, int& lines – total width, height and amount of strings in the current text. Rev.120 http://www2.xp-dev.com/sc/change/94227/120 Unused encounter tables for Fallout 1 and commented original’s scripts were deleted from worldmap_init.fos; Random encounters of “beasts versus beasts” type were enabled, which were presented in the scripts, but were absent in the original. Added some new kinds of non-unique random encounters. Now, if player uses to kill NPC’s of certain group or organizations on random encounters, then they become aggressive. Vault City guard’s automatic search is deactivated. Now you need to activate the dialogue to pass through. Fixes in English dialogues versions. Maps fixes. Rev.119 http://www2.xp-dev.com/sc/change/94227/119 Fixed lots of little mistakes in dialogues; Fixed bugs in some Den and Klamath quests; Maps fixes; Duplicate dialogues with different names were deleted. Rev.118 http://www2.xp-dev.com/sc/change/94227/118 Fixed modificator's argument from Parent-0-7 to Parent0-7. Rev.117 http://www2.xp-dev.com/sc/change/94227/117 Added dialogues to Arroyo doctor and his team. Slight fixes (dialogues, maps). Rev.116 http://www2.xp-dev.com/sc/change/94227/116 Library for importing different 3d models was enabled – Assimp http://assimp.sourceforge.net/ Formats that are supported: http://assimp.sourceforge.net/main_features_formats.html Built-in one is still used for X format, for other ones – this library. If you don’t need the library, you can delete it (file Assimp32.dll), client and mapper are able to work without it. Updated mechanism of linking models and animations, now you can link any animation to any skeleton from any file. fo3d format changes: Modificator ModelAnimation was deleted. Modificators Anim, RenderFrame, RenderFrames were expanded – now file name which consists needed animation is placed before the animation’s name (if you state “ModelFile”, then search is performed in the file of loaded model)/ Specification of indicating parent texture (Texture X Parent) was expanded. Now you can additionally state the mesh number and its part, from which the texture is taken - Texture X ParentY-Z, where X is the texture’s number, Y is mesh number, Z is mesh part number; parameters Y-Z are optional, you may don’t use them at all or you may use them partly (Parent, Parent0, Parent-5). Fixed bug with incorrect script processing when operating with Critter::ShowScreen. Fixed bug with incorrect operating and crashing when using Log function with some special symbols. Added Combat Armor 3d model (by Gray). Rev.115 http://www2.xp-dev.com/sc/change/94227/115 Added special encounter "Warehouse of lost doughnuts" (author - Ponchik). Scripts for some original special encounters (author - Cracker). Remade some prototypes. Windows without glasses in Vault's walls can be shooted through now. Slight fixes. Rev.114 http://www2.xp-dev.com/sc/change/94227/114 Maps for quests from the 113 revision. Rev.113 http://www2.xp-dev.com/sc/change/94227/113 Klamath: quests - "Worker searching", "Husband's alert", "Brahmins vaccination" (author - Ponchik). Slight fixes. Rev.112 http://www2.xp-dev.com/sc/change/94227/112 Finished appearance of random encounter "Ocean Trader". Slight maps, dialogues and graphics fixes. Added buttons for BarterGround, GECK town, Warehouse and Hell for the global map (author - Ponchik). Slight fixes. Rev.111 http://www2.xp-dev.com/sc/change/94227/111 Added additional mechanism for data files loading (dat, zip). It is necessary for loading data files loading before scripts initializing and processing start() function as some date is needed to be used before this (effects, prints and some other resourses). For adding files to loading – create DataFiles.cfg file in which you should list all necessary file names. The program searches for the content from the last to the first data file. This mechanism uses server, client, mapper. If list isn’t found then no alerts will be displayed. If one of the files from the list can’t be found or load error appears, then alert will be shown. Option PatchDatPath was deleted, loading of this file is moved to DataFiles.cfg. Rev.110 http://www2.xp-dev.com/sc/change/94227/110 Fixed model's borders calculating which caused nick or text shift above critter's head. Rev.109 http://www2.xp-dev.com/sc/change/94227/109 Fixed skin setting-up when registration 3d character. Fixed order of loaded packs (dat, zip) scanning while searching and parsing ini files. Addition to 106 revision – for stating specific keys for certain resolutions now are used not separate files with different names, but marks in the main file. At the start of the string write “resolution”, than min. width and height for starting using these options. By default these values are equal to zero. For example: "resolution 1024 768 key = value..." It means, that “key = value ...(and so on till the next keyword ”resolution”)” will be included in the final ini. Found data will be inserted in the main file as screen width grows. Rev.108 http://www2.xp-dev.com/sc/change/94227/108 Actual cash files. Rev.107 http://www2.xp-dev.com/sc/change/94227/107 SDK is switched to 3d players mode. Normal version will be restored after finishing mechanism debugging process. For switching off 3d players models – comment the next strings in Server\scripts\_defines.fos #define PLAYERS_3D // Enable 3d players #define PLAYERS_3D_NO_HEAD // No head slot #define PLAYERS_3D_VAULT_SUITE // Vault suite by default, not naked 3d updates: Fixed and reduced the size of attributes and weapons. Added missing attributes of opened pipboy. In the left hand now is displayed the item, which player has in the second slot. Armor’s models are divided between the current armor items in the such way, that gamer could see the difference. For example combat armor consists of power armor and the helmet, robes are replaced by jail suit and etc. Fixed animation playing during creating the new character in single mode. Added skin change processing in start intro and after Kitty’s haircut. Added skeleton’s skins. Added sound for men and women. Fixed sound name for critters parameter’s loading (CritterTypes.cfg, SoundName). Now characters walk slowly with double click if alwaysrun option is turned on. Rev.106 http://www2.xp-dev.com/sc/change/94227/106 Added ability to make 3d characters available to play for. To enable it (it is disabled as default) - comment certain strings in _defines.fos // #define PLAYERS_3D // Enable 3d players // #define PLAYERS_3D_NO_HEAD // No head slot // #define PLAYERS_3D_VAULT_SUITE // Vault suite by default, not naked Updated mechanism of working with ini files. Now, when searching for the keys, excess spaces and tabulations are skipped (now you can type “ key = value ”, previously was correct only variant “key=value”) Added function bool AppendIfaceIni(string& iniName), which enables additional ini files. If the name includes slashes, than the search is being performed from data root, if not - than from folder data/art/interface/. default.ini is added automatically by the engine, others you can enable in start() client function. Loading is performed sequentially from default.ini to ones enabled by user by turn. Every packed file is checked by the turn of loading, then in the folder. Global variable string __UserInterface was deleted. Fixed bug with incorrect parsing of animation indexes in fo3d file. Fixed bug with incorrect position of the egg of transparence in zoom mode. For better readability the next scripts were formatted: start_server_client.fos client_main.fos In the future this practice will be continued. Rev.105 http://www2.xp-dev.com/sc/change/94227/105 Documentation update - slight fixes. Rev.104 http://www2.xp-dev.com/sc/change/94227/104 Added structure of script array (ScriptArray) to native scripts. Added ability to client's native scripts of calling hex data - Field. Data is stored in Field* GameOptions::ClientMap, uint GameOptions::ClientMapWidth/ClientMapHeight. If map is loaded, than ClientMap != NULL, hex calling - ClientMap[hexY * ClientMapWidth + hexX]. Rev.103 http://www2.xp-dev.com/sc/change/94227/103 Added always run option - can be enabled in client's config file “AlwaysRun”. Disabled as default. Added global variables for AlwaysRun regulating: bool __AlwaysRun (as default - false) - enabling AlwaysRun ability; uint __AlwaysRunMoveDist (as default = 1) - run with click, if distance is equal or more than the value; uint __AlwaysRunUseDist (as default = 5) - run with using smth/dialogue/etc, if distance is equal or more than the value. TLA's mechanics is equal to original - always run with click, always run with using if distance is more than 4 hexes. Added parameter uint Critter::ItemTransferCount to native scripts. It stores the value of transferred items during the last transaction. Rev.102 http://www2.xp-dev.com/sc/change/94227/102 Optimized server operation (script calling) in one tread operation mode, performance increased up to 400%. Fixed bug with crash when calling Critter::Say* methods with parametr SAY_SAY_TITLE. Rev.101 http://www2.xp-dev.com/sc/change/94227/101 Changes in fo3d format, new specification was created - look this theme: http://www.fonline.ru/forum/showthread.php?t=19689 New format added new abilities of working with 3d objects - trasmission of texures, other paremeters, etc. Also added ability to render certain animation to sprites as for one frame, either for the whole animation. But the bug with cutting off the shade situated below the lowest edge of model still presents. Updated old fo3d files, also VanBuren's critters and weapon models were added. Changed effects structure, added effect for normal mapping (3D_NormalMapping.fx). Added transfer of real numbers through scripts, float __EffectValue0..9. Fixed bugs with loading 3ds files - miss of meshes except the first; crash if texture coordinates are not presented. Fixed bug in Mapper with data copying when copy-pasting a large number of objects. Fixed text centering of hexes amount in zoom mode. Rev.100 http://www2.xp-dev.com/sc/change/94227/100 Documentation update. Rev.99 http://www2.xp-dev.com/sc/change/94227/99 Updated documentation file, which was missed in the previous revision. Rev.98 http://www2.xp-dev.com/sc/change/94227/98 Added resourse gathering system; Documentation updating. Rev.97 http://www2.xp-dev.com/sc/change/94227/97 Fixes of "Night is tender" quest, now healing must work properly. Added preview from global map for GECK location. Rev.96 http://www2.xp-dev.com/sc/change/94227/96 Gecks counting on the location now affects its auto moving away and visibility separately; Parameter geck_enabled (Map::GeckEnabled) renamed to geck_visible (Map::GeckVisible). Rev.95 http://www2.xp-dev.com/sc/change/94227/95 Added global server function void SetChosenSendParameter(int index, bool enabled) which can denie transmitting parameters to client. Transmitting of all parameters is enabled by default. Rev.94 http://www2.xp-dev.com/sc/change/94227/94 Fixes of sea encounter maps. Rev.93 http://www2.xp-dev.com/sc/change/94227/93 Added sea encounters; Added posibility of an encounter while travelling on air/water transport; Player always have possibility of cancellation water/air encounter and never gains experience for that; Bug fix in mapper with incorrect editing critter's parameters. Rev.92 http://www2.xp-dev.com/sc/change/94227/92 Fixed displaying rating in pipboy. In mapper additional indication of cut sprites was added to make lines, which are needed for correct interaction, visible. Rev.91 http://www2.xp-dev.com/sc/change/94227/91 Added traffic encryption between server and client. Rev.90 http://www2.xp-dev.com/sc/change/94227/90 Fixed choosing automatically cut sprites in zoom mode. Rev.89 http://www2.xp-dev.com/sc/change/94227/89 Added parametr DrawOrderOffsetHexY for shifting order of drawing lower (Y axis). This is an analogue for recently deleted DrawPosOffsX. Fixed using car trunk. Different slight fixes. Rev.88 http://www2.xp-dev.com/sc/change/94227/88 Fixed exit from Redding; slight fixes. Rev.87 http://www2.xp-dev.com/sc/change/94227/87 Fix for weapon AP cost. Rev.86 http://www2.xp-dev.com/sc/change/94227/86 May be fixed bug with incorrect displaying of some tiles. Fixed bug with unworking elevators. Added restoration of effects when loosing a device (cause crashed e.g. with alt+tab) Rev.85 http://www2.xp-dev.com/sc/change/94227/85 Fixed bug with chat disappearing. Fixed AI bug when combat plans always finished with REASON_CANT_WALK. Rev.84 http://www2.xp-dev.com/sc/change/94227/84 Fix for DT params reading. Rev.83 http://www2.xp-dev.com/sc/change/94227/83 Safety checks for radio commands. Rev.82 http://www2.xp-dev.com/sc/change/94227/82 Fixes of some dialogues; translations of dialogues on Barterground; map fixes; fixes of encounter table; slight fixes. Rev.81 http://www2.xp-dev.com/sc/change/94227/81 Fixed another bug during moving on the global map. Fixed unplanned activating of b/w effect. Rev.80 http://www2.xp-dev.com/sc/change/94227/80 Fixed teleportation bug during moving on the global map. Rev.79 http://www2.xp-dev.com/sc/change/94227/79 Fixed bug with incorrect tear and wear and fuel consumption calculation during moving on the global map by car. Rev.78 http://www2.xp-dev.com/sc/change/94227/78 Fixed brightness output. Fixed outlining activation. Rev.77 http://www2.xp-dev.com/sc/change/94227/77 Added automatic sprite cutting. Main purpose – correct displaying of long walls. Parameter SpriteCut was added to prototypes and mapper (only for scenery) for modification. Cutting values: 0 – switched off, 1 – horizontal (X axis), 2 – vertical (Y axis). Wall blocks should be set manually , for that purpose six blocks with different corner types with visual indication were added. It is necessary for correct calculation of brightness and egg of transparence reaction. Numbers 6800..6805 at the end of Wall and Fast list. Fixed client instability after recent update. Primary indexes array for animations was expanded to the range ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789. For value changing use native means (structure CritterType in fonline.h). Support of effects (HLSL) loading with earlier version of compiler. Automatic attempt of compilation is performed after failure in compilation with the current library. Added data updating for client function GetIniStr in the start function (start) after each call of LoadDataFile. Mapper update: Fixed bug with error in loading tiles with extension not in lower case. Fixed algorithm of sprite displaying calculation (when big sprites were disappearing near the screen edge). Additional visual means for debugging: - Ctrl + Q: Corners type viewing; - Ctrl + W: Viewing the result of sprite cutting, linking them to hexes; - Ctrl + E: Viewing the sequence of sprites drawing. At the time of renewing NPC’s bag, only items which are not in inventory are repaired and reloaded. Added ability to set sprite shift in screen coordinates to prototypes. Fixed bug with double notification of quest state change. Rev.76 http://www2.xp-dev.com/sc/change/94227/76 Added quest “Night is tender” Rev.75 http://www2.xp-dev.com/sc/change/94227/75 Tables for sea encounters, slight fixes. Rev.74 http://www2.xp-dev.com/sc/change/94227/74 Source documentation. Rev.73 http://www2.xp-dev.com/sc/change/94227/73 SPECIAL calculating is moved to native scripts - fonline_tla.dll for server and fonline_tla_client.dll for client (must be situated in data\scripts). The other parameters which are used in the engine are needed generally for drawing GUI, but soon they’ll be moved to scripts too. Native scripts files are moved from data folder to scripts. Added bat-file make_tla.bat for their compilation (installation of MSVS8 is necessary). For example of use new methods for critter classes are added (IsInjured, IsDmgArm...), items (IsHtHAttack, IsGunAttack...) with pragma bindfunc. Example of linking global varieties of standard and native scripts is added (__HitAimEyes, __HitAimHead..., these global varieties are moved to scripts). Callback functions are added (to GameOptions) for item usage cost determination - GetUseApCost. For attack max range determination - - GetAttackDistantion. It further such functions will force out usage of critter parameters in the engine. These functions are binded at the stage of connecting of library to the engine (DllMainEx). For operating with the engine added the next functions (to GameOptions): CritterChangeParameter – for correct change of critter parameter, this function should be called firstly, then you can change the value. CritterTypes – index of CritterType structures where data from CritterTypes.cfg is stored. Added method to client’s critters for detection whether now is time of its move in the turn-based mode bool CritterCl::IsTurnBasedTurn() const Some logics of operating with turn-based mode is moved to the scripts - turn_based_process main.fos. Some recommended specifications for the reserved functions are changed - templates.fos. Min. time of dialogue or barter with NPC now is regulated by the global varieties __DlgTalkMinTime (now default 100 seconds) и __DlgBarterMinTime (now default 50 seconds). Range for all prototypes (maps, locations, items) is expanded to 30000. Fixed bug with incorrect drawing of minimap in the pipboy. Fixed bug with incorrect calculating of healing rate while registration. Fixes of Zerg’s special encounter. Rev.72 http://www2.xp-dev.com/sc/change/94227/72 Data library for script compilation (updated on 27 October) Rev.71 http://www2.xp-dev.com/sc/change/94227/71 Added Zerg special encounter. Fixed bug with incorrect names in Fixboy. Added function LoadDataFile to server scripts, analogue of client/mapper. Fixed mistiming of player movement on global map. Deleted function Critter::SendQuestVar, now alert about changing of local variable is automatic. Changed function specification void ShowScreen(int screenType, uint param, string& funcName) to void ShowScreen(int screenType, uint param, string@+ funcName), now can transmit both empty string or null. Rev.70 http://www2.xp-dev.com/sc/change/94227/70 Documentation is updated. Deleted incorrect splash-picture. Added urgent files for scripts autoaddition in Notepad++. Rev.69 http://www2.xp-dev.com/sc/change/94227/69 Added ability to use your own shaders for game graphics drawing. High Level Shader Language is used for this. Effects folder is situated in data\effects. After the first compilation they are cashed in the folder data\cache (in futher other different data will be cashed there). You can read specifications on the game engine effects in data\effects\ReadMe.txt. Added ability to link any effect to sprite or model in .fofrm and .fo3d (“effect=effect_name.fx”). For default effect changing, function void SetEffect(int effectType, int effectSubtype, string@+ effectName) was implemented into the client scripts. int effectType, effectSubtype – effect types look in _client_defines.fos (Subtype for fonts used font type); string@+ effectName – the name of the effect file (with extension) is in the folder data\effects. Added changing of detailization of game objects for demonstration. For activation press Alt+W, for return press Alt+Q. Added client function for map redrawing void RefreshMap(bool onlyTiles, bool onlyRoof, bool onlyLight) if all three parameters are false, than everything will be redrawed. Also these three parameters are incompatible. Fixed bug in mapper with impossibility of viewing 3d critters in prototypes table. At present time they can’t be ranged. Added ability to play sounds/music from different folders. void RefreshMap(bool onlyTiles, bool onlyRoof, bool onlyLight) If there isn’t slashes (‘/’,‘\’) in path name than search is performed in the folder sfx/music. If there are slashes, than in the root (“data/mysounds/mysound.ogg”). Rev.68 http://www2.xp-dev.com/sc/change/94227/68 Fixed bug in the ObjectEditor when damage type is saved incorrectly. Rev.67 http://www2.xp-dev.com/sc/change/94227/67 Fixed crashing when calling CritterCl::[Param/Stat/Perk/etc]Base in client scripts; Fixed error with recording Anydata of zero length (by Atom). Rev.66 http://www2.xp-dev.com/sc/change/94227/66 Fixed incorrect weapon prototype; errors in checking for special encounters; added decraft of the sand sack to fixboy; other little fixes. Rev.65 http://www2.xp-dev.com/sc/change/94227/65 Redding: finished map according to the last concept; - Garbage was returned to static locations; - Ammo craft on benches (beta-version); - Destruction of the sack using skill repair now gives use empty sack. - Entering Den message was moved to texts from script. Rev.64 http://www2.xp-dev.com/sc/change/94227/64 AngelScript updated to 732 revision. Added new methods for arrays: void T[]::insertAt(uint, const T&) – element inserting in specified position in the array; void T[]::removeAt(uint) – deleting the element by index; void T[]::insertFirst(const T&) – element inserting to the beginning of the array; void T[]::removeFirst() – deleting the first element; void T[]::insertLast(const T&) – element inserting to the end of the array; void T[]::removeLast() – deleting the last element; void T[]::grow(uint) – add elements (the sames as a.resize(length()+X)); void T[]::reduce(uint) – delete elements (the same as a.resize(length()-X)); T& T[]::first() – call of the first element of the array (the same as a[0]); T& T[]::last() – call of the last element of the array (the same as a[a.length()-1]). Also deleted all functions ArrayPushBack as the built-in array functional was expanded. All the scripts were fixed accordingly. Rev.63 http://www2.xp-dev.com/sc/change/94227/63 Added ability to start the server as a service. For registration/start use key “-service” (shortcut FOServerService.exe.lnk). For deleting use keys “-service -delete” (shortcut FOServerServiceDelete.exe.lnk). Added ability to log using function OutputDebugString. The log can be caught (even remotely) using program DebugView http://technet.microsoft.com/en-us/sysinternals/bb896647.aspx For switching it on in server and client configs option LoggingDebugOutput is added. Server/client/mapper will work normally now with incorrect active folders. At start you set the current folder of executable. Fixed bug with absence of replacement “x” by “ч” in built-in punto switcher. Fixed crash in turn based mode and incorrect work of Map::GetCritter(uint critterId). Rev.62 http://www2.xp-dev.com/sc/change/94227/62 Fixed bug with updating vehicle data on the global map. Fixed bug with system hanging while looking items quantity in game info. Fixed bug with the incorrect login/disconnect. Fixed bug with incorrect creating non-stacking items on the map in the number of >1. Fixed bug with incorrect critters gathering when path tracing (by Atom). CRITTER_EVENT_TALK now performed before checking NPC for settings which could restrict speaking with it. Added new mechanism for script garbage gathering (by Atom). For config file simplification, the next options were removed: ASGarbageTime, VarsGarbageTime. Deleted transfer of a group of critters into global map processing global_process, CRITTER_EVENT_GLOBAL_PROCESS. Also instead of transferring a group into global map processing global_invite, CRITTER_EVENT_GLOBAL_INVITE, now only the leader is transferred. Instead of picking group use Critter@[]@ Critter::GetGlobalGroup(). Because of that, specification methods were changed: bool Critter::EventGlobalProcess(int type, Critter@[]& group, ...) bool Critter::EventGlobalInvite(Critter@[]& group, ...) for bool Critter::EventGlobalProcess(int type, Critter& cr, ...) bool Critter::EventGlobalInvite(Critter& leader, ...) Reserved functions of critter event CRITTER_EVENT_GLOBAL_PROCESS, CRITTER_EVENT_GLOBAL_INVITE bool _FuncName(Critter& cr, int type, Critter@[]& group, ...) bool _FuncName(Critter& leader, Critter@[]& group, ...) for bool _FuncName(Critter& cr, int type, ...) bool _FuncName(Critter& leader, ...) Fixed bug with incorrect cooldown for hijacking, now it is equal for a normal lock. Added checking for unopenable door to the lock break script. Rev.61 http://www2.xp-dev.com/sc/change/94227/61 Fixed bug with incorrect reappraisal of item flags in Mapper. Fixed bug when player isn't notified about moved item. Rev.60 http://www2.xp-dev.com/sc/change/94227/60 Fixed bug with incorrect displaying of the rain on roofs. Rev.59 http://www2.xp-dev.com/sc/change/94227/59 Mapper's fix for correct operating with new folder and print's names. Rev.58 http://www2.xp-dev.com/sc/change/94227/58 For editing use program Bitmap Font Generator v1.12. http://www.angelcode.com/products/bmfont/ Print should have the next attributes - OEM RUSSIAN, Padding 1 (in all directions), Binary, all symbols should be placed on the one texture. All prints are moved in the separate folder “Client\data\fonts\”. For the example print FONT_COURIER_NEW_SMALL is added. Look _client_defines.fos, client_main.fos, CourierNewSmall.bmfc, CourierNewSmall.fnt, CourierNewSmall_0.png. Added function in client’s scripts of activating the clock which shows you the time signal comes to server and returns (ping). You can use it for restriction of input while waiting for server’s answer. Fixed crushing when looking players statistics on server. Fixed crushing of Dialogue Editor (by Atom). Rev.57 http://www2.xp-dev.com/sc/change/94227/57 Expanded mechanism of operating with ingame radio. Added flag ITEM_RADIO for radio. (in _defines.fos). Radio messages are now also sent to radios which are on the ground . For their identification engine sends them with color 0xFFFFFFFE (in map_message in client_main.fos). Realization is in script radio.fos (interface, mechanics), call from main.fos. Interface data is taken from default.ini (Radio*). You can edit it with using item or using science skill on it. Radio data is situated in general fields of several item types. That’s why it isn’t a good idea to use this flag with Doors, Keys, Cars, Weapons, Armors, Holodiscs. Transmitting and receiving functions are separated. For managing the next flags and range types are used (_defines.fos): Restriction of transmitting/receiving is stored in Item/ItemCl::RadioFlags, used by the engine: RADIO_DISABLE_SEND, RADIO_DISABLE_RECV. Restriction of switching radio state in в Item/ItemCl::RadioFlags: RADIO_DISABLE_SHIFT_SEND, RADIO_DISABLE_SHIFT_RECV - restriction of switching transmit/receive; RADIO_DISABLE_SHIFT_BC_SEND, RADIO_DISABLE_SHIFT_BC_RECV - restriction of changing distance range; RADIO_DISABLE_SHIFT_CHANNEL – restriction of channel switching. Range types are stored in Item/ItemCl::RadioBroadcastSend/RadioBroadcastRecv, are used by the engine: RADIO_BROADCAST_WORLD – works all over the world; RADIO_BROADCAST_MAP – works within the limits of the current map; RADIO_BROADCAST_LOCATION - works within the limits of the current location; RADIO_BROADCAST_ZONE(x) - works within the limits of “x” zones on the global map; RADIO_BROADCAST_FORCE_ALL – works everywhere regardless of the adjustments of transmitting or receiving radio/ Added support of these flags to the object editor (both engine and script ones). Added scripts uint16 ProtoItem::RadioChannel, uint16 ProtoItem::RadioFlags, uint8 ProtoItem::RadioBroadcastSend, uint8 ProtoItem::RadioBroadcastRecv. For holodisc marking added flag ITEM_HOLODISK (in _defines.fos). Holodisc data is situated in general fields of several item types. That’s why it isn’t a good idea to use this flag with Doors, Keys, Cars, Weapons, Armors, Holodiscs. Added support of this flag in object editor. Added script uint ProtoItem::HolodiskNum. Added ability to use built-in cartridge indicator for other purposes. Added the next parameters: uint8 ProtoItem::IndicatorStart – initial value, - Item/ItemCl::Indicator; uint8 ProtoItem::IndicatorMax – maximum available value (for correct calculation of the strip position); uint8 Item/ItemCl::Indicator – current value. Mechanism is considered activated if maximum value in the prototype isn’t equal to zero. Added support of editing of initial and maximum values in the object editor. Method Item::GetMapPosition for the items which are in the global map returns their coordinates. Fixed bug with system hanging while looking online statistics. Added storing up to 20 ip addresses for one account (fonline.h). Item prototype’s fields, which are equal to zero, now cannot be saved. All prototypes are resaved. Continued working on multithreading in game logics. Added ignoring of non-initialized maps or locations while loading save (NPC’s would be moved to global map, items - deleted). Fixed bug in the dialogue on BiX location. Updated abilities of GUI scripting. In script _defines.fos notes “Used in engine” are replaced by “Hardcoded”; point is the same - to show that this data is used by engine also. Corrected some specifications in template.fos of reserved functions. Rev.56 http://www2.xp-dev.com/sc/change/94227/56 Changes in craft: some new recipe's (new weapon, etc.), added workbenches in some town/military bases. Rev.55 http://www2.xp-dev.com/sc/change/94227/55 - Updated Redding maps; - Deleted unused graphics; - Added second entrance to NCR; - Some changes in NPC's inventories on encounters. Rev.54 http://www2.xp-dev.com/sc/change/94227/54 - Slight fixes in Hartman's and Shrim's dialogues (Vault City); - Fixed problem with immediate sending off caravans/patrols Ahe9mPDq; - Changed content of the quest variable for the quest "Third trial. Drill." - Restored functions for triggers t_DialogNpc and scenery s_TransitToMap. Rev.53 http://www2.xp-dev.com/sc/change/94227/53 Fixes of KotW location. Quest for oil can can be done by everybody in Arroyo now. Rev.52 http://www2.xp-dev.com/sc/change/94227/52 Fixes of Brok and Xander Church location (by VaultTec) Rev.51 http://www2.xp-dev.com/sc/change/94227/51 Fixed names loading (*Names.lst) with the dialogue editor. Changed extention of its config file. Rev.50 http://www2.xp-dev.com/sc/change/94227/50 Fixed bug with duplicating of time events. Rev.49 http://www2.xp-dev.com/sc/change/94227/49 Slight optimization of multi-threading. Rev.48 http://www2.xp-dev.com/sc/change/94227/48 Fixed error in loading of games variables values. Fixed loading of saves games in single player mode. Rev.47 http://www2.xp-dev.com/sc/change/94227/47 Time events changes. - function specification void EraseTimeEvent(uint num) changed to bool EraseTimeEvent(uint num) Return value shows whether deleting is done or the event isn't found. - Deleted the next functions: uint CreateTimeEvent(uint beginSecond, string& funcName, Critter& cr, bool save) uint CreateTimeEvent(uint beginSecond, string& funcName, Item& item, bool save) uint CreateTimeEvent(uint beginSecond, string& funcName, Critter@[]+ critters, Item[]@+ items, bool save) For migration just put the identificator to the critter or item. Added the next functions for operating with event's values: bool GetTimeEvent(uint num, uint& duration, uint[]@+ values) bool GetTimeEvent(uint num, uint& duration, int[]@+ values) bool SetTimeEvent(uint num, uint duration, uint[]@+ values) bool SetTimeEvent(uint num, uint duration, int[]@+ values) Parametr "duration" - time till the event is done in seconds. Return value means that operation is completed, error means that event wasn't found. These functions are thread-safe, 2 thread can't operate with the events simultaneously. Function GetTimeEvent blocks using (changing) of the event until the script is finished or until SetTimeEvent is called, which unblocks the event. GetTimeEvent writes value to the end of the array, SetTimeEvent rewrites it completely. When null is transmitted to values SetTimeEvent values are not changed. - Event function specification can be of two types now: uint e_FuncName(uint[]@ values) uint e_FuncName(int[]@ values) Fixed bug with crashing while loading 3ds file without texture coordinates. Rev.46 http://www2.xp-dev.com/sc/change/94227/46 Added next fuctional for operating with files (class "file"): - for data reading uint8 file::readUint8() uint16 file::readUint16() uint32 file::readUint32() uint64 file::readUint64() In the case of error or the end of file it returns 0. uint file::readData(uint count, uint8[]& data) If data == 0 then program read all data till the end of the file beginning from the current position. Read data is added to the end of the array. The return value shows the real amount of read bytes. - For data recording bool file::writeUint8(uint8 data) bool file::writeUint16(uint16 data) bool file::writeUint32(uint32 data) bool file::writeUint64(uint64 data) bool file::writeData(uint8[]& data, uint count) If count == 0 it records all data from an array. In the case of error it returns false. Fixed bug with incorrect output of zoom value on minimap. Rev.45 http://www2.xp-dev.com/sc/change/94227/45 Extended range of game variables: - local variable of location (LLVAR_); - local variable of map (LMVAR_); - local variable of item (LIVAR_). When using them in dialogue values are taken from: for location - current critter's location; for map - current critter's map; for item - current item in the main slot. For operating with scripts use function GetLocalVar with transmitting of needed operator. Server will delete unused variables of all types automatically. Deleted server function uint DeleteVars(uint id). Dialog editor was adapted to the last updates of game variables. Added ability to define named value (DefineNames.lst) as a value for conditions and results. Added missed translations. Translations of commit history you can find here: http://www.xp-dev.com/forum/topic/3220 Rev.44 http://www2.xp-dev.com/sc/change/94227/44 Updated format of time output in dialogue with repairer-npc; Added script for realization of npc-travellers on global map.(traveller.fos and Davine's script in sf_common.fos); Added npc-traveller explosives-seller Davine. Can be hired in GECK town; Added trade mode "cash only" MODE_BARTER_ONLY_CASH; Fixed bugs in maps structure on maps with holodiscs. Rev.43 http://www2.xp-dev.com/sc/change/94227/43 Added setting in config which defines whether to bind logic threads to the core or let OS do it. In default it is enabled (1) 1. If zero then operating system automatically manage threads between cores, else affinity thread per core LogicThreadSetAffinity=1 Continued work on multi-threading of game logics. Rev.42 http://www2.xp-dev.com/sc/change/94227/42 Fixed crashing under certain conditions; Fixed cycle counting per second. Rev.41 http://www2.xp-dev.com/sc/change/94227/41 Fixed bug connected with the last update. Rev.40 http://www2.xp-dev.com/sc/change/94227/40 Multi-threading of game logics is now supported. You can read about this in details on the forum; Fixed path of recording/reading ban files; Added seconds on the globalmap clock; Decreased permissible length of text listener of channels and maps from 5 to 2 symbols; Deleted global server function void DeleteNpcForce(Critter& npc); Changed specification of method from uint Location::GetMaps(Map@[]& maps) const to uint Location::GetMaps(Map@[]@+ maps) const Now you can know the amount of maps on the location without recording them into array; Added basic server command ~log (~37). It is intended for text listening of server log. Minimum access: administrator. For adding to text listening you should transmit arguement "+", for disconnecting "-"; Fixed basic creating locations command ~addloc (~16); Upgraded basic command of looking player's id using his name ~id (~4); Changed specifications of global functions void critter_attack(Critter& cr, Critter& target, ProtoItem& weapon, ProtoItem@ ammo, uint8 aim) -> void critter_attack(Critter& cr, Critter& target, ProtoItem& weapon, uint8 weaponMode, ProtoItem@ ammo) int to_hit(CritterCl& chosen, CritterCl& target, ProtoItem& weapon, int hitLocation) -> int to_hit(CritterCl& chosen, CritterCl& target, ProtoItem& weapon, uint8 weaponMode); Added variables for weapons which state their active mode const uint8 Item::Mode const uint8 ItemCl::Mode 4 high-order bits - sight (look Hit locations in _defines.fos), 4 low-order bits - mode (0 – primary, 1 – secondary, 2 – third); Added macroses for convenience _WeaponModeUse, _WeaponModeAim, _WeaponModeMake в _macros.fos; Added returnable value of the current mode in method GetSlotProto (urgent for weapons) ProtoItem@+ Critter/CritterCl::GetSlotProto(int slot, uint8& mode) const; Renamed parametr #define ST_RATE_ITEM (102) to #define ST_HANDS_ITEM_AND_MODE (102) value stored in it: XXXX00YY, where XXXX pid - unarmed blow, and YY - mode. Changed way of the dialogue redirecting. You should use returnable value of result function or say-mode instead of uint __ForceDialog; Added specifications of functions: uint r_FuncName(...), uint dlg_FuncName(...) which are detected by server automatically; Fixed bug with moving pushed players only in one direction; Object pointers (derivatives arrays or class members)Location, Map, Critter, Item, GameVar can't be saved in global varities now. For scripts migration save their identificators (Location::Id, Map::Id, Critter::Id, Item::Id), addresing to the objects with (GetLocation, GetMap, GetCritter, GetItem). Weapons prototypes don't save curret mode of fire (in connection with multi-threading). Changed specifications of class members ProtoItem const uint8 Weapon_Skill, const uint8 Weapon_DmgType, const uint8 Weapon_Anim2, const uint16 Weapon_DmgMin, const uint16 Weapon_DmgMax, const uint16 Weapon_MaxDist, const uint16 Weapon_Effect, const uint16 Weapon_Round, const uint8 Weapon_ApCost, const uint8 Weapon_SoundId, const bool Weapon_Remove, const bool Weapon_Aim, const uint8 Weapon_CurrentUse, void Weapon_SetUse(uint8 use) const to const uint16 Weapon_Skill_F, const uint16 Weapon_Skill_S, const uint16 Weapon_Skill_T, const uint16 Weapon_DmgType_F, const uint16 Weapon_DmgType_S, const uint16 Weapon_DmgType_T, const uint16 Weapon_Anim2_F, const uint16 Weapon_Anim2_S, const uint16 Weapon_Anim2_T, const uint16 Weapon_DmgMin_F, const uint16 Weapon_DmgMin_S, const uint16 Weapon_DmgMin_T, const uint16 Weapon_DmgMax_F, const uint16 Weapon_DmgMax_S, const uint16 Weapon_DmgMax_T, const uint16 Weapon_MaxDist_F, const uint16 Weapon_MaxDist_S, const uint16 Weapon_MaxDist_T, const uint16 Weapon_Effect_F, const uint16 Weapon_Effect_S, const uint16 Weapon_Effect_T, const uint16 Weapon_Round_F, const uint16 Weapon_Round_S, const uint16 Weapon_Round_T, const uint16 Weapon_ApCost_F, const uint16 Weapon_ApCost_S, const uint16 Weapon_ApCost_T, const uint8 Weapon_SoundId_F, const uint8 Weapon_SoundId_S, const uint8 Weapon_SoundId_T, const bool Weapon_Remove_F, const bool Weapon_Remove_S, const bool Weapon_Remove_T, const bool Weapon_Aim_F, const bool Weapon_Aim_S, const bool Weapon_Aim_T Added special macros for convenience (Weapon in _macros.fos) _WeaponIsPrimaryAviable, _WeaponIsSecondaryAviable, _WeaponIsThirdAviable, _WeaponSkill, _WeaponDmgType, _WeaponAnim2, _WeaponDmgMin, _WeaponDmgMax, _WeaponMaxDist, _WeaponEffect, _WeaponRound, _WeaponApCost, _WeaponSoundId, _WeaponRemove, _WeaponAim, _WeaponModeUse, _WeaponModeAim, _WeaponModeMake Mapper updates: string@ MapperObject::PicMap/PicInv now return prototype's picturename if other isn't set up; Added const uint16 MapperMap::Width, const uint16 MapperMap::Height for storing current map sizes; Fixed function GetMapFileNames(...). Rev.39 http://www2.xp-dev.com/sc/change/94227/39 Slight fixes of quests in Den, Klamath Improved closed location in Redding Rev.38 http://www2.xp-dev.com/sc/change/94227/38 Slight fixes of quests from string "Guard"; Added services for guardsmen: doc. Troy can heal player; give stimpacks; Valery repairs items; Added universal repairing script for npc (repairer.fos). E.g. in the dialogue vc_valery.foldg 3 new special encounters with holodiscs; Several deleted functions from stdlib are returned. Rev.37 http://www2.xp-dev.com/sc/change/94227/37 Fix of calculating amount of dead NPC on location when necessity of attack is being determinated. Fix of amount loss allies counter when finishing the quest. Output of messages to log is disabled in quest “The drill”. Fix of limit of times amount quest “Dangerous hunt” can be done. Descriptions of deleted maps were returned, which made server restart impossible without saves clearing. Rev.36 http://www2.xp-dev.com/sc/change/94227/36 Fix of Hartman’s dialog. The wrong requirement was deleted. Rev.35 http://www2.xp-dev.com/sc/change/94227/35 New quests from string “Guard” in Vaultcity - Vaultcity guard. Third trial. Drill. - Easy walk. - Go there, don’t know where. - Dangerous hunt. - Diplomatic courier. Fix of caravan’s and patrol’s departure time. Relative departure time was substituted for absolute. Added ability of caravan’s instant departure from the dialog. Fix of items that were generated in encounters 0 in number. (It was impossible to throw out them) Fix of quest “Hub bibliography”. Player need 7 books to gain reputation instead of 6. Rev.34 http://www2.xp-dev.com/sc/change/94227/34 - Maps fixes - Fixed reaction of BG guards on explosives activation Rev.33 http://www2.xp-dev.com/sc/change/94227/33 - Graphics fixes - Non-used files were deleted - Original map of BG was returned Rev.32 http://www2.xp-dev.com/sc/change/94227/32 Private car parking in geck town is disabled till the problem with car boot is solved. Rev.31 http://www2.xp-dev.com/sc/change/94227/31 Added first quests of string “Guardsman”, VaultCity. (Clearing of server saves is needed) Added template for making quests-combats with npc. (fighter_quest.fos, e.g. “Guard. First trial.”) Added ability to take quest “Hub bibliography” again if player failed to finish it at previous time. Fixed incorrect condition in Dappo’s dialogue in quest “Lot of defective rifles”. Added verification of addressee in “Postman” quest, now player can’t bring letter to any npc of type stated in the letter. Rev.30 http://www2.xp-dev.com/sc/change/94227/30 Deleted not used MSG files - FOSCRIPT.MSG. Rev.29 http://www2.xp-dev.com/sc/change/94227/29 Updates of way of making records into log. Added ability to look the name of the thread which made a record. Option in config – LoggingThread. You can also turn on output in the server application using “Logging with thread”. Changed format of time output. Now it is not “time in ms”, but “hours:minutes:seconds:milliseconds”. Rev.28 http://www2.xp-dev.com/sc/change/94227/28 Fix and formatting. Rev.27 http://www2.xp-dev.com/sc/change/94227/27 Fixed mistakes in calculating karma in quest "Returning of the fugitive". Rev.26 http://www2.xp-dev.com/sc/change/94227/26 Changes on Church of Brok and Xander location: - fixed Preacher, Scientist, repairer Alechandro, Cook, Mickey dialogs; - quests work correctly now; - repairer Alechandro identifies items correctly; - ability to record the information about Church was added (after completing Preacher's quest). Rev.25 http://www2.xp-dev.com/sc/change/94227/25 Activating time of dynamite was fixed. Rev.24 http://www2.xp-dev.com/sc/change/94227/24 New algorithm of generating of pseudorandom variables was added (Mersenne twister). Previously was standart C algorythm srand/rand. Rev.23 http://www2.xp-dev.com/sc/change/94227/23 Energy barrier on the entrance of GECK town was improved. Rev.22 http://www2.xp-dev.com/sc/change/94227/22 Fixed client crashing on start. For preventing this bug in future the control system of versions of cashed scripts in the client has been added. Rev.21 http://www2.xp-dev.com/sc/change/94227/21 Fixed problem when it was impossible to add players to GECK town after removing them with option "Clear list". Rev.20 http://www2.xp-dev.com/sc/change/94227/20 Fixed cooldown of the Postman quest. Rev.19 http://www2.xp-dev.com/sc/change/94227/19 Wrongly deleted dialogs are returned. Rev.18 http://www2.xp-dev.com/sc/change/94227/18 Fixes Deleted not used files. Fixed errors when player removes child killer karma additional times. Fixed error with incorrect name of script of map_v15_village map. Added output of message of increasing trade skill when finishing “Farm vermins” quest to the log. Weakened the giant wasp in the quest in Modoc. Rev.17 http://www2.xp-dev.com/sc/change/94227/17 AngelScript was updated to rev.684, v. 2.19.2 Added global variables to the client: bool __ShowTile, __ShowRoof, __ShowItem, __ShowScen, __ShowWall, __ShowCrit, __ShowFast, __ShowPlayerNames, __ShowNpcNames, __ShowCritId. Deleted limit of min. time of using Map::SetLoopTime (it was 1 second). Fixed registration of the global variables of string type (pragma globalvar). Fixed using reserved global variables string type. Added global variables to mapper: string __ClientPath, __ServerPath. Deleted constant modificators in client from string CritterlCl::Name, CritterlCl::Lexems. Added variable CritterlCl::NameOnHead, which if is not empty, outputted above critter’s head. Rev.16 http://www2.xp-dev.com/sc/change/94227/16 Fixed reclearing of child killer status. Rev.15 http://www2.xp-dev.com/sc/change/94227/15 Fixes: - Fixed names of Giant Wasps and bugs in kills statistic; - Reduced requirements of amount of killed mobs and intelligence in Broken Hills quests (bh_marcus.fodlg, bh_super.fodlg); - Reduced requirement of intelligence for “Fresh blood” quest (vc_doctor_troy.foldg); - Fixed possibility of gaining experience multiple times in “Cabbage” quest in Modoc (mod_farmer_q.fodlg); - Player receives reputation in NCR for quest “True cowboy” even if only one Brahmin is brought (ncr_felix.fodlg); - Michael’s miniquest in NCR can be done by every player only once (ncr_michael.fodlg); - Added requirement of 16 level for “buggy” quest (ncr_ratch.fodlg); - Fixed amount of gaining experience when player rejects gratuity in “Postman” quest (q_mail_reciever.fodlg); - Fixed cooldown of “Postman” quest; - Cave mobs – spawn point near the exit grid was removed in the smallest cave; - Fixes of several dialogues in Vault City; - New quest – “Fugitive returning” – when finished, status “Child killer” is removed. Hubbologist in Redding bank offers this quest; - New quest “Farm vermines”. It is offered by Joe in Modoc (mod_joe.fodlg); - Fixed energy barrier in GECK town; - Added computer for breaking of energy barrier inside the town; - Added car lots for GECK town citizens (not more than 2); - Added ability of clearing of citizens list by town leader using the terminal. Rev.14 http://www2.xp-dev.com/sc/change/94227/14 Update for Notepad++ (Syntax_highlighting, autocomplete, function parameters hints) Rev.13 http://www2.xp-dev.com/sc/change/94227/13 First stable version.h3. Your title here...

11 months ago
SidleJinks picture

Description: Rev.194 http://www2.xp-dev.com/sc/change/94227/194 Variable __MaxLifeLevelSoftCap was added, it determines hitpoints rise per level. If it is equal to 0, then there’re no limitations, otherwise when character gets level = __MaxLifeLevelSoftCap, he won’t get more hitpoints per level . (For TLA __MaxLifeLevelSoftCap = 36). Dialogue with pay off Redding caravan fails was fixed. Chemist dialogue in SF who sells chitin armor was fixed. Locks for chests on Syd and Nancy’s quest location are generated randomly for each map. Output of errors to log in hostile_location_quest.fos script was switched off. Function of determination access rights when passing Redding gates was fixed (previously invalid permissions were accumulating in persons who have access list). Quest “Drill” script was fixed, now excess records in AnyData are deleted correctly after passing or failing the quest. Item “Chitin armor recipe” was restored, it was deleted by mistake. Rev.193 http://www2.xp-dev.com/sc/change/94227/193 Russian text output into log was fixed. Error appearing on starting single mode with enabled server GUI was fixed. One more fix of client-server network interaction (attempt of fixing hangings while downloading chache). Rev.192 http://www2.xp-dev.com/sc/change/94227/192 Bug with visualisation of other playing movement was fixed. It appeared in 161 revision. Rev.191 http://www2.xp-dev.com/sc/change/94227/191 Operation with network interaction was optimized, the processor will be loaded less when sending large volumes of information (e.g. cache transmitting). Models, which are situated in separate folders, loading was fixed (slashes are replaces by dots). Rev.190 http://www2.xp-dev.com/sc/change/94227/190 Cache loading was fixed. Cache situation was changed on the client’s side and now a separate folder for cache is created for every server. DataFiles.cfg situation was fixed. For critters in Mapper with Cond == 3 (dead) now automatically parameter ST_REPLICATION_TIME is set to -1 (if it is equal to 0) i.e. nonreplicated. And for Cond == 2 (knockout) big cooldown for getting up is set. For “dictionary” class was added method uint keys(string@[]@ keys) const which returns all the keys and their quantity. Now it is checked for presence of palette with the same name with the FRM file which is loading. If there isn’t one, then default is used (like now). Rev.189 http://www2.xp-dev.com/sc/change/94227/189 Extra system for detecting launched client’s windows was added. Bug with impossibility of reading some files when one copy of client/mapper/server is launched. Check for ITEM_GAG on detection of finishing REASON_HEX_BUSY_RING plan (when critter is surrounded by impassable objects or critters) was added. Ground and roof tiles offset was fixed in FOnline geometry. Rev.188 http://www2.xp-dev.com/sc/change/94227/188 Support of graphic formats MOS and BAM from Ininity Engine (Boldur’s Gate, Icewind Dale, Planescape Torment) was added. It is possible to define the number of played cycle or frame. To define cycle’s number in file name parameters (“S”) – define its index and to define the frame add dash and frame’s index. Examples: fileName$5.bam – load fileName.bam with frames for cycle № 5; fileName$1-4.bam - load fileName.bam with frame № 4 with cycle № 1; fileName.bam - load fileName.bam с with frames for cycle № 0. Rev.187 http://www2.xp-dev.com/sc/change/94227/187 Some actions were performed to fix server's hanging up. Rev.186 http://www2.xp-dev.com/sc/change/94227/186 Some actions were performed to fix server's hanging up. Not adding function's name to log was fixed. Levelcap was removed in the scripts. Rev.185 http://www2.xp-dev.com/sc/change/94227/185 NO_LOOT and NO_DROP mode were switched off for the giant bugs. Rev.184 http://www2.xp-dev.com/sc/change/94227/184 In connection with porting the server (*nix and 64bit) the next changes were made: Operating with net was rebuilded. Libevent library is used. http://monkey.org/~provos/libevent/ http://en.wikipedia.org/wiki/Libevent http://ru.wikipedia.org/wiki/Libevent Operating with GUI was remade. FLTK library is used. http://fltk.org/ http://en.wikipedia.org/wiki/FLTK http://ru.wikipedia.org/wiki/FLTK Operating with threads was remade. Pthreads is used http://sources.redhat.com/pthreads-win32/ (Windows port) http://en.wikipedia.org/wiki/Pthreads http://ru.wikipedia.org/wiki/Pthreads Changes are serious and can cause unstable work. Memory leak when loading maps was fixed in server. Loading maps with items in containers/inventories in mapper was fixed. Don’t use mapper of 171-182 revisions for editing old maps. Now parameters values for critters in mapper are applies only if they are not equal to zero. Initially value is taken from defaults (from .fopro), then from the map’s data if !=0. Critter’s names in mapper are now taken only by prototype number without accounting dialogue’s number. Old specification of Log function which was changed in 174 revision was returned to native scripts. Server’s GUI now ‘Courier New’ type, option in config was deleted. Option for changing server’s window size and its elements was added GUI size modifier GUISize=0 E.g. if GUISize=-50 then server’s window and all its elements will be 50% smaller, if GUISize=30 then 30% larger. Log in server window is unrolled as defaults. Also, the information from the log can be copied and scrolling is stopped if it is focused. Client’s crashing when playing items animation was fixed. Paths make_tla.bat were converted to Visual Studio 2008 (9.0). Rev.183 http://www2.xp-dev.com/sc/change/94227/183 Lo Pan’s mercenaries call leader’s name correctly now. Nancy and Sid’s quest location now is deleted after leaving it (previously it wasn’t deleted and hanged in the memory). SF docs were excluded from NoPvP locations. Letters generation in Postman quest was fixed. Holodisk with combat robot’s video recordings can be given to Buster now. Shaneman’s documents now have description in “Diplomatic mission” quest. A dialogue between bar clients in outer Vault City was added (wipe is required). Mini quest “Seduce art” was added in Klamath (wipe is required). Rev.182 http://www2.xp-dev.com/sc/change/94227/182 NPC-travellers will no longer take dead characters to the global map. Atoll was removed from Eli’s destinations. Skill displaying when increasing it through the dialogue was fixed. The mistakes in the newcomer’s dialogues in “Anger” quest were fixed. The mistake in mercenaries script which caused the leaving the employer earlier was fixed. Rev.181 http://www2.xp-dev.com/sc/change/94227/181 Reading nicknames from ignor list file was fixed. Console command for adding a player to the ignor list was added ~ignore PlayerName. Rev.180 http://www2.xp-dev.com/sc/change/94227/180 Mechanism of reputation calculation was switched off due to its incorrect work. Now all the list will be visible, but will work correctly. Rev.179 http://www2.xp-dev.com/sc/change/94227/179 Network protocol bug which caused short hangs up was fixed. Client's script was fixed which could cause null parameter call. Rev.178 http://www2.xp-dev.com/sc/change/94227/178 Superfluous rifles on offer were fixed. Rev.177 http://www2.xp-dev.com/sc/change/94227/177 Game version increment. Rev.176 http://www2.xp-dev.com/sc/change/94227/176 Sequence of handlers calling was fixed MAP_EVENT_OUT_CRITTER, MAP_EVENT_IN_CRITTER now the first one is called initially, then the second On intro_init map static lighting was set. Group moving indication on the global map was fixed (previous update bug). Rev.175 http://www2.xp-dev.com/sc/change/94227/175 Console command ~globalmap was added. It moves player to global map. It works only on noPvP maps for players not in combat mode and with noPvP mode turned on. In caravans and travellers scripts functions of moving to final destination's map were updated. Rev.174 http://www2.xp-dev.com/sc/change/94227/174 Porting game to Linux was started. Also supporting of 64 bit platforms. Client’s native libraries are now transmitted automatically. They are stored in ‘Client/data/cache’. Folder with scripts ‘Client/data/scripts’ is not used anymore and was deleted. To the server’s folder library STLPort (http://www.stlport.org/) was added. Client’s libraries are now compiling with it’s help. It is connected with porting to other platforms. Additional methods of moving were added to critters in server scripts bool Critter::TransitToMap(uint mapId, uint16 hexX, uint16 hexY, uint8 dir, bool withGroup) bool Critter::TransitToMap(uint mapId, int entireNum, bool withGroup) bool withGroup – when moving from global map to local map, all the group will be moved. Regular TransitToMap (without bool withGroup) work as with withGroup == false. Previously they worked as как withGroup == true, what led to moving all the group when replicating, if dead critter was on the global map. 3d critters were switched off. For switching on see PLAYERS_3D in _defines.fos. Constants for operating with game constants were added(see 168 revision, http://www2.xp-dev.com/sc/change/94227/168). Specification for the reserved function Log in native scripts was changed. Now the first returned parameter is function’s name from which it was called. Rev.173 http://www2.xp-dev.com/sc/change/94227/173 Traders were added to Atoll and Redding. Barterground was moved to position 690:760 as it isn’t needed anymore in north-west region due to noPvP mode. Locations “BiX Church” and “Atom’s Church” were moved to special encounters class. Fixed rewards in some quests. Maps fixes. Biscuit on Modoc can be received only once now (as in Fallout 2). Rev.172 http://www2.xp-dev.com/sc/change/94227/172 noPvP mode was activated on some TLA maps. It will be used on the next TLA session. For switching it off on your server set global variable __NoPvpMaps=false; in script config.fos Ability of making a list of ignored players, it works similarly NameColorizing. It needs manual adding nickname of ignored player to IgnoreList.txt For refreshing the list of ignored players in game use console command ~ignorelist. Rev.171 http://www2.xp-dev.com/sc/change/94227/171 Derivative objects system for mapper was updated. When placing base object, all his derivatives are placed automatically. If one object from the group is being selected - all others are being selected too. If the prototype or position of the derivative object is changed, changes will be automatically applied by mapper or server when loading. For the example see cars, at the present time they have one derivative object – their trunk. Now when placing the car, it will be created automatically, also it will be moved with it and if base or derivative object is deleted, all the group will be deleted too. The system of moving selected objects in mapper was upgraded. Now in hexagonal system the selected objects will be moved without being tearing apart. Also the selected objects, when being moved, will stop at the map’s edge, so they won’t mix into a pile. The problem with detecting whether items in container belong to their inventory or container. Previously items were placing on the hex and if you place two containers on the same hex, all the items will stack in one container. Now it is fixed. Item::TrapValue initialization through mapper was fixed. If rewriting is performed on prototypes loading, alert is displayed. It was added for items and critters prototypes. In object’s structure in mapper was deleted field const bool Item_InContainer and added const uint UID, ContainerUID, ParentUID, ParentChildIndex Rev.170 http://www2.xp-dev.com/sc/change/94227/170 Now server doesn't block client's libraries while working. Previously you needed to stop the server to replace client's dll (Server/scripts/fonline_tla_client.dll). Rev.169 http://www2.xp-dev.com/sc/change/94227/169 Combined content of MASTER.DAT + CRITTER.DAT. Size - 201 MB! Rev.168 http://www2.xp-dev.com/sc/change/94227/168 Client and Mapper are no longer bounded with Fallout’s data files - MASTER.DAT and CRITTER.DAT. These files content is combined (excess data is deleted) and packed into fallout.dat (will be uploaded with the next update) and defined in DataFiles.cfg. Global variables string __MasterPath, __CritterPath were deleted. The configurator (FOConfig.exe) is updated accordingly fixes above. Critter’s lighting in the death moment and flat items lighting was fixed. To server/client/mapper scripts the next functions for operating with the constants (*Names.lst) were added: int GetConstantValue(int constCollection, string@+ name) – identifying constant’s value by the name; string@ GetConstantName(int constCollection, int value) - identifying constant’s name by the value; void AddConstant(int constCollection, string@+ name, int value) – adding separate constant to the collection; bool LoadConstants(int constCollection, string@+ fileName, int pathType) – loading/reloading the collection; int constCollection – collection’s number, see Constants collections in _defines.fos, also you can define your own collections; string@+ name – constant’s name; int value - constant’s value; string@+ fileName, int pathType – collection file’s name and folder path. Rev.167 http://www2.xp-dev.com/sc/change/94227/167 Bug with error of name/password in login menu if it exceeds 12 symbols was fixed. Screen centering on the player when loading map in right-angle geometry was fixed. Copying objects in Mapper from smaller map to the bigger one was fixed. Mapper hanging up when Sleep < 0 was fixed. Crashes when loading ART files were fixed. Principe of transparency defining with parameter ‘”t” was changed, now it isn’t equal to 255 – paletteIndex, but to max(R, G, B). Rev.166 http://www2.xp-dev.com/sc/change/94227/166 System of operating with items prototypes was updated (ProtoItem). Ability to add your own fields to proto class was added. New pragma ‘bindfield’ is used for this, e.g.: #pragma bindfield "const int ProtoItem::MyValue -> 400" it means creation of field MyValue of int type with offset 400 (considering thas int is 4 byte, it will occupy bytes 400, 401, 402, 403). Totally for user’s fields 500 bytes are available. Field is equal to zero as defaults, but it is possible to change the value by defining value (in the current case MyValue=111 or MyValue=SkillBigGuns) in proto file (.fopro), number (if it contains only numbers) or path to the file (it is identified by the presence of ‘/’ or ‘\’ symbols). For now fields which are not used by the engine are taken out to scripts, see _defines.fos Item prototypes fields. Changes in structure ProtoItem. All next methods are deleted uint8 GetType() const uint16 GetProtoId() const bool IsGrouped() const bool IsWeared() const bool Container_IsGroundLevel() const List of new fields which are registered in the engine (part of them is renamed, some were deleted) http://pastebin.com/8R4QkP3h The other fields are registered with #pragma bindfield in _defines.fos. Now all items can stack and wear out, for this Boolean fields are added to the prototypes bool ProtoItem::IsStackable bool ProtoItem::IsDeteriorable Item type ITEM_MISC_EX was deleted, it is combined with ITEM_MISC (miscex.fopro is deleted). Vehicles are taken out to separate type ITEM_CAR (car.fopro was added). Also now user can define any type numbers for the items. Former fields uint MiscEx_StartVal0..9 of the start values for Item::Val0..9 were moved to common area named StartValue0..9, and with these values Item::Val0..9 are initialized. Metod bool Item::IsCar() const was deleted, instead of it use GetType()==ITEM_CAR. The next methods are renamed bool Item::IsGrouped() const -> bool Item::IsStackable() const bool Item::IsWeared() const -> bool Item::IsDeteriorable() const The next fields are renamed uint16 Item/ItemCl::BrokenWear -> Item/ItemCl::Deterioration uint16 Item/ItemCl::CarDeteoration -> Item/ItemCl::CarDeterioration uint8 MapperObject::Item_DeteorationFlags -> uint8 MapperObject::Item_BrokenFlags uint8 MapperObject::Item_DeteorationCount -> uint8 MapperObject::Item_BrokenCount uint16 MapperObject::Item_DeteorationValue -> uint16 MapperObject::Item_Deterioration Mechanism of affiliated objects was moved for common use. Previously it was available only for vehicle’s trunk. One object can have up to five derivatives. Numbers of the derivative objects are defined in uint16 ProtoItem::ChildPid_0..4. By creation of base object, derivatives are created automatically. For now Mapper doesn’t create affiliated obkects automatically, but it will be fixed in further. For setting the place of situation, special field ChildLines_0..4 is used (former MiscEx.Car.Bag_0..1, see below by recording format). Also it is possible now to define automatic blocking for any objects, not only for vehicles – field BlockLines (former MiscEx.Car.Blockers). Recording format for Child/BlockLines – XYXYXY..., where X is direction number (0..5/7), Y is the amount of steps (1..9) in this direction (previously for vehicle’s trunk for another recording format - XXXX...). Maximum amount of steps for BlockLines – 50, for ChildLines – 6. For operating with derivative objects use methods Item@+ Item::GetChild(uint childIndex) const (бывшая Item@+ Item::CarGetBag(int numBag)) bool Map::CheckPlaceForItem(uint16 hexX, uint16 hexY, uint16 pid) const (bool Map::CheckPlaceForCar(uint16 hexX, uint16 hexY, uint16 pid) const) Fields renaming affected lots of scripts, be attentive. Old proto format is converted to the new one automatically, but Object Editor (ObjectEditor.exe) still operates only with old format. It will be fixed soon. To replication.fos and entires.fos scripts the influence of right-angled geometry was added. Script main_planes.fos is formatted as a separate module. All pragmas were move to the end of _defines.fos. Drop of FPS when switching on view/attack borders was fixed. Rev.165 http://www2.xp-dev.com/sc/change/94227/165 Fix for the ASCompiler. Rev.164 http://www2.xp-dev.com/sc/change/94227/164 Changed ASCompiler output format to “filename(linenumber) : message”. Such output is recognized by a number of IDEs and allow jumping to the code by a double-click on the output line. Rev.163 http://www2.xp-dev.com/sc/change/94227/163 Tabs management system was added to Mapper. Now one tab can have numerous subtabs. Tabs names and its filling is defined in mappers scripts. But some tabs already have initial filling. Item – items prototypes by defaults (items.lst); Tile – tiles by default, search is performed in ‘art/tiles/’; Crit – critters prototypes by defaults (critters.lst); Fast – displays often used objects, initial state is defined in scripts (InitializeTabs in mapper_main.fos); Ign – Ignore, shows ignored objects which are not shown on the map; Inv, Msg, Map – special tabs which have nothing to do with the mechanism, but it is possible to change its name throug TabSetName (see below). The tab can have subtabs only of one type – tiles, critters or items (displayed in priority order). For items and critters the subtab’s name is chosen by user, for the tiles it is performed automatically. The lowest subtab “all” contains all prototypes (or tiles) on a list above. For activation the menu of tab choosing – perform a double click on it. If positions are numerous then use mouse wheel for navigation (scroll speed: normal – 4, with pressed shift – 8, with pressed ctrl – 20, with pressed alt – 50). For tabs management use scripts, functions Tab* uint TabGetTileDirs(int tab, string@[]+ dirNames, bool[]+ includeSubdirs) uint TabGetItemPids(int tab, string@+ subTab, uint16[]@+ itemPids) uint TabGetCritterPids(int tab, string@+ subTab, uint16[]@+ critterPids) void TabSetTileDirs(int tab, string@[]+ dirNames, bool[]+ includeSubdirs) void TabSetItemPids(int tab, string@+ subTab, uint16[]@+ itemPids) void TabSetCritterPids(int tab, string@+ subTab, uint16[]@+ critterPids) void TabDelete(int tab) void TabSelect(int tab, string@+ subTab) void TabSetName(int tab, string@+ tabName) int tab – tab’s number (see Tabs in _mapper_defines.fos); string@[]@+ dirNames – folder’s names for tiles searching; bool[]@+ includeSubdirs – turn on search in subfolders; string@+ subTab – subtab’s name; uint16[]@+ itemPids – item’s prototype numbers array; uint16[]@+ critterPids - critters’s prototype numbers array; string@+ subName – tab’s name. Global variable was added bool __SplitTilesCollection = true It defines whether tiles should be divided into groups in the folders. The group is defined as a string in the file’s name before the first number (e.g. abc12.png - group abc), if the number is absent, then group is defined as '<other>'. In connection with these changes, the global functions are deleted uint GetFastPrototypes(uint16[]@+ pids) void SetFastPrototypes(uint16[]@+ pids) Other updates. Fixed incorrect work of server/client which caused some bugs. Global variable int __GeometryType was added to _defines.fos for the indication of chosen geometry. See constants in _defines.fos Geometry. Depending on its value, tab with Tactics and Arcanum is added. Ability to work with file names which include spaces is added. When loading ART files, it is possible to flip them vertical or horizontal. Parameters in the file name - ‘v’/‘V’ and ‘h’/‘H’. When loading SPR file, if you define in changing color parameter – layer’s number -1, then the modificator will be applied to all four layers. Rev.162 http://www2.xp-dev.com/sc/change/94227/162 Quest perks “Midnight Child”, “Nosderatu Blood” were added (Modoc, “Night’s tender”). Now new home position is set for NPC-travelers (Devin, Eli) when they enter new location. Female characters now can finish quest of removing childkiller status. Allies HP and resistances were increased in “Dangerous hunt” quest. Also a simple dialogue is added to them. The forged letter is now removed from the inventory when finishing quest “Forgery”. Edvin in Klamath tells with a popup phrase when starting gathering items. A delay was added to the prisoner giving the cues in “Ernst Telman” quest. Ability of intimidating the NPC visitor if it’s a woman was deleted in quest “Wrath”. Barcus now reacts with popup phrases to the futher meetings with the player who have done quest “Amnesty for Joshua”. Upon the receiving lieutenant rank of Vaultcity’s Guard, player is awarded with a black combat armor. In “Diplomatic Courier” quest time (24 hours) which Sheiman takes for the thoughts now is calculated correctly. Upon finishing this quest, player receives +1 reputation in NCR. Sell price of the buggy which player receives upon finishing the quest in NCR was set to zero. Dialogue launch when player uses an antidote in quest “Poisoned Regulator” in Redding was fixed. Players who gained Vaultcity citizenship now can trade with Randal with no restrictions. Reputation calculation in quests “Real Cowboy”, “Hub Bibliography” in NCR was fixed. If player refuses the reward in “Hub Bibliography” quest, he gains +2 reputation (was +1) when he delivers 5 books. Increasing raider’s resistances and skills every new attack on NCR was switched off. Ability of crafting and buying chitin armor was added. Giant beetles drop chitin. Items with ITEM_GAG flag deletion upon player’s death was fixed. Rev.161 http://www2.xp-dev.com/sc/change/94227/161 Ability to customize game geometry was added, either the support of isometric projection with quadrangles was. For customization use global variables bool __MapHexagonal – isometry type: true - hexagonal, false - quadrangular; int __MapHexWidth – hex width; int __MapHexHeight – hex height; int __MapHexLineHeight – hex line height; int __MapTileOffsX/Y – ground tiles offset; int __MapRoofOffsX/Y – roof tiles offset; int __MapRoofSkipSize – amount of hex per one roof tile (necessary for its correct hiding); float __MapCameraAngle – 3d model rendering angle; bool __MapSmoothPath – path smoothing when moving; string __MapDataPrefix – path and prefix for the geometry files. Operational sprites for geometry are situated in art/geometry/. Quadrangular isometry use 8 directions, hexagonal – 6. In script config.fos in function InitializeGeometry(), necessary adjustments for 3 games (Fallout1/2, Fallout Tactics and Arcanum) are added. This function can be called in server, client and mapper scripts, as all three of them need geometry information. Global variables uint __LookDir4, uint __LookSneakDir4 were added for 8-directional geometry. Fixed Tactics SPR files loading. Mode MODE_NO_TALK was added. It affects ability to talk and appearance of the icon in the context menu. Double click on hex, affecting avatar’s moving, was fixed. Creation of descriptions for critters prototypes (FODLG.MSG) with high identifiers was fixed. Image of elephant gun was added in 3d. Rev.160 http://www2.xp-dev.com/sc/change/94227/160 Fixed a bug with server and client communication. Fixed a bug with wrong sprites display. Rev.159 http://www2.xp-dev.com/sc/change/94227/159 Documentation's update, mistakes fixes. Rev.158 http://www2.xp-dev.com/sc/change/94227/158 Script start_server_client.fos was renamed to config.fos and now it isn't simply pasted into function start(), but presented as a separate module with function InitializeGame(). Macros for operating with time were moved from _macros.fos to separate module _time.fos. Slight fix of drugs.fos. Rev.157 http://www2.xp-dev.com/sc/change/94227/157 Errors messages in server log when operating with functions GetPlayerName/GetPlayerId were removed. Also GetPlayerName returns null now, if the player wasn't found. Bugs of reputation calculation were fixed. Rev.156 http://www2.xp-dev.com/sc/change/94227/156 Ability to affect the colors when loading Tactics sprites was added. To make color shift, define necessary values in file name’s parameters (“$”). Format: fileName$[index,r,g,b]animName.spr (can be any amount of shifts […]) where index – body part’s number (0 - miscellaneous, 1 - skin, 2 -hair, 3 - armor); r,g,b – color shift for the each component, can be negative Example: someSprite$[2,50,-30,-20]anim1.spr – load sprite someSprite.spr, with animation anim1 and hair’s color shift in RGB (50,-30,-20). Additional flags for operating with color’s shift were added for Tactics critters (_animation.fos, animation.fos). Use macros ANIM1_COLOR_SKIN(index), ANIM1_COLOR_HAIR(index), ANIM1_COLOR_ARMOR(index) for values defining. Index can take on value from 0 to 15, appropriate to it values of color shift look in array colorOffsets of animation.fos script. For ability testing you can use text function void ColorOffset(Critter& cr, int skin, int hair, int armor) in test.fos. Rev.155 Some native structures were fixed. Rev.154 http://www2.xp-dev.com/sc/change/94227/154 AngleScript is updated to revision 822. Ability of sorting is added to scripts arrays Ascending sort void array::sortAsc() void array::sortAsc(uint index, uint count) Descending sort void array::sortDesc() void array::sortDesc(uint index, uint count) For user’s classes sorting realize opCmp method http://www.angelcode.com/angelscript/sdk/docs/manual/doc_script_class_ops.html Vehicle animations on the global map and item’s animations in Mapper are fixed. Some points in operating with critter’s animations are fixed (animation.fos). Global variable __GmapActive is fixed. Global variable for setting min. offline time after that client will completely exit from the game was added. uint __MinimumOfflineTime = 180000; // 3 minutes Rev.153 http://www2.xp-dev.com/sc/change/94227/153 Additional constants for operating with Chosen's actions were updated (Get/SetChosenActions, for CHOSEN_USE_ITEM). Rev.152 http://www2.xp-dev.com/sc/change/94227/152 Additional constants for operating with Chosen's actions were added (Get/SetChosenActions). Rev.151 http://www2.xp-dev.com/sc/change/94227/151 Bugs with incorrect files's names path detecting were fixed. Rev.150 http://www2.xp-dev.com/sc/change/94227/150 3d models loading was fixed. 3d models rendering to sprites was fixed. Critters animations were fixed (death in 2d and 3d modes). Shift calculation for some models was fixed. SAY_DIALOG/SAY_APPEND mechanics was fixed. (by Atom) Server’s config loading in Mapper was fixed. (by Atom) File HashNames.lst was added to client. Names of files which contain parameters (‘$params’) should be entered in it. If you use such names in the prototypes, Mapper or scripts GetStrHash), then include this name to this list. Format of writing: [any number] [file’s name] [end of string] E.g. 0 art\scenery\BrazureFire$t.ART 0 art\scenery\BrazureFire$t3.ART In further it is possible to detect and transmit such names automatically, but for the present use this system. Roof disappearing if it is situated in odd hex in two axis. Rev.149 http://www2.xp-dev.com/sc/change/94227/149 Documentation was updated. Some fixes in Arroyo (Minoc’s quest about raiders). Usage mode was added for sledgehammer and supersledge (for resources mining). Guard lib was brought into common standard of scripts formatting. Rev.148 http://www2.xp-dev.com/sc/change/94227/148 Two reserved variables were added to HLSL effects float AnimPosProc – current animation’s per cent 0%..100%, [0,1); float AnimPosTime – current animation’s time in seconds. Client’s hanging under certain circumstances was fixed (e.g. receiving item’s data when player in process of moving between maps). Dump generation when closing server application without stopping was switched off. Generation of unnecessary messages to log in function animation_ animation.fos was fixed. Rev.147 http://www2.xp-dev.com/sc/change/94227/147 Parameters for critter’s movement controlling were added. Time for moving in milliseconds: #define ST_WALK_TIME (117) #define ST_RUN_TIME (118) Ability to move #define MODE_NO_WALK (539) #define MODE_NO_RUN (540) If these parameters are equal to zero, then data is taken from CritterTypes.cfg. Loading of some ART files was fixed (Arcanum). Ability of specifying special image processing was added. Palette elements will be transparent depending on its index in the palette (alpha = 255 – index). To chose this loading type - use symbol “t” (or “T”) in file name parameters. E.g. ‘filename$t.art’; also you can combine with palette, e.g. ‘filename$1t.art’. Ignoring of spec.symbol “/r” was additionally added for splitEx function. In functions void DrawSprite(... bool applyOffsets) if applyOffsets == true there were additionally added shifting of width/2 and height of the image. Unnecessary fo3d files were deleted. Palette influence for Arcanum critters was fixed. Rev.146 http://www2.xp-dev.com/sc/change/94227/146 One more fix of incorrect critter displaying. Rev.145 http://www2.xp-dev.com/sc/change/94227/145 Quest “Communicated” was added (Redding). Caravaneers phrases were fixed, now they tell correct departure dates. Quest “Honomer’s bodyguard” was added (San Francisco). Retina scanner in GECK town was fixed. Slight fixes of the hubbolog’s map in San Francisco. Special result function for skill rise calculation through a dialogue was added.(dialog@r_SkillUp) The script for quest locations creating was fixed (hostile_location_quest.fos), allies and enemies scripts now work correctly. Resetting of a quest variable when deleting the location was fixed. Script for realization a dialogue between several npc’s with popping up phrases was added. (npc_dialog.fos) Story line implementation was continued. Maps numeration in the location with mutants was fixed (quest string “Guardian”). Rev.144 http://www2.xp-dev.com/sc/change/94227/144 Critter’s hitpoints regeneration was moved to scripts, you can look realization in function critter_idle main.fos. Global function for critters sampling from the global map was added to server scripts. uint GetGlobalMapCritters(uint16 worldX, uint16 worldY, uint radius, int findType, Critter@[]@+ critters) Additionally to methods bool Map::GetNearEntireCoords(int& entire, uint16& hexX, uint16& hexY) const bool Map::GetEntireCoords(int entire, uint skip, uint16& hexX, uint16& hexY) const were added methods bool Map::GetNearEntireCoords(int& entire, uint16& hexX, uint16& hexY, uint8& dir) const bool Map::GetEntireCoords(int entire, uint skip, uint16& hexX, uint16& hexY, uint8& dir) const which return direction. Global variable which specifies if the password in the client’s login window should be hidden was added bool __HidePassword = true Incorrect critters creation in Mapper was fixed. Displaying of switching critter’s type 3d->2d on the client’s side was fixed. Rev.143 http://www2.xp-dev.com/sc/change/94227/143 Fixed critters loading in Mapper (141 revision's bug). Rev.142 http://www2.xp-dev.com/sc/change/94227/142 Fixed server loading (the previous revision bug). Rev.141 http://www2.xp-dev.com/sc/change/94227/141 Mechanism for identifying critter’s animation file name was added. Now you can operate with critter’s animations from Tactics and Arcanum without any conversions. All data files which you need for enabling one or another critters are cited in CritterTypes.cfg comments. The next critters were added to SDK: Humanoid, Behemoth, MTT, Pacification. They are repacked to the separate archive ftrobots.bos. But all available critters from Tactics and Arcanum are added to CritterTypes.cfg with correctly defined parameters for them (by Tabloid), so you can enable the needed data files and use the critters. All animations are transformed to the general appearance (ANIM2_2D*, ANIM2_3D* -> ANIM2*). The functional for operating with them is moved to scripts. In some places where these values are used, numeric literals are replaced by string constants, which description you can find in DefineNames.lst. Fixes were made in weapons prototypes (weapons.fopro) and fo3d templates for 3d critters from VanBuren (_VBHuman.fo3d, _VBMob.fo3d, _VBWeapon.fo3d). Now three sets of primary and secondary animations are used for critters, for three condition types – alive, knockout, dead const uint Critter/CritterCl::Anim1/2Life/Knockout/Dead (const uint Critter/CritterCl::Anim1/2 were deleted). These values are used for animations as default. Pay attention that Anim1 additionally is summed up with animation of the weapon in the active slot, bit-by-bit OR. It is necessary for assignation certain values on continuing basis (e.g. sitting, lying position). For changing these values the next method is used void Critter::SetAnims(int cond, uint anim1, uint anim2) int cond – defines the position to apply values to (COND_* in _defines.fos), if null it is applied to all three; uint anim1, anim2 – animation values. Deleted const uint8 Critter/CritterCl::CondExt Accordingly all COND_*_* for them are deleted. Now position is differentiated by the animations. In connection with it, the next methods specifications were changed void ToDead(uint anim2, Critter@+ killer) bool ToKnockout(uint anim2begin, uint anim2idle, uint anim2end, uint lostAp, uint16 knockHx, uint16 knockHy) void EventKnockout(uint anim2begin, uint anim2idle, uint anim2end, uint lostAp, uint knockDist) void EventSmthKnockout(Critter& fromCr, uint anim2begin, uint anim2idle, uint anim2end, uint lostAp, uint knockDist) uint anim2begin, anim2idle, anim2end – animations of the knockout begging, staying in it and coming to yourself. Standard macroses are defined for the transfer KNOCKOUT_ANIM2_DEFAULT, KNOCKOUT_ANIM2_STUNNED (in _animation.fos). Also Mapper operates now not with CondExt, but with Anim1/Anim2 for the current Cond. Global variables for client/mapper for defining combat mode animations were added uint __Anim2CombatBegin = ANIM2_BEGIN_COMBAT uint __Anim2CombatIdle = ANIM2_IDLE_COMBAT uint __Anim2CombatEnd = ANIM2_END_COMBAT The next reserved client/mapper functions were added (animation.fos): - string@ critter_animation(int animType, uint crType, uint anim1, uint anim2, uint& pass, uint& flags, int& ox, int& oy) Function which is called when loading necessary animation. Returned value - file’s path and name. int animType – critter’s animation type (new parameter which is set in CritterTypes.cfg); uint crType – critter’s type; uint anim1, anim2 – animation’s indexes; uint& pass – function call’s number, is changed by the user. If animation loading failed and this parameter was changed, then function will be recalled (in certain cases you should try to load different files for the one animation); uint& flags – flags, at the present moment two of them – to take the first or the last frame from the animation ( Anim loading flags in _animation.fos); int& ox, &oy – shifts for the animation, in pixels. - bool critter_animation_substitute(int animType, uint crTypeBase, uint anim1Base, uint anim2Base, uint& crType, uint& anim1, uint& anim2) If animation loading failed (and uint& pass wasn’t changed), then this function is called for animation substitute detection (e.g. left hook can be replaced by the right hook). true is returned if the substitute was found (engine also additionally checks if crType, anim1, anim2 were really changed), false – no substitute, animation won’t be loaded and played. int animType – see above; uint crTypeBase, anim1Base, anim2Base – base critter’s and animation’s type, which were at the start; uint& crType, &anim1, &anim2 - critter’s and the current animation’s type for the substitution - bool critter_animation_fallout(uint crType, uint& anim1, uint& anim2, uint& anim1ex, uint& anim2ex, uint& flags) As Fallout’s animations are still loaded by the engine (additional shifts calculation and animations pasting together is needed), for determining animations conformity this function is called, i.e. instead of critter_animation for fallout’s animations this function is called. true is returned if animation is presented, false – not. Method bool Critter::IsAnim3d() const is deleted, use instead of it the global function int GetCritterAnimType(uint crType) values look in Anim types _animation.fos. Critters actions sounds now are played in the scripts, in animation_2d/3d_process. New mechanism for sound file name identification was made, look PlayAnimSound in animation.fos. Critters prototypes were divided into fallout’s (fallout2.fopro) and TLA's (tla.fopro). Bug with roof’s non-transparency in Mapper was fixed. Name indication of chosen critter or tile prototype in mapper was added. Format fo3d now recognizes named constants DefineNames.fos, namely for modificators Mesh, Subset, Layer, Value, DisableLayer, DisableSubset, Texture, EffDef (для Dword), Anim, AnimSpeed, AnimEqual. Global server variable for determining call frequency was added GLOBAL_PROCESS_MOVE uint __EncounterTime = 5000 Global client variable for determining frequency of foolish trick animation call was added uint __CritterFidgetTime = 50000 is deleted using formula Random(__CritterFidgetTime, __CritterFidgetTime * 2) Item prototype’s parameter was deleted bool ProtoItem::Weapon_RequiresActivation now if animation doesn’t exist, it is just not played. Parameters uint16 MapperObject::Scenery_ToMapX/Y were deleted, in mapper also. Moving between locations is performed by entery points. In weapons prototypes types of action animations were substituted from numeric by string constants (accordance look in DefineNames.lst). Appropriate changes were performed in ObjectEditor. Client functions PlaySound andPlayMusic now return bool, signalizing if file was found or not. Global functions for server/client/mapper which return appropriate values from CritterTypes.fos were added uint GetCritterAlias(uint crType) string@ GetCritterTypeName(uint crType) string@ GetCritterSoundName(uint crType) Mapper’s scripts were moved to server’s scripts folder. Also the whole set of functions for operating with CritterTypes.fos was added to Mapper bool IsCritterCanWalk(uint crType) bool IsCritterCanRun(uint crType) bool IsCritterCanRotate(uint crType) bool IsCritterCanAim(uint crType) bool IsCritterAnim1(uint crType, uint anim1) int GetCritterAnimType(uint crType) uint GetCritterAlias(uint crType) string@ GetCritterTypeName(uint crType) string@ GetCritterSoundName(uint crType) Specifications of client’s reserved functions were changed animation2d_process, animation3d_process parameter bool animateStay was added to the beginning. It indicates if any action is performed now (false) or stand animation (true). Reaction for global map’s interface buttons pressing when the size of map’s area (GmapMap) covers the buttons area was fixed. Bug with incorrect loading/saving maps in which script’s or function’s name consists of spaces was fixed. Bug with potential server crashing when using AI_PLANE_MISC was fixed. Rev.140 http://www2.xp-dev.com/sc/change/94227/140 Some robots from Fallout Tactics (look the next revision). Rev.139 http://www2.xp-dev.com/sc/change/94227/139 The next quests were added in San Francisco: “Introduction into Hubbology”, “Hub’s justice”. Transport to Atoll is available for the players who are doing “Introduction into Hubbology” quest (npc is in the docs area of San Fracisco); Automatic transfer to the command center of GECK city citizens when entering the map was removed. Now citizens can choose spawn point. Quest location “Hubbologists laboratory” was added (author JunoReactor). Rev.138 http://www2.xp-dev.com/sc/change/94227/138 Arroyo: Quest “Evidence of Chosen’s death” was added (Todd Stewart); Two courier quests were added (Cassidy, Todd Stewart); Encounter fixes: Fixed bugs of the 120 revision; Fixed random encounters where normally aggressive npc’s didn’t attack after fighting with the other npc’s; Fixed bug with unlimited experience in Den; Fixed mistakes in NCR quests cooldowns; Slight dialogues fixes. Rev.137 http://www2.xp-dev.com/sc/change/94227/137 Ability to specify the layer of tiles/roof to organize correct query of displaying. Totally there can be 5 layers, from 0 to 4. You can switch between them with pressing shift and pressing appropriate key (from 0 to 4). Indication of the current layer is specified in the map’s supplemental information (in upper right corner). Specification of MapperMap AddTile/AddTileName methods was expanded, also layer parameter was added void AddTile(uint16 hexX, uint16 hexY, int offsX, int offsY, int layer, bool roof, uint picHash) void AddTileName(uint16 hexX, uint16 hexY, int offsX, int offsY, int layer, bool roof, string@+ picName) Functions for hash calculation by file’s name and inverse function were added to the native scripts const char* (*GetNameByHash)(uint hash); // Get name of file by hash uint (* GetHashByName)(const char* name); // Get hash of file name The functional for operating with the chosen’s actions was added to the client’s scripts. For taking or specifying the actions use functions uint GetChosenActions(uint[]@+ actions) void SetChosenActions(uint[]@+ actions) This array consists of blocks of seven variables, the first is the type, the other are the parameters. Values of types and parameters look in _client_defines.fos Chosen actions. Argument with the location was added to the reserved function for checking the entries into this location bool entrance_FuncName(Location& loc, Critter@[]& critters, uint8 entrance) The next events were added for critters CRITTER_EVENT_USE_ITEM_ON_ME bool EventUseItemOnMe(Critter& whoUse, Item& item) CRITTER_EVENT_USE_SKILL_ON_ME bool EventUseSkillOnMe(Critter& whoUse, int skill) In the calls stack it is situated between CRITTER_EVENT_USE_* and the global handler. That is CRITTER_EVENT_USE_ITEM for the player + CRITTER_EVENT_SMTH_USE_ITEM for those who can see the player. CRITTER_EVENT_USE_ITEM_ON_ME The global handler critter_use_item. and CRITTER_EVENT_USE_SKILL for the player + CRITTER_EVENT_SMTH_USE_SKILL for those who can see the player. CRITTER_EVENT_USE_SKILL_ON_ME The global handler critter_use_skill. The supplemental information (current hex, fps, etc.) in Mapper is presented in the upper right corner. Bug of 135 revision with transparent tiles when placing them was fixed. Data connected with unfinished mechanism of textured grid was deleted. Rev.136 http://www2.xp-dev.com/sc/change/94227/136 Maps converted to text format. Rev.135 http://www2.xp-dev.com/sc/change/94227/135 Now only text format is used for maps, it is binary only for loading. All maps are converted to the text format (they will be uploaded with the next revision). Extension of this format is “fomap”. To convert your own maps to the new format – execute in Mapper ““#ConvertMaps”, then you should manually or using Mapper set required values in Time, NoLogOut, ScriptModule, ScriptFunc fields, which values you can see in file Maps.cfg. File Maps.cfg is not used anymore, locations prototype numbers are defined opposite to their name in file Locations.cfg, as in the most cases the one map prototype is used for the one location. According to these changes, the next MapperMap methods are deleted: uint GetTile(uint16 tileX, uint16 tileY, bool roof) const void SetTile(uint16 tileX, uint16 tileY, bool roof, uint picHash) string@ GetTileName(uint16 tileX, uint16 tileY, bool roof) const void SetTileName(uint16 tileX, uint16 tileY, bool roof, string@+ picName) And the next are added: uint GetTilesCount(uint16 hexX, uint16 hexY, bool roof) const void DeleteTile(uint16 hexX, uint16 hexY, bool roof, uint index) uint GetTile(uint16 hexX, uint16 hexY, bool roof, uint index) const void AddTile(uint16 hexX, uint16 hexY, int offsX, int offsY, bool roof, uint picHash) string@ GetTileName(uint16 hexX, uint16 hexY, bool roof, uint index) const void AddTileName(uint16 hexX, uint16 hexY, int offsX, int offsY, bool roof, string@+ picName) Also the next fields are added: const int WorkHexX const int WorkHexY int Time bool NoLogOut string ScriptModule string ScriptFunc The next methods are deleted (as their technology is not good enough for now): string@ GetTerrainName(uint16 tileX, uint16 tileY) cons void SetTerrainName(uint16 tileX, uint16 tileY, string@+ terrainName). Function bool SaveMap(MapperMap@+ map, string& fileName, int pathType, bool text, bool pack) now looks as bool SaveMap(MapperMap@+ map, string& fileName, int pathType). The ability to transmit commands /text /pack when saving by the console is deleted respectively. Several functions for operating with map’s fields were added to mapper script (you can do this procedure simply editing necessary field in the map’s file with text editor): #MapTime value – map’s time in minutes; #MapNoLogOut value –possibility to log out on the map; #MapScriptModule moduleName – script, module’s name; #MapScriptFunc funcName – script, function’s name. Now it is possible to place lots of sprites on one hex. Be attentive, fallout’s tiles have the same size and if you place two tiles on the same hex, you won’t see it (only if you select it , it will be less transparent than the others). Take it into account when you place or copy-paste tiles. Function #ClearTiles can help you with this problem, it deletes superfluous tiles from the hex. So, if you operate with fallout’s tiles and you don’t need several tiles on the same hex, execute this script when you finish work. Also you can place tiles on every hex, not in two. Ability of shifting is added for tiles. To produce tile shift just make the same operations as switching between tiles, but additionally pressing shift. Also you can use the same shift procedure for items. To cancel shift, press Alt with Shift and move objects. Fixed 130 revision’s bugs. Fixed bug with absence of shifting in fofrm with one sprite. Fixed bug with error in loading sprites in scripts (LoadSprite), which caused several other bugs. Remained ini files were formatted. Rev.134 http://www2.xp-dev.com/sc/change/94227/134 Config was uploaded by mistake. Take into accont, don't use config file from 132 and 133 revisions, admin pass is "hh" there. Rev.133 http://www2.xp-dev.com/sc/change/94227/133 Redding maps fixed, quest NPC were added. Rev.132 http://www2.xp-dev.com/sc/change/94227/132 Fixed "Anger" quest, the missing dialogue was restored, now it can be finished. Added quest "Forgery". (VC, Linnet) Rev.131 http://www2.xp-dev.com/sc/change/94227/131 New quests "Anger", "Ernst Telman" were added. (VC, Linnet) Fixed bug in VC guard's AI scripts. Fixed mistakes in quest “Amnesty for Joshua” dialogues. Ability to cancel their service for mercs/companions was added if the owner exits from location to the global map. Rev.130 http://www2.xp-dev.com/sc/change/94227/130 Support of graphics files SPR, TIL, ZAR from Fallout Tactics was added. Support of data files BOS from Fallout Tactics was added (works as ZIP archieve). For loading certain animation from SPR files, state it in the name after “$” sign. E.g. loading CrouchAttackClubSwing animation from file Mutant.spr - “Mutant$CrouchAttackClubSwing.spr”. The first frame of first animation is taken without direction. Also, ability to set certain palette for ART files (graphics files from Arcanum) was added – state palette’s number (from 0 to 3) after “$” sign. E.g. to load dfmbnsba.art file with the second palette - “dfmbnsba$1.art”. First palette is taken without direction (that is 0). Operation with sprites was changed. Now all interface graphics (which is set in ini files) is represented not as one sprite, as continuously played animation. Functional for operation with currently drawn sprites on the map was added to the native client’s and mapper’s scripts. Structures: struct Sprite – displayed sprite; struct SpriteInfo – additional information about the sprite. Functions: Sprite* (*GetDrawingSprites)(uint& count); - currently drawn sprites, if no sprites (on the global, menu), then NULL is returned and count == 0; SpriteInfo* (*GetSpriteInfo)(uint sprId); - getting additional information about certain sprite; uint (*GetSpriteColor)(uint sprId, int x, int y, bool affectZoom); - getting pixel’s colour, with the ability of taking zoom into account; it isn’t available for 3d models yet; format - ARGB; bool (IsSpriteHit)(Sprite sprite, int x, int y, bool checkEgg); - test whether the point on the display matches with the current sprite with taking zoom, transparence and egg of transparence into account (optional). The reserved native global variable GameOpt was renamed to Game. Global variables int __MouseX, __MouseY for current mouse position indication were added. Function void GetMousePosition(int& x, int& y) was deleted. Indication of opened console bool __ConsoleActive was added to client’s scripts. Bug with memory leak when rendering 3d graphics to sprites was fixed. Rev.129 http://www2.xp-dev.com/sc/change/94227/129 Added ability to use robot-guards from Sierra as bodyguards (for those who had completed quest "No-sweat job" in Navarro) Added quest "Amnesty for Joshua" (VC, Amanda) Work of teleport on special encounter "Mad scientist's laboratory" was restored. Rev.128 http://www2.xp-dev.com/sc/change/94227/128 Second stable SDK assembly. For the purpose of decreasing repository's size, assemblies will be stored in another places. Links you can find in text files. Rev.127 http://www2.xp-dev.com/sc/change/94227/127 Quest "No-sweat job" in Navarro. Rev.126 http://www2.xp-dev.com/sc/change/94227/126 Mercenaries and companions mechanism (merc.fos) was updated. Now every companion has term of service. Companions don’t meddle in player’s showdowns with NPC’s. Fixed quest “Dip.Courier”. Now it can be finished. Fixed quest “Dock’s attack”. Now it can be finished after killing 5 giant insects. Added 3 new mercs for Lo Pan. Updates NPC-travellers mechanism (traveller.fos). The first NPC-traveller was added (eli.fos). Functions which cooldowns checkup for NPCs in dialogues were fixed. When character dies, all items with flag ITEM_GAG are deleted. Fixed cooldowns for quests “Hub bibliography”, “Sick Brahmin” and in the dialogue with dr.Klaus for stimpacks and first aid kits delivery. When NPC repairs an item, ammo is ejected. Script for NPC monologues realization was added. (monologue.fos) Rev.125 http://www2.xp-dev.com/sc/change/94227/125 Fixes of password encryption in the client's files. Rev.124 http://www2.xp-dev.com/sc/change/94227/124 Fixed bug with graphics loading in the previous update. Rev.123 http://www2.xp-dev.com/sc/change/94227/123 DAT2.1 (Arcanum) files support was added. ART (Arcanum) graphic format was added. Function for operating with strings splitEx was added. Principle is the same as in split, but empty elements are not included in the result array. Also spaces/tabs/string_hyphenation are deleted from the result elements. Examples: split(“A|B||D”, “|”) -> {“A”, “B”, "", “D”} splitEx(“A|B||D”, “|”) -> {“A”, “B”, “D”} split(“A| B\t\t||D| E|F ”, “|”) -> {“A”, “ B\t\t”, "", “D”, “ E”, “F ”} splitEx(“A| B\t\tC||D| E|F ”, “|”) -> {“A”, “B”, “D”, “E”, “F”} Additional DrawSprite functions for the client and mapper were added. You can transfer true with the last argument and as the result, the shift which is stored in the current file will be added to the sprite’s position. void DrawSprite(uint sprId, int sprIndex, int x, int y, uint color, bool applyOffsets) void DrawSprite(uint sprId, int sprIndex, int x, int y, int w, int h, bool scratch, bool center, uint color, bool applyOffsets) Fixed bugs with incorrect ini settings parsing in the scripts. Rev.122 http://www2.xp-dev.com/sc/change/94227/122 Client scripts updates: For the reserved function void render_iface(uint layer) was added calling with value layer 100 to give the ability of drawing on the global map. Also the next global variables were added for operating with the global map: bool __GmapActive – whether global map is active and all the variables below are correct; bool __GmapWait – whether waiting mode of encounter affirming is active; float __GmapZoom – current zoom, don’t forget it to take into account while drawing a map; int __GmapOffsetX, __GmapOffsetY – map shift from the zero-coordinate (up-left corner); int __GmapGroupX, __GmapGroupY – player’s group coordinates; int __GmapMoveX, __GmapMoveY – destination point’s coordinates; float __GmapSpeedX, __GmapSpeedY – movement speed every 50 ms, without taking relief into account For example, calculating the current pixel group’s position - (x = __GmapGroupX / __GmapZoom + __GmapOffsetX), (y = __GmapGroupY / __GmapZoom + __GmapOffsetY). Fixed bug with hanging when drawing 3d model, occurred in the last update. Fixed missing bracket in English texts. (by Kilgore) Rev.121 http://www2.xp-dev.com/sc/change/94227/121 Added more mouse sensitivity and now you can see mouse’s speed percent in the settings. Updated FOConfig.exe. Added AlwaysRun option. Possible values for option Mouse speed were corrected. Option Sleep now can be set to -1, that means switching it off (maximum performance). Added ability of redirecting keyboard’s symbol codes input. For this, use option KeyboardRemap (in FOnline.cfg). It is performed after space – X Y X Y …, where X is the code which is substituted by Y. Code numbers - http://fonline.pastebin.com/Qy3E0qwj Interface description in default.ini is formatted and commented. (by LoadRunner) Location prototypes updates: Option max_copy was deleted. Option max_players was added. It limits the amount of players who can be on the location simultaneously. Players, who can’t enter location because of exceeding the limit will see message 904 from FOGAME.MSG {904}{}{Location is overcrowded, try to enter later.} Password encryption in server *.client. files was added. Mouse shift when switching between movement modes was fixed. Also, for more accurate work, the hex mask was added – look \Client\data\art\misc\hex_mask.png. Only red colour is taken into account and when it takes on certain value, the shift to certain direction is performed (50 – 5, 100 – 0, 150 – 3, 200 – 2). The mask is optional, you can work without it. Fixed loading/saving tiles in the maps text format. Fixed global map shifting behind screen’s edge. Registration of useless clicks in mapper when switching between windows, now isn’t performed. Fixed the animation of 3d critter standing when situating them on the map. Also now 3d critters don’t play standing animation in the critter’s list. Fixed displaying of critters which have only one direction. Fixed command ~reloadscripts. Now when you mark items for deleting (DeleteItem/DeleteItems), their quantity is saved. So, in the moment when real deleting is performed, server will delete the requested number of items. Now knockout during turn-based fight leads to immediate loosing action points, not after finishing the turn. Also, frequent checks for the necessity of finishing the turn were added at the server - if critter’s dead, critter has negative AP, critter has no more AP. Scripts: Fixed critter’s flags (Critter extra flags, _defines.fos). Fixed special encounter scripts Guardian of Forever, Mad Brahmins. Script trader.fos was formatted. Reserved function was added to client scripts, which is called with attacks void hit_aim(uint8& aim) aim value can be redefined( Hit locations in _defines.fos). Function int Critter::GetScore(uint score) was added to server scripts. Specification Critter::AddScore(int score, int val) was changed to Critter::AddScore(uint score, int val). Function for calculation the size of drawn text was added to client and mapper scripts void GetTextInfo(string& text, int w, int h, int font, int flags, int& tw, int& th, int& lines) string& text – text; int w, h, font, flags – height, width, print, flags; int& tw, int& th, int& lines – total width, height and amount of strings in the current text. Rev.120 http://www2.xp-dev.com/sc/change/94227/120 Unused encounter tables for Fallout 1 and commented original’s scripts were deleted from worldmap_init.fos; Random encounters of “beasts versus beasts” type were enabled, which were presented in the scripts, but were absent in the original. Added some new kinds of non-unique random encounters. Now, if player uses to kill NPC’s of certain group or organizations on random encounters, then they become aggressive. Vault City guard’s automatic search is deactivated. Now you need to activate the dialogue to pass through. Fixes in English dialogues versions. Maps fixes. Rev.119 http://www2.xp-dev.com/sc/change/94227/119 Fixed lots of little mistakes in dialogues; Fixed bugs in some Den and Klamath quests; Maps fixes; Duplicate dialogues with different names were deleted. Rev.118 http://www2.xp-dev.com/sc/change/94227/118 Fixed modificator's argument from Parent-0-7 to Parent0-7. Rev.117 http://www2.xp-dev.com/sc/change/94227/117 Added dialogues to Arroyo doctor and his team. Slight fixes (dialogues, maps). Rev.116 http://www2.xp-dev.com/sc/change/94227/116 Library for importing different 3d models was enabled – Assimp http://assimp.sourceforge.net/ Formats that are supported: http://assimp.sourceforge.net/main_features_formats.html Built-in one is still used for X format, for other ones – this library. If you don’t need the library, you can delete it (file Assimp32.dll), client and mapper are able to work without it. Updated mechanism of linking models and animations, now you can link any animation to any skeleton from any file. fo3d format changes: Modificator ModelAnimation was deleted. Modificators Anim, RenderFrame, RenderFrames were expanded – now file name which consists needed animation is placed before the animation’s name (if you state “ModelFile”, then search is performed in the file of loaded model)/ Specification of indicating parent texture (Texture X Parent) was expanded. Now you can additionally state the mesh number and its part, from which the texture is taken - Texture X ParentY-Z, where X is the texture’s number, Y is mesh number, Z is mesh part number; parameters Y-Z are optional, you may don’t use them at all or you may use them partly (Parent, Parent0, Parent-5). Fixed bug with incorrect script processing when operating with Critter::ShowScreen. Fixed bug with incorrect operating and crashing when using Log function with some special symbols. Added Combat Armor 3d model (by Gray). Rev.115 http://www2.xp-dev.com/sc/change/94227/115 Added special encounter "Warehouse of lost doughnuts" (author - Ponchik). Scripts for some original special encounters (author - Cracker). Remade some prototypes. Windows without glasses in Vault's walls can be shooted through now. Slight fixes. Rev.114 http://www2.xp-dev.com/sc/change/94227/114 Maps for quests from the 113 revision. Rev.113 http://www2.xp-dev.com/sc/change/94227/113 Klamath: quests - "Worker searching", "Husband's alert", "Brahmins vaccination" (author - Ponchik). Slight fixes. Rev.112 http://www2.xp-dev.com/sc/change/94227/112 Finished appearance of random encounter "Ocean Trader". Slight maps, dialogues and graphics fixes. Added buttons for BarterGround, GECK town, Warehouse and Hell for the global map (author - Ponchik). Slight fixes. Rev.111 http://www2.xp-dev.com/sc/change/94227/111 Added additional mechanism for data files loading (dat, zip). It is necessary for loading data files loading before scripts initializing and processing start() function as some date is needed to be used before this (effects, prints and some other resourses). For adding files to loading – create DataFiles.cfg file in which you should list all necessary file names. The program searches for the content from the last to the first data file. This mechanism uses server, client, mapper. If list isn’t found then no alerts will be displayed. If one of the files from the list can’t be found or load error appears, then alert will be shown. Option PatchDatPath was deleted, loading of this file is moved to DataFiles.cfg. Rev.110 http://www2.xp-dev.com/sc/change/94227/110 Fixed model's borders calculating which caused nick or text shift above critter's head. Rev.109 http://www2.xp-dev.com/sc/change/94227/109 Fixed skin setting-up when registration 3d character. Fixed order of loaded packs (dat, zip) scanning while searching and parsing ini files. Addition to 106 revision – for stating specific keys for certain resolutions now are used not separate files with different names, but marks in the main file. At the start of the string write “resolution”, than min. width and height for starting using these options. By default these values are equal to zero. For example: "resolution 1024 768 key = value..." It means, that “key = value ...(and so on till the next keyword ”resolution”)” will be included in the final ini. Found data will be inserted in the main file as screen width grows. Rev.108 http://www2.xp-dev.com/sc/change/94227/108 Actual cash files. Rev.107 http://www2.xp-dev.com/sc/change/94227/107 SDK is switched to 3d players mode. Normal version will be restored after finishing mechanism debugging process. For switching off 3d players models – comment the next strings in Server\scripts\_defines.fos #define PLAYERS_3D // Enable 3d players #define PLAYERS_3D_NO_HEAD // No head slot #define PLAYERS_3D_VAULT_SUITE // Vault suite by default, not naked 3d updates: Fixed and reduced the size of attributes and weapons. Added missing attributes of opened pipboy. In the left hand now is displayed the item, which player has in the second slot. Armor’s models are divided between the current armor items in the such way, that gamer could see the difference. For example combat armor consists of power armor and the helmet, robes are replaced by jail suit and etc. Fixed animation playing during creating the new character in single mode. Added skin change processing in start intro and after Kitty’s haircut. Added skeleton’s skins. Added sound for men and women. Fixed sound name for critters parameter’s loading (CritterTypes.cfg, SoundName). Now characters walk slowly with double click if alwaysrun option is turned on. Rev.106 http://www2.xp-dev.com/sc/change/94227/106 Added ability to make 3d characters available to play for. To enable it (it is disabled as default) - comment certain strings in _defines.fos // #define PLAYERS_3D // Enable 3d players // #define PLAYERS_3D_NO_HEAD // No head slot // #define PLAYERS_3D_VAULT_SUITE // Vault suite by default, not naked Updated mechanism of working with ini files. Now, when searching for the keys, excess spaces and tabulations are skipped (now you can type “ key = value ”, previously was correct only variant “key=value”) Added function bool AppendIfaceIni(string& iniName), which enables additional ini files. If the name includes slashes, than the search is being performed from data root, if not - than from folder data/art/interface/. default.ini is added automatically by the engine, others you can enable in start() client function. Loading is performed sequentially from default.ini to ones enabled by user by turn. Every packed file is checked by the turn of loading, then in the folder. Global variable string __UserInterface was deleted. Fixed bug with incorrect parsing of animation indexes in fo3d file. Fixed bug with incorrect position of the egg of transparence in zoom mode. For better readability the next scripts were formatted: start_server_client.fos client_main.fos In the future this practice will be continued. Rev.105 http://www2.xp-dev.com/sc/change/94227/105 Documentation update - slight fixes. Rev.104 http://www2.xp-dev.com/sc/change/94227/104 Added structure of script array (ScriptArray) to native scripts. Added ability to client's native scripts of calling hex data - Field. Data is stored in Field* GameOptions::ClientMap, uint GameOptions::ClientMapWidth/ClientMapHeight. If map is loaded, than ClientMap != NULL, hex calling - ClientMap[hexY * ClientMapWidth + hexX]. Rev.103 http://www2.xp-dev.com/sc/change/94227/103 Added always run option - can be enabled in client's config file “AlwaysRun”. Disabled as default. Added global variables for AlwaysRun regulating: bool __AlwaysRun (as default - false) - enabling AlwaysRun ability; uint __AlwaysRunMoveDist (as default = 1) - run with click, if distance is equal or more than the value; uint __AlwaysRunUseDist (as default = 5) - run with using smth/dialogue/etc, if distance is equal or more than the value. TLA's mechanics is equal to original - always run with click, always run with using if distance is more than 4 hexes. Added parameter uint Critter::ItemTransferCount to native scripts. It stores the value of transferred items during the last transaction. Rev.102 http://www2.xp-dev.com/sc/change/94227/102 Optimized server operation (script calling) in one tread operation mode, performance increased up to 400%. Fixed bug with crash when calling Critter::Say* methods with parametr SAY_SAY_TITLE. Rev.101 http://www2.xp-dev.com/sc/change/94227/101 Changes in fo3d format, new specification was created - look this theme: http://www.fonline.ru/forum/showthread.php?t=19689 New format added new abilities of working with 3d objects - trasmission of texures, other paremeters, etc. Also added ability to render certain animation to sprites as for one frame, either for the whole animation. But the bug with cutting off the shade situated below the lowest edge of model still presents. Updated old fo3d files, also VanBuren's critters and weapon models were added. Changed effects structure, added effect for normal mapping (3D_NormalMapping.fx). Added transfer of real numbers through scripts, float __EffectValue0..9. Fixed bugs with loading 3ds files - miss of meshes except the first; crash if texture coordinates are not presented. Fixed bug in Mapper with data copying when copy-pasting a large number of objects. Fixed text centering of hexes amount in zoom mode. Rev.100 http://www2.xp-dev.com/sc/change/94227/100 Documentation update. Rev.99 http://www2.xp-dev.com/sc/change/94227/99 Updated documentation file, which was missed in the previous revision. Rev.98 http://www2.xp-dev.com/sc/change/94227/98 Added resourse gathering system; Documentation updating. Rev.97 http://www2.xp-dev.com/sc/change/94227/97 Fixes of "Night is tender" quest, now healing must work properly. Added preview from global map for GECK location. Rev.96 http://www2.xp-dev.com/sc/change/94227/96 Gecks counting on the location now affects its auto moving away and visibility separately; Parameter geck_enabled (Map::GeckEnabled) renamed to geck_visible (Map::GeckVisible). Rev.95 http://www2.xp-dev.com/sc/change/94227/95 Added global server function void SetChosenSendParameter(int index, bool enabled) which can denie transmitting parameters to client. Transmitting of all parameters is enabled by default. Rev.94 http://www2.xp-dev.com/sc/change/94227/94 Fixes of sea encounter maps. Rev.93 http://www2.xp-dev.com/sc/change/94227/93 Added sea encounters; Added posibility of an encounter while travelling on air/water transport; Player always have possibility of cancellation water/air encounter and never gains experience for that; Bug fix in mapper with incorrect editing critter's parameters. Rev.92 http://www2.xp-dev.com/sc/change/94227/92 Fixed displaying rating in pipboy. In mapper additional indication of cut sprites was added to make lines, which are needed for correct interaction, visible. Rev.91 http://www2.xp-dev.com/sc/change/94227/91 Added traffic encryption between server and client. Rev.90 http://www2.xp-dev.com/sc/change/94227/90 Fixed choosing automatically cut sprites in zoom mode. Rev.89 http://www2.xp-dev.com/sc/change/94227/89 Added parametr DrawOrderOffsetHexY for shifting order of drawing lower (Y axis). This is an analogue for recently deleted DrawPosOffsX. Fixed using car trunk. Different slight fixes. Rev.88 http://www2.xp-dev.com/sc/change/94227/88 Fixed exit from Redding; slight fixes. Rev.87 http://www2.xp-dev.com/sc/change/94227/87 Fix for weapon AP cost. Rev.86 http://www2.xp-dev.com/sc/change/94227/86 May be fixed bug with incorrect displaying of some tiles. Fixed bug with unworking elevators. Added restoration of effects when loosing a device (cause crashed e.g. with alt+tab) Rev.85 http://www2.xp-dev.com/sc/change/94227/85 Fixed bug with chat disappearing. Fixed AI bug when combat plans always finished with REASON_CANT_WALK. Rev.84 http://www2.xp-dev.com/sc/change/94227/84 Fix for DT params reading. Rev.83 http://www2.xp-dev.com/sc/change/94227/83 Safety checks for radio commands. Rev.82 http://www2.xp-dev.com/sc/change/94227/82 Fixes of some dialogues; translations of dialogues on Barterground; map fixes; fixes of encounter table; slight fixes. Rev.81 http://www2.xp-dev.com/sc/change/94227/81 Fixed another bug during moving on the global map. Fixed unplanned activating of b/w effect. Rev.80 http://www2.xp-dev.com/sc/change/94227/80 Fixed teleportation bug during moving on the global map. Rev.79 http://www2.xp-dev.com/sc/change/94227/79 Fixed bug with incorrect tear and wear and fuel consumption calculation during moving on the global map by car. Rev.78 http://www2.xp-dev.com/sc/change/94227/78 Fixed brightness output. Fixed outlining activation. Rev.77 http://www2.xp-dev.com/sc/change/94227/77 Added automatic sprite cutting. Main purpose – correct displaying of long walls. Parameter SpriteCut was added to prototypes and mapper (only for scenery) for modification. Cutting values: 0 – switched off, 1 – horizontal (X axis), 2 – vertical (Y axis). Wall blocks should be set manually , for that purpose six blocks with different corner types with visual indication were added. It is necessary for correct calculation of brightness and egg of transparence reaction. Numbers 6800..6805 at the end of Wall and Fast list. Fixed client instability after recent update. Primary indexes array for animations was expanded to the range ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789. For value changing use native means (structure CritterType in fonline.h). Support of effects (HLSL) loading with earlier version of compiler. Automatic attempt of compilation is performed after failure in compilation with the current library. Added data updating for client function GetIniStr in the start function (start) after each call of LoadDataFile. Mapper update: Fixed bug with error in loading tiles with extension not in lower case. Fixed algorithm of sprite displaying calculation (when big sprites were disappearing near the screen edge). Additional visual means for debugging: - Ctrl + Q: Corners type viewing; - Ctrl + W: Viewing the result of sprite cutting, linking them to hexes; - Ctrl + E: Viewing the sequence of sprites drawing. At the time of renewing NPC’s bag, only items which are not in inventory are repaired and reloaded. Added ability to set sprite shift in screen coordinates to prototypes. Fixed bug with double notification of quest state change. Rev.76 http://www2.xp-dev.com/sc/change/94227/76 Added quest “Night is tender” Rev.75 http://www2.xp-dev.com/sc/change/94227/75 Tables for sea encounters, slight fixes. Rev.74 http://www2.xp-dev.com/sc/change/94227/74 Source documentation. Rev.73 http://www2.xp-dev.com/sc/change/94227/73 SPECIAL calculating is moved to native scripts - fonline_tla.dll for server and fonline_tla_client.dll for client (must be situated in data\scripts). The other parameters which are used in the engine are needed generally for drawing GUI, but soon they’ll be moved to scripts too. Native scripts files are moved from data folder to scripts. Added bat-file make_tla.bat for their compilation (installation of MSVS8 is necessary). For example of use new methods for critter classes are added (IsInjured, IsDmgArm...), items (IsHtHAttack, IsGunAttack...) with pragma bindfunc. Example of linking global varieties of standard and native scripts is added (__HitAimEyes, __HitAimHead..., these global varieties are moved to scripts). Callback functions are added (to GameOptions) for item usage cost determination - GetUseApCost. For attack max range determination - - GetAttackDistantion. It further such functions will force out usage of critter parameters in the engine. These functions are binded at the stage of connecting of library to the engine (DllMainEx). For operating with the engine added the next functions (to GameOptions): CritterChangeParameter – for correct change of critter parameter, this function should be called firstly, then you can change the value. CritterTypes – index of CritterType structures where data from CritterTypes.cfg is stored. Added method to client’s critters for detection whether now is time of its move in the turn-based mode bool CritterCl::IsTurnBasedTurn() const Some logics of operating with turn-based mode is moved to the scripts - turn_based_process main.fos. Some recommended specifications for the reserved functions are changed - templates.fos. Min. time of dialogue or barter with NPC now is regulated by the global varieties __DlgTalkMinTime (now default 100 seconds) и __DlgBarterMinTime (now default 50 seconds). Range for all prototypes (maps, locations, items) is expanded to 30000. Fixed bug with incorrect drawing of minimap in the pipboy. Fixed bug with incorrect calculating of healing rate while registration. Fixes of Zerg’s special encounter. Rev.72 http://www2.xp-dev.com/sc/change/94227/72 Data library for script compilation (updated on 27 October) Rev.71 http://www2.xp-dev.com/sc/change/94227/71 Added Zerg special encounter. Fixed bug with incorrect names in Fixboy. Added function LoadDataFile to server scripts, analogue of client/mapper. Fixed mistiming of player movement on global map. Deleted function Critter::SendQuestVar, now alert about changing of local variable is automatic. Changed function specification void ShowScreen(int screenType, uint param, string& funcName) to void ShowScreen(int screenType, uint param, string@+ funcName), now can transmit both empty string or null. Rev.70 http://www2.xp-dev.com/sc/change/94227/70 Documentation is updated. Deleted incorrect splash-picture. Added urgent files for scripts autoaddition in Notepad++. Rev.69 http://www2.xp-dev.com/sc/change/94227/69 Added ability to use your own shaders for game graphics drawing. High Level Shader Language is used for this. Effects folder is situated in data\effects. After the first compilation they are cashed in the folder data\cache (in futher other different data will be cashed there). You can read specifications on the game engine effects in data\effects\ReadMe.txt. Added ability to link any effect to sprite or model in .fofrm and .fo3d (“effect=effect_name.fx”). For default effect changing, function void SetEffect(int effectType, int effectSubtype, string@+ effectName) was implemented into the client scripts. int effectType, effectSubtype – effect types look in _client_defines.fos (Subtype for fonts used font type); string@+ effectName – the name of the effect file (with extension) is in the folder data\effects. Added changing of detailization of game objects for demonstration. For activation press Alt+W, for return press Alt+Q. Added client function for map redrawing void RefreshMap(bool onlyTiles, bool onlyRoof, bool onlyLight) if all three parameters are false, than everything will be redrawed. Also these three parameters are incompatible. Fixed bug in mapper with impossibility of viewing 3d critters in prototypes table. At present time they can’t be ranged. Added ability to play sounds/music from different folders. void RefreshMap(bool onlyTiles, bool onlyRoof, bool onlyLight) If there isn’t slashes (‘/’,‘\’) in path name than search is performed in the folder sfx/music. If there are slashes, than in the root (“data/mysounds/mysound.ogg”). Rev.68 http://www2.xp-dev.com/sc/change/94227/68 Fixed bug in the ObjectEditor when damage type is saved incorrectly. Rev.67 http://www2.xp-dev.com/sc/change/94227/67 Fixed crashing when calling CritterCl::[Param/Stat/Perk/etc]Base in client scripts; Fixed error with recording Anydata of zero length (by Atom). Rev.66 http://www2.xp-dev.com/sc/change/94227/66 Fixed incorrect weapon prototype; errors in checking for special encounters; added decraft of the sand sack to fixboy; other little fixes. Rev.65 http://www2.xp-dev.com/sc/change/94227/65 Redding: finished map according to the last concept; - Garbage was returned to static locations; - Ammo craft on benches (beta-version); - Destruction of the sack using skill repair now gives use empty sack. - Entering Den message was moved to texts from script. Rev.64 http://www2.xp-dev.com/sc/change/94227/64 AngelScript updated to 732 revision. Added new methods for arrays: void T[]::insertAt(uint, const T&) – element inserting in specified position in the array; void T[]::removeAt(uint) – deleting the element by index; void T[]::insertFirst(const T&) – element inserting to the beginning of the array; void T[]::removeFirst() – deleting the first element; void T[]::insertLast(const T&) – element inserting to the end of the array; void T[]::removeLast() – deleting the last element; void T[]::grow(uint) – add elements (the sames as a.resize(length()+X)); void T[]::reduce(uint) – delete elements (the same as a.resize(length()-X)); T& T[]::first() – call of the first element of the array (the same as a[0]); T& T[]::last() – call of the last element of the array (the same as a[a.length()-1]). Also deleted all functions ArrayPushBack as the built-in array functional was expanded. All the scripts were fixed accordingly. Rev.63 http://www2.xp-dev.com/sc/change/94227/63 Added ability to start the server as a service. For registration/start use key “-service” (shortcut FOServerService.exe.lnk). For deleting use keys “-service -delete” (shortcut FOServerServiceDelete.exe.lnk). Added ability to log using function OutputDebugString. The log can be caught (even remotely) using program DebugView http://technet.microsoft.com/en-us/sysinternals/bb896647.aspx For switching it on in server and client configs option LoggingDebugOutput is added. Server/client/mapper will work normally now with incorrect active folders. At start you set the current folder of executable. Fixed bug with absence of replacement “x” by “ч” in built-in punto switcher. Fixed crash in turn based mode and incorrect work of Map::GetCritter(uint critterId). Rev.62 http://www2.xp-dev.com/sc/change/94227/62 Fixed bug with updating vehicle data on the global map. Fixed bug with system hanging while looking items quantity in game info. Fixed bug with the incorrect login/disconnect. Fixed bug with incorrect creating non-stacking items on the map in the number of >1. Fixed bug with incorrect critters gathering when path tracing (by Atom). CRITTER_EVENT_TALK now performed before checking NPC for settings which could restrict speaking with it. Added new mechanism for script garbage gathering (by Atom). For config file simplification, the next options were removed: ASGarbageTime, VarsGarbageTime. Deleted transfer of a group of critters into global map processing global_process, CRITTER_EVENT_GLOBAL_PROCESS. Also instead of transferring a group into global map processing global_invite, CRITTER_EVENT_GLOBAL_INVITE, now only the leader is transferred. Instead of picking group use Critter@[]@ Critter::GetGlobalGroup(). Because of that, specification methods were changed: bool Critter::EventGlobalProcess(int type, Critter@[]& group, ...) bool Critter::EventGlobalInvite(Critter@[]& group, ...) for bool Critter::EventGlobalProcess(int type, Critter& cr, ...) bool Critter::EventGlobalInvite(Critter& leader, ...) Reserved functions of critter event CRITTER_EVENT_GLOBAL_PROCESS, CRITTER_EVENT_GLOBAL_INVITE bool _FuncName(Critter& cr, int type, Critter@[]& group, ...) bool _FuncName(Critter& leader, Critter@[]& group, ...) for bool _FuncName(Critter& cr, int type, ...) bool _FuncName(Critter& leader, ...) Fixed bug with incorrect cooldown for hijacking, now it is equal for a normal lock. Added checking for unopenable door to the lock break script. Rev.61 http://www2.xp-dev.com/sc/change/94227/61 Fixed bug with incorrect reappraisal of item flags in Mapper. Fixed bug when player isn't notified about moved item. Rev.60 http://www2.xp-dev.com/sc/change/94227/60 Fixed bug with incorrect displaying of the rain on roofs. Rev.59 http://www2.xp-dev.com/sc/change/94227/59 Mapper's fix for correct operating with new folder and print's names. Rev.58 http://www2.xp-dev.com/sc/change/94227/58 For editing use program Bitmap Font Generator v1.12. http://www.angelcode.com/products/bmfont/ Print should have the next attributes - OEM RUSSIAN, Padding 1 (in all directions), Binary, all symbols should be placed on the one texture. All prints are moved in the separate folder “Client\data\fonts\”. For the example print FONT_COURIER_NEW_SMALL is added. Look _client_defines.fos, client_main.fos, CourierNewSmall.bmfc, CourierNewSmall.fnt, CourierNewSmall_0.png. Added function in client’s scripts of activating the clock which shows you the time signal comes to server and returns (ping). You can use it for restriction of input while waiting for server’s answer. Fixed crushing when looking players statistics on server. Fixed crushing of Dialogue Editor (by Atom). Rev.57 http://www2.xp-dev.com/sc/change/94227/57 Expanded mechanism of operating with ingame radio. Added flag ITEM_RADIO for radio. (in _defines.fos). Radio messages are now also sent to radios which are on the ground . For their identification engine sends them with color 0xFFFFFFFE (in map_message in client_main.fos). Realization is in script radio.fos (interface, mechanics), call from main.fos. Interface data is taken from default.ini (Radio*). You can edit it with using item or using science skill on it. Radio data is situated in general fields of several item types. That’s why it isn’t a good idea to use this flag with Doors, Keys, Cars, Weapons, Armors, Holodiscs. Transmitting and receiving functions are separated. For managing the next flags and range types are used (_defines.fos): Restriction of transmitting/receiving is stored in Item/ItemCl::RadioFlags, used by the engine: RADIO_DISABLE_SEND, RADIO_DISABLE_RECV. Restriction of switching radio state in в Item/ItemCl::RadioFlags: RADIO_DISABLE_SHIFT_SEND, RADIO_DISABLE_SHIFT_RECV - restriction of switching transmit/receive; RADIO_DISABLE_SHIFT_BC_SEND, RADIO_DISABLE_SHIFT_BC_RECV - restriction of changing distance range; RADIO_DISABLE_SHIFT_CHANNEL – restriction of channel switching. Range types are stored in Item/ItemCl::RadioBroadcastSend/RadioBroadcastRecv, are used by the engine: RADIO_BROADCAST_WORLD – works all over the world; RADIO_BROADCAST_MAP – works within the limits of the current map; RADIO_BROADCAST_LOCATION - works within the limits of the current location; RADIO_BROADCAST_ZONE(x) - works within the limits of “x” zones on the global map; RADIO_BROADCAST_FORCE_ALL – works everywhere regardless of the adjustments of transmitting or receiving radio/ Added support of these flags to the object editor (both engine and script ones). Added scripts uint16 ProtoItem::RadioChannel, uint16 ProtoItem::RadioFlags, uint8 ProtoItem::RadioBroadcastSend, uint8 ProtoItem::RadioBroadcastRecv. For holodisc marking added flag ITEM_HOLODISK (in _defines.fos). Holodisc data is situated in general fields of several item types. That’s why it isn’t a good idea to use this flag with Doors, Keys, Cars, Weapons, Armors, Holodiscs. Added support of this flag in object editor. Added script uint ProtoItem::HolodiskNum. Added ability to use built-in cartridge indicator for other purposes. Added the next parameters: uint8 ProtoItem::IndicatorStart – initial value, - Item/ItemCl::Indicator; uint8 ProtoItem::IndicatorMax – maximum available value (for correct calculation of the strip position); uint8 Item/ItemCl::Indicator – current value. Mechanism is considered activated if maximum value in the prototype isn’t equal to zero. Added support of editing of initial and maximum values in the object editor. Method Item::GetMapPosition for the items which are in the global map returns their coordinates. Fixed bug with system hanging while looking online statistics. Added storing up to 20 ip addresses for one account (fonline.h). Item prototype’s fields, which are equal to zero, now cannot be saved. All prototypes are resaved. Continued working on multithreading in game logics. Added ignoring of non-initialized maps or locations while loading save (NPC’s would be moved to global map, items - deleted). Fixed bug in the dialogue on BiX location. Updated abilities of GUI scripting. In script _defines.fos notes “Used in engine” are replaced by “Hardcoded”; point is the same - to show that this data is used by engine also. Corrected some specifications in template.fos of reserved functions. Rev.56 http://www2.xp-dev.com/sc/change/94227/56 Changes in craft: some new recipe's (new weapon, etc.), added workbenches in some town/military bases. Rev.55 http://www2.xp-dev.com/sc/change/94227/55 - Updated Redding maps; - Deleted unused graphics; - Added second entrance to NCR; - Some changes in NPC's inventories on encounters. Rev.54 http://www2.xp-dev.com/sc/change/94227/54 - Slight fixes in Hartman's and Shrim's dialogues (Vault City); - Fixed problem with immediate sending off caravans/patrols Ahe9mPDq; - Changed content of the quest variable for the quest "Third trial. Drill." - Restored functions for triggers t_DialogNpc and scenery s_TransitToMap. Rev.53 http://www2.xp-dev.com/sc/change/94227/53 Fixes of KotW location. Quest for oil can can be done by everybody in Arroyo now. Rev.52 http://www2.xp-dev.com/sc/change/94227/52 Fixes of Brok and Xander Church location (by VaultTec) Rev.51 http://www2.xp-dev.com/sc/change/94227/51 Fixed names loading (*Names.lst) with the dialogue editor. Changed extention of its config file. Rev.50 http://www2.xp-dev.com/sc/change/94227/50 Fixed bug with duplicating of time events. Rev.49 http://www2.xp-dev.com/sc/change/94227/49 Slight optimization of multi-threading. Rev.48 http://www2.xp-dev.com/sc/change/94227/48 Fixed error in loading of games variables values. Fixed loading of saves games in single player mode. Rev.47 http://www2.xp-dev.com/sc/change/94227/47 Time events changes. - function specification void EraseTimeEvent(uint num) changed to bool EraseTimeEvent(uint num) Return value shows whether deleting is done or the event isn't found. - Deleted the next functions: uint CreateTimeEvent(uint beginSecond, string& funcName, Critter& cr, bool save) uint CreateTimeEvent(uint beginSecond, string& funcName, Item& item, bool save) uint CreateTimeEvent(uint beginSecond, string& funcName, Critter@[]+ critters, Item[]@+ items, bool save) For migration just put the identificator to the critter or item. Added the next functions for operating with event's values: bool GetTimeEvent(uint num, uint& duration, uint[]@+ values) bool GetTimeEvent(uint num, uint& duration, int[]@+ values) bool SetTimeEvent(uint num, uint duration, uint[]@+ values) bool SetTimeEvent(uint num, uint duration, int[]@+ values) Parametr "duration" - time till the event is done in seconds. Return value means that operation is completed, error means that event wasn't found. These functions are thread-safe, 2 thread can't operate with the events simultaneously. Function GetTimeEvent blocks using (changing) of the event until the script is finished or until SetTimeEvent is called, which unblocks the event. GetTimeEvent writes value to the end of the array, SetTimeEvent rewrites it completely. When null is transmitted to values SetTimeEvent values are not changed. - Event function specification can be of two types now: uint e_FuncName(uint[]@ values) uint e_FuncName(int[]@ values) Fixed bug with crashing while loading 3ds file without texture coordinates. Rev.46 http://www2.xp-dev.com/sc/change/94227/46 Added next fuctional for operating with files (class "file"): - for data reading uint8 file::readUint8() uint16 file::readUint16() uint32 file::readUint32() uint64 file::readUint64() In the case of error or the end of file it returns 0. uint file::readData(uint count, uint8[]& data) If data == 0 then program read all data till the end of the file beginning from the current position. Read data is added to the end of the array. The return value shows the real amount of read bytes. - For data recording bool file::writeUint8(uint8 data) bool file::writeUint16(uint16 data) bool file::writeUint32(uint32 data) bool file::writeUint64(uint64 data) bool file::writeData(uint8[]& data, uint count) If count == 0 it records all data from an array. In the case of error it returns false. Fixed bug with incorrect output of zoom value on minimap. Rev.45 http://www2.xp-dev.com/sc/change/94227/45 Extended range of game variables: - local variable of location (LLVAR_); - local variable of map (LMVAR_); - local variable of item (LIVAR_). When using them in dialogue values are taken from: for location - current critter's location; for map - current critter's map; for item - current item in the main slot. For operating with scripts use function GetLocalVar with transmitting of needed operator. Server will delete unused variables of all types automatically. Deleted server function uint DeleteVars(uint id). Dialog editor was adapted to the last updates of game variables. Added ability to define named value (DefineNames.lst) as a value for conditions and results. Added missed translations. Translations of commit history you can find here: http://www.xp-dev.com/forum/topic/3220 Rev.44 http://www2.xp-dev.com/sc/change/94227/44 Updated format of time output in dialogue with repairer-npc; Added script for realization of npc-travellers on global map.(traveller.fos and Davine's script in sf_common.fos); Added npc-traveller explosives-seller Davine. Can be hired in GECK town; Added trade mode "cash only" MODE_BARTER_ONLY_CASH; Fixed bugs in maps structure on maps with holodiscs. Rev.43 http://www2.xp-dev.com/sc/change/94227/43 Added setting in config which defines whether to bind logic threads to the core or let OS do it. In default it is enabled (1) 1. If zero then operating system automatically manage threads between cores, else affinity thread per core LogicThreadSetAffinity=1 Continued work on multi-threading of game logics. Rev.42 http://www2.xp-dev.com/sc/change/94227/42 Fixed crashing under certain conditions; Fixed cycle counting per second. Rev.41 http://www2.xp-dev.com/sc/change/94227/41 Fixed bug connected with the last update. Rev.40 http://www2.xp-dev.com/sc/change/94227/40 Multi-threading of game logics is now supported. You can read about this in details on the forum; Fixed path of recording/reading ban files; Added seconds on the globalmap clock; Decreased permissible length of text listener of channels and maps from 5 to 2 symbols; Deleted global server function void DeleteNpcForce(Critter& npc); Changed specification of method from uint Location::GetMaps(Map@[]& maps) const to uint Location::GetMaps(Map@[]@+ maps) const Now you can know the amount of maps on the location without recording them into array; Added basic server command ~log (~37). It is intended for text listening of server log. Minimum access: administrator. For adding to text listening you should transmit arguement "+", for disconnecting "-"; Fixed basic creating locations command ~addloc (~16); Upgraded basic command of looking player's id using his name ~id (~4); Changed specifications of global functions void critter_attack(Critter& cr, Critter& target, ProtoItem& weapon, ProtoItem@ ammo, uint8 aim) -> void critter_attack(Critter& cr, Critter& target, ProtoItem& weapon, uint8 weaponMode, ProtoItem@ ammo) int to_hit(CritterCl& chosen, CritterCl& target, ProtoItem& weapon, int hitLocation) -> int to_hit(CritterCl& chosen, CritterCl& target, ProtoItem& weapon, uint8 weaponMode); Added variables for weapons which state their active mode const uint8 Item::Mode const uint8 ItemCl::Mode 4 high-order bits - sight (look Hit locations in _defines.fos), 4 low-order bits - mode (0 – primary, 1 – secondary, 2 – third); Added macroses for convenience _WeaponModeUse, _WeaponModeAim, _WeaponModeMake в _macros.fos; Added returnable value of the current mode in method GetSlotProto (urgent for weapons) ProtoItem@+ Critter/CritterCl::GetSlotProto(int slot, uint8& mode) const; Renamed parametr #define ST_RATE_ITEM (102) to #define ST_HANDS_ITEM_AND_MODE (102) value stored in it: XXXX00YY, where XXXX pid - unarmed blow, and YY - mode. Changed way of the dialogue redirecting. You should use returnable value of result function or say-mode instead of uint __ForceDialog; Added specifications of functions: uint r_FuncName(...), uint dlg_FuncName(...) which are detected by server automatically; Fixed bug with moving pushed players only in one direction; Object pointers (derivatives arrays or class members)Location, Map, Critter, Item, GameVar can't be saved in global varities now. For scripts migration save their identificators (Location::Id, Map::Id, Critter::Id, Item::Id), addresing to the objects with (GetLocation, GetMap, GetCritter, GetItem). Weapons prototypes don't save curret mode of fire (in connection with multi-threading). Changed specifications of class members ProtoItem const uint8 Weapon_Skill, const uint8 Weapon_DmgType, const uint8 Weapon_Anim2, const uint16 Weapon_DmgMin, const uint16 Weapon_DmgMax, const uint16 Weapon_MaxDist, const uint16 Weapon_Effect, const uint16 Weapon_Round, const uint8 Weapon_ApCost, const uint8 Weapon_SoundId, const bool Weapon_Remove, const bool Weapon_Aim, const uint8 Weapon_CurrentUse, void Weapon_SetUse(uint8 use) const to const uint16 Weapon_Skill_F, const uint16 Weapon_Skill_S, const uint16 Weapon_Skill_T, const uint16 Weapon_DmgType_F, const uint16 Weapon_DmgType_S, const uint16 Weapon_DmgType_T, const uint16 Weapon_Anim2_F, const uint16 Weapon_Anim2_S, const uint16 Weapon_Anim2_T, const uint16 Weapon_DmgMin_F, const uint16 Weapon_DmgMin_S, const uint16 Weapon_DmgMin_T, const uint16 Weapon_DmgMax_F, const uint16 Weapon_DmgMax_S, const uint16 Weapon_DmgMax_T, const uint16 Weapon_MaxDist_F, const uint16 Weapon_MaxDist_S, const uint16 Weapon_MaxDist_T, const uint16 Weapon_Effect_F, const uint16 Weapon_Effect_S, const uint16 Weapon_Effect_T, const uint16 Weapon_Round_F, const uint16 Weapon_Round_S, const uint16 Weapon_Round_T, const uint16 Weapon_ApCost_F, const uint16 Weapon_ApCost_S, const uint16 Weapon_ApCost_T, const uint8 Weapon_SoundId_F, const uint8 Weapon_SoundId_S, const uint8 Weapon_SoundId_T, const bool Weapon_Remove_F, const bool Weapon_Remove_S, const bool Weapon_Remove_T, const bool Weapon_Aim_F, const bool Weapon_Aim_S, const bool Weapon_Aim_T Added special macros for convenience (Weapon in _macros.fos) _WeaponIsPrimaryAviable, _WeaponIsSecondaryAviable, _WeaponIsThirdAviable, _WeaponSkill, _WeaponDmgType, _WeaponAnim2, _WeaponDmgMin, _WeaponDmgMax, _WeaponMaxDist, _WeaponEffect, _WeaponRound, _WeaponApCost, _WeaponSoundId, _WeaponRemove, _WeaponAim, _WeaponModeUse, _WeaponModeAim, _WeaponModeMake Mapper updates: string@ MapperObject::PicMap/PicInv now return prototype's picturename if other isn't set up; Added const uint16 MapperMap::Width, const uint16 MapperMap::Height for storing current map sizes; Fixed function GetMapFileNames(...). Rev.39 http://www2.xp-dev.com/sc/change/94227/39 Slight fixes of quests in Den, Klamath Improved closed location in Redding Rev.38 http://www2.xp-dev.com/sc/change/94227/38 Slight fixes of quests from string "Guard"; Added services for guardsmen: doc. Troy can heal player; give stimpacks; Valery repairs items; Added universal repairing script for npc (repairer.fos). E.g. in the dialogue vc_valery.foldg 3 new special encounters with holodiscs; Several deleted functions from stdlib are returned. Rev.37 http://www2.xp-dev.com/sc/change/94227/37 Fix of calculating amount of dead NPC on location when necessity of attack is being determinated. Fix of amount loss allies counter when finishing the quest. Output of messages to log is disabled in quest “The drill”. Fix of limit of times amount quest “Dangerous hunt” can be done. Descriptions of deleted maps were returned, which made server restart impossible without saves clearing. Rev.36 http://www2.xp-dev.com/sc/change/94227/36 Fix of Hartman’s dialog. The wrong requirement was deleted. Rev.35 http://www2.xp-dev.com/sc/change/94227/35 New quests from string “Guard” in Vaultcity - Vaultcity guard. Third trial. Drill. - Easy walk. - Go there, don’t know where. - Dangerous hunt. - Diplomatic courier. Fix of caravan’s and patrol’s departure time. Relative departure time was substituted for absolute. Added ability of caravan’s instant departure from the dialog. Fix of items that were generated in encounters 0 in number. (It was impossible to throw out them) Fix of quest “Hub bibliography”. Player need 7 books to gain reputation instead of 6. Rev.34 http://www2.xp-dev.com/sc/change/94227/34 - Maps fixes - Fixed reaction of BG guards on explosives activation Rev.33 http://www2.xp-dev.com/sc/change/94227/33 - Graphics fixes - Non-used files were deleted - Original map of BG was returned Rev.32 http://www2.xp-dev.com/sc/change/94227/32 Private car parking in geck town is disabled till the problem with car boot is solved. Rev.31 http://www2.xp-dev.com/sc/change/94227/31 Added first quests of string “Guardsman”, VaultCity. (Clearing of server saves is needed) Added template for making quests-combats with npc. (fighter_quest.fos, e.g. “Guard. First trial.”) Added ability to take quest “Hub bibliography” again if player failed to finish it at previous time. Fixed incorrect condition in Dappo’s dialogue in quest “Lot of defective rifles”. Added verification of addressee in “Postman” quest, now player can’t bring letter to any npc of type stated in the letter. Rev.30 http://www2.xp-dev.com/sc/change/94227/30 Deleted not used MSG files - FOSCRIPT.MSG. Rev.29 http://www2.xp-dev.com/sc/change/94227/29 Updates of way of making records into log. Added ability to look the name of the thread which made a record. Option in config – LoggingThread. You can also turn on output in the server application using “Logging with thread”. Changed format of time output. Now it is not “time in ms”, but “hours:minutes:seconds:milliseconds”. Rev.28 http://www2.xp-dev.com/sc/change/94227/28 Fix and formatting. Rev.27 http://www2.xp-dev.com/sc/change/94227/27 Fixed mistakes in calculating karma in quest "Returning of the fugitive". Rev.26 http://www2.xp-dev.com/sc/change/94227/26 Changes on Church of Brok and Xander location: - fixed Preacher, Scientist, repairer Alechandro, Cook, Mickey dialogs; - quests work correctly now; - repairer Alechandro identifies items correctly; - ability to record the information about Church was added (after completing Preacher's quest). Rev.25 http://www2.xp-dev.com/sc/change/94227/25 Activating time of dynamite was fixed. Rev.24 http://www2.xp-dev.com/sc/change/94227/24 New algorithm of generating of pseudorandom variables was added (Mersenne twister). Previously was standart C algorythm srand/rand. Rev.23 http://www2.xp-dev.com/sc/change/94227/23 Energy barrier on the entrance of GECK town was improved. Rev.22 http://www2.xp-dev.com/sc/change/94227/22 Fixed client crashing on start. For preventing this bug in future the control system of versions of cashed scripts in the client has been added. Rev.21 http://www2.xp-dev.com/sc/change/94227/21 Fixed problem when it was impossible to add players to GECK town after removing them with option "Clear list". Rev.20 http://www2.xp-dev.com/sc/change/94227/20 Fixed cooldown of the Postman quest. Rev.19 http://www2.xp-dev.com/sc/change/94227/19 Wrongly deleted dialogs are returned. Rev.18 http://www2.xp-dev.com/sc/change/94227/18 Fixes Deleted not used files. Fixed errors when player removes child killer karma additional times. Fixed error with incorrect name of script of map_v15_village map. Added output of message of increasing trade skill when finishing “Farm vermins” quest to the log. Weakened the giant wasp in the quest in Modoc. Rev.17 http://www2.xp-dev.com/sc/change/94227/17 AngelScript was updated to rev.684, v. 2.19.2 Added global variables to the client: bool __ShowTile, __ShowRoof, __ShowItem, __ShowScen, __ShowWall, __ShowCrit, __ShowFast, __ShowPlayerNames, __ShowNpcNames, __ShowCritId. Deleted limit of min. time of using Map::SetLoopTime (it was 1 second). Fixed registration of the global variables of string type (pragma globalvar). Fixed using reserved global variables string type. Added global variables to mapper: string __ClientPath, __ServerPath. Deleted constant modificators in client from string CritterlCl::Name, CritterlCl::Lexems. Added variable CritterlCl::NameOnHead, which if is not empty, outputted above critter’s head. Rev.16 http://www2.xp-dev.com/sc/change/94227/16 Fixed reclearing of child killer status. Rev.15 http://www2.xp-dev.com/sc/change/94227/15 Fixes: - Fixed names of Giant Wasps and bugs in kills statistic; - Reduced requirements of amount of killed mobs and intelligence in Broken Hills quests (bh_marcus.fodlg, bh_super.fodlg); - Reduced requirement of intelligence for “Fresh blood” quest (vc_doctor_troy.foldg); - Fixed possibility of gaining experience multiple times in “Cabbage” quest in Modoc (mod_farmer_q.fodlg); - Player receives reputation in NCR for quest “True cowboy” even if only one Brahmin is brought (ncr_felix.fodlg); - Michael’s miniquest in NCR can be done by every player only once (ncr_michael.fodlg); - Added requirement of 16 level for “buggy” quest (ncr_ratch.fodlg); - Fixed amount of gaining experience when player rejects gratuity in “Postman” quest (q_mail_reciever.fodlg); - Fixed cooldown of “Postman” quest; - Cave mobs – spawn point near the exit grid was removed in the smallest cave; - Fixes of several dialogues in Vault City; - New quest – “Fugitive returning” – when finished, status “Child killer” is removed. Hubbologist in Redding bank offers this quest; - New quest “Farm vermines”. It is offered by Joe in Modoc (mod_joe.fodlg); - Fixed energy barrier in GECK town; - Added computer for breaking of energy barrier inside the town; - Added car lots for GECK town citizens (not more than 2); - Added ability of clearing of citizens list by town leader using the terminal. Rev.14 http://www2.xp-dev.com/sc/change/94227/14 Update for Notepad++ (Syntax_highlighting, autocomplete, function parameters hints) Rev.13 http://www2.xp-dev.com/sc/change/94227/13 First stable version.h3. Your title here...Rev.199 http://xp-dev.com/sc/change/94227/199 Updated libraries for scripts compilation. Rev.198 http://xp-dev.com/sc/change/94227/198 Mistake in tanker captain's dialog which caused impossibility of finishing "Lost punks" quest was fixed. Mistake in determination of quest caravan's path was fixed. AHS-7 dialogue was fixed, killed children counter now works correctly. Rev.197 http://xp-dev.com/sc/change/94227/197 Fixes connected with server crashing/hanging because of the last updates. Mechanics of moving on the global map was fixed – normal vehicles tear and wear, fuel consumption, moving leaps and notification of breakdown were fixed. Rev.196 http://xp-dev.com/sc/change/94227/196 Outdated parts of the global map’s mechanism were deleted on the client’s side. Rev.195 http://xp-dev.com/sc/change/94227/195 Some fixes of hangings on connection to server. Mechanism for operating with graphic images on server’s side was added. It is necessary for convenient operating with data arrays which are presented as a picture. At the present time this is used for determining the landscape when moving on the global map. For operating with the mechanism the next functions were added: bool LoadImage(uint index, string@+ imageName, uint imageDepth, int pathType) – image loading; uint GetImageColor(uint index, uint x, uint y) – identifying pixel’s color; uint index – image’s number, which is currently operated, for the list see Game images in _defines.fos; string@+ imageName – file’s name, the only format is PNG, if null – the current image is deleted; uint imageDepth – depth of the image which is being created, 4 – ARGB, 3 – RGB, 2 – GB, 1 – B. It is needed for optimization operations with memory to give no memory which is not used (you can see the amount of given memory for the images in server’s window Memory -> Images); int pathType – pat type (see Paths in _defines.fos); uint x, y – pixel’s coordinates. Look for examples in functions void WorldmapInit(), uint GetGlobalMapRelief(uint x, uint y) скрипта worldmap.fos. All calculations connected with the global map are performed now only on the server’s side without duplication on the client’s side. Reserved functions global_process, global_invite were moved from main.fos to new script global_group.fos. Specification of reserved function global_process was changed and appropriately client’s processor CRITTER_EVENT_GLOBAL_PROCESS – current, destination coordinate types and speed were changed from integer to real number. global_process call with parameter #define GLOBAL_PROCESS_KICK (7) was added. It determines whether group leader or player himself wants to leave the group. The next functions were added for operating with locations on the global map: uint GetVisibleLocations(uint16 worldX, uint16 worldY, uint radius, Critter@+ visibleBy, Location@[]@+ locations) – it returns visible locations in certain radius. If parameter visibleBy is set, then the critter’s ability to see the location will be taken into account.; uint GetZoneLocationIds(uint16 zoneX, uint16 zoneY, uint zoneRadius, uint[]@+ locationIds) – it returns locations identificators which belong to the certain areas. __GmapGroupX/Y -> __GmapGroupCurX/Y, __GmapMoveX/Y -> __GmapGroupToX/Y; Удалены float __GmapSpeedX/Y were renamed; Universal speed parameter float __GmapGroupSpeed was added. Global variable uint __EncounterTime = 5000 was moved from the engine to scripts. Global variable which defines the frequency of calling global map’s processor GLOBAL_PROCESS_MOVE was added to the engine. Rev.194 http://www2.xp-dev.com/sc/change/94227/194 Variable __MaxLifeLevelSoftCap was added, it determines hitpoints rise per level. If it is equal to 0, then there’re no limitations, otherwise when character gets level = __MaxLifeLevelSoftCap, he won’t get more hitpoints per level . (For TLA __MaxLifeLevelSoftCap = 36). Dialogue with pay off Redding caravan fails was fixed. Chemist dialogue in SF who sells chitin armor was fixed. Locks for chests on Syd and Nancy’s quest location are generated randomly for each map. Output of errors to log in hostile_location_quest.fos script was switched off. Function of determination access rights when passing Redding gates was fixed (previously invalid permissions were accumulating in persons who have access list). Quest “Drill” script was fixed, now excess records in AnyData are deleted correctly after passing or failing the quest. Item “Chitin armor recipe” was restored, it was deleted by mistake. Rev.193 http://www2.xp-dev.com/sc/change/94227/193 Russian text output into log was fixed. Error appearing on starting single mode with enabled server GUI was fixed. One more fix of client-server network interaction (attempt of fixing hangings while downloading chache). Rev.192 http://www2.xp-dev.com/sc/change/94227/192 Bug with visualisation of other playing movement was fixed. It appeared in 161 revision. Rev.191 http://www2.xp-dev.com/sc/change/94227/191 Operation with network interaction was optimized, the processor will be loaded less when sending large volumes of information (e.g. cache transmitting). Models, which are situated in separate folders, loading was fixed (slashes are replaces by dots). Rev.190 http://www2.xp-dev.com/sc/change/94227/190 Cache loading was fixed. Cache situation was changed on the client’s side and now a separate folder for cache is created for every server. DataFiles.cfg situation was fixed. For critters in Mapper with Cond == 3 (dead) now automatically parameter ST_REPLICATION_TIME is set to -1 (if it is equal to 0) i.e. nonreplicated. And for Cond == 2 (knockout) big cooldown for getting up is set. For “dictionary” class was added method uint keys(string@[]@ keys) const which returns all the keys and their quantity. Now it is checked for presence of palette with the same name with the FRM file which is loading. If there isn’t one, then default is used (like now). Rev.189 http://www2.xp-dev.com/sc/change/94227/189 Extra system for detecting launched client’s windows was added. Bug with impossibility of reading some files when one copy of client/mapper/server is launched. Check for ITEM_GAG on detection of finishing REASON_HEX_BUSY_RING plan (when critter is surrounded by impassable objects or critters) was added. Ground and roof tiles offset was fixed in FOnline geometry. Rev.188 http://www2.xp-dev.com/sc/change/94227/188 Support of graphic formats MOS and BAM from Ininity Engine (Boldur’s Gate, Icewind Dale, Planescape Torment) was added. It is possible to define the number of played cycle or frame. To define cycle’s number in file name parameters (“S”) – define its index and to define the frame add dash and frame’s index. Examples: fileName$5.bam – load fileName.bam with frames for cycle № 5; fileName$1-4.bam - load fileName.bam with frame № 4 with cycle № 1; fileName.bam - load fileName.bam с with frames for cycle № 0. Rev.187 http://www2.xp-dev.com/sc/change/94227/187 Some actions were performed to fix server's hanging up. Rev.186 http://www2.xp-dev.com/sc/change/94227/186 Some actions were performed to fix server's hanging up. Not adding function's name to log was fixed. Levelcap was removed in the scripts. Rev.185 http://www2.xp-dev.com/sc/change/94227/185 NO_LOOT and NO_DROP mode were switched off for the giant bugs. Rev.184 http://www2.xp-dev.com/sc/change/94227/184 In connection with porting the server (*nix and 64bit) the next changes were made: Operating with net was rebuilded. Libevent library is used. http://monkey.org/~provos/libevent/ http://en.wikipedia.org/wiki/Libevent http://ru.wikipedia.org/wiki/Libevent Operating with GUI was remade. FLTK library is used. http://fltk.org/ http://en.wikipedia.org/wiki/FLTK http://ru.wikipedia.org/wiki/FLTK Operating with threads was remade. Pthreads is used http://sources.redhat.com/pthreads-win32/ (Windows port) http://en.wikipedia.org/wiki/Pthreads http://ru.wikipedia.org/wiki/Pthreads Changes are serious and can cause unstable work. Memory leak when loading maps was fixed in server. Loading maps with items in containers/inventories in mapper was fixed. Don’t use mapper of 171-182 revisions for editing old maps. Now parameters values for critters in mapper are applies only if they are not equal to zero. Initially value is taken from defaults (from .fopro), then from the map’s data if !=0. Critter’s names in mapper are now taken only by prototype number without accounting dialogue’s number. Old specification of Log function which was changed in 174 revision was returned to native scripts. Server’s GUI now ‘Courier New’ type, option in config was deleted. Option for changing server’s window size and its elements was added GUI size modifier GUISize=0 E.g. if GUISize=-50 then server’s window and all its elements will be 50% smaller, if GUISize=30 then 30% larger. Log in server window is unrolled as defaults. Also, the information from the log can be copied and scrolling is stopped if it is focused. Client’s crashing when playing items animation was fixed. Paths make_tla.bat were converted to Visual Studio 2008 (9.0). Rev.183 http://www2.xp-dev.com/sc/change/94227/183 Lo Pan’s mercenaries call leader’s name correctly now. Nancy and Sid’s quest location now is deleted after leaving it (previously it wasn’t deleted and hanged in the memory). SF docs were excluded from NoPvP locations. Letters generation in Postman quest was fixed. Holodisk with combat robot’s video recordings can be given to Buster now. Shaneman’s documents now have description in “Diplomatic mission” quest. A dialogue between bar clients in outer Vault City was added (wipe is required). Mini quest “Seduce art” was added in Klamath (wipe is required). Rev.182 http://www2.xp-dev.com/sc/change/94227/182 NPC-travellers will no longer take dead characters to the global map. Atoll was removed from Eli’s destinations. Skill displaying when increasing it through the dialogue was fixed. The mistakes in the newcomer’s dialogues in “Anger” quest were fixed. The mistake in mercenaries script which caused the leaving the employer earlier was fixed. Rev.181 http://www2.xp-dev.com/sc/change/94227/181 Reading nicknames from ignor list file was fixed. Console command for adding a player to the ignor list was added ~ignore PlayerName. Rev.180 http://www2.xp-dev.com/sc/change/94227/180 Mechanism of reputation calculation was switched off due to its incorrect work. Now all the list will be visible, but will work correctly. Rev.179 http://www2.xp-dev.com/sc/change/94227/179 Network protocol bug which caused short hangs up was fixed. Client's script was fixed which could cause null parameter call. Rev.178 http://www2.xp-dev.com/sc/change/94227/178 Superfluous rifles on offer were fixed. Rev.177 http://www2.xp-dev.com/sc/change/94227/177 Game version increment. Rev.176 http://www2.xp-dev.com/sc/change/94227/176 Sequence of handlers calling was fixed MAP_EVENT_OUT_CRITTER, MAP_EVENT_IN_CRITTER now the first one is called initially, then the second On intro_init map static lighting was set. Group moving indication on the global map was fixed (previous update bug). Rev.175 http://www2.xp-dev.com/sc/change/94227/175 Console command ~globalmap was added. It moves player to global map. It works only on noPvP maps for players not in combat mode and with noPvP mode turned on. In caravans and travellers scripts functions of moving to final destination's map were updated. Rev.174 http://www2.xp-dev.com/sc/change/94227/174 Porting game to Linux was started. Also supporting of 64 bit platforms. Client’s native libraries are now transmitted automatically. They are stored in ‘Client/data/cache’. Folder with scripts ‘Client/data/scripts’ is not used anymore and was deleted. To the server’s folder library STLPort (http://www.stlport.org/) was added. Client’s libraries are now compiling with it’s help. It is connected with porting to other platforms. Additional methods of moving were added to critters in server scripts bool Critter::TransitToMap(uint mapId, uint16 hexX, uint16 hexY, uint8 dir, bool withGroup) bool Critter::TransitToMap(uint mapId, int entireNum, bool withGroup) bool withGroup – when moving from global map to local map, all the group will be moved. Regular TransitToMap (without bool withGroup) work as with withGroup == false. Previously they worked as как withGroup == true, what led to moving all the group when replicating, if dead critter was on the global map. 3d critters were switched off. For switching on see PLAYERS_3D in _defines.fos. Constants for operating with game constants were added(see 168 revision, http://www2.xp-dev.com/sc/change/94227/168). Specification for the reserved function Log in native scripts was changed. Now the first returned parameter is function’s name from which it was called. Rev.173 http://www2.xp-dev.com/sc/change/94227/173 Traders were added to Atoll and Redding. Barterground was moved to position 690:760 as it isn’t needed anymore in north-west region due to noPvP mode. Locations “BiX Church” and “Atom’s Church” were moved to special encounters class. Fixed rewards in some quests. Maps fixes. Biscuit on Modoc can be received only once now (as in Fallout 2). Rev.172 http://www2.xp-dev.com/sc/change/94227/172 noPvP mode was activated on some TLA maps. It will be used on the next TLA session. For switching it off on your server set global variable __NoPvpMaps=false; in script config.fos Ability of making a list of ignored players, it works similarly NameColorizing. It needs manual adding nickname of ignored player to IgnoreList.txt For refreshing the list of ignored players in game use console command ~ignorelist. Rev.171 http://www2.xp-dev.com/sc/change/94227/171 Derivative objects system for mapper was updated. When placing base object, all his derivatives are placed automatically. If one object from the group is being selected - all others are being selected too. If the prototype or position of the derivative object is changed, changes will be automatically applied by mapper or server when loading. For the example see cars, at the present time they have one derivative object – their trunk. Now when placing the car, it will be created automatically, also it will be moved with it and if base or derivative object is deleted, all the group will be deleted too. The system of moving selected objects in mapper was upgraded. Now in hexagonal system the selected objects will be moved without being tearing apart. Also the selected objects, when being moved, will stop at the map’s edge, so they won’t mix into a pile. The problem with detecting whether items in container belong to their inventory or container. Previously items were placing on the hex and if you place two containers on the same hex, all the items will stack in one container. Now it is fixed. Item::TrapValue initialization through mapper was fixed. If rewriting is performed on prototypes loading, alert is displayed. It was added for items and critters prototypes. In object’s structure in mapper was deleted field const bool Item_InContainer and added const uint UID, ContainerUID, ParentUID, ParentChildIndex Rev.170 http://www2.xp-dev.com/sc/change/94227/170 Now server doesn't block client's libraries while working. Previously you needed to stop the server to replace client's dll (Server/scripts/fonline_tla_client.dll). Rev.169 http://www2.xp-dev.com/sc/change/94227/169 Combined content of MASTER.DAT + CRITTER.DAT. Size - 201 MB! Rev.168 http://www2.xp-dev.com/sc/change/94227/168 Client and Mapper are no longer bounded with Fallout’s data files - MASTER.DAT and CRITTER.DAT. These files content is combined (excess data is deleted) and packed into fallout.dat (will be uploaded with the next update) and defined in DataFiles.cfg. Global variables string __MasterPath, __CritterPath were deleted. The configurator (FOConfig.exe) is updated accordingly fixes above. Critter’s lighting in the death moment and flat items lighting was fixed. To server/client/mapper scripts the next functions for operating with the constants (*Names.lst) were added: int GetConstantValue(int constCollection, string@+ name) – identifying constant’s value by the name; string@ GetConstantName(int constCollection, int value) - identifying constant’s name by the value; void AddConstant(int constCollection, string@+ name, int value) – adding separate constant to the collection; bool LoadConstants(int constCollection, string@+ fileName, int pathType) – loading/reloading the collection; int constCollection – collection’s number, see Constants collections in _defines.fos, also you can define your own collections; string@+ name – constant’s name; int value - constant’s value; string@+ fileName, int pathType – collection file’s name and folder path. Rev.167 http://www2.xp-dev.com/sc/change/94227/167 Bug with error of name/password in login menu if it exceeds 12 symbols was fixed. Screen centering on the player when loading map in right-angle geometry was fixed. Copying objects in Mapper from smaller map to the bigger one was fixed. Mapper hanging up when Sleep < 0 was fixed. Crashes when loading ART files were fixed. Principe of transparency defining with parameter ‘”t” was changed, now it isn’t equal to 255 – paletteIndex, but to max(R, G, B). Rev.166 http://www2.xp-dev.com/sc/change/94227/166 System of operating with items prototypes was updated (ProtoItem). Ability to add your own fields to proto class was added. New pragma ‘bindfield’ is used for this, e.g.: #pragma bindfield "const int ProtoItem::MyValue -> 400" it means creation of field MyValue of int type with offset 400 (considering thas int is 4 byte, it will occupy bytes 400, 401, 402, 403). Totally for user’s fields 500 bytes are available. Field is equal to zero as defaults, but it is possible to change the value by defining value (in the current case MyValue=111 or MyValue=SkillBigGuns) in proto file (.fopro), number (if it contains only numbers) or path to the file (it is identified by the presence of ‘/’ or ‘\’ symbols). For now fields which are not used by the engine are taken out to scripts, see _defines.fos Item prototypes fields. Changes in structure ProtoItem. All next methods are deleted uint8 GetType() const uint16 GetProtoId() const bool IsGrouped() const bool IsWeared() const bool Container_IsGroundLevel() const List of new fields which are registered in the engine (part of them is renamed, some were deleted) http://pastebin.com/8R4QkP3h The other fields are registered with #pragma bindfield in _defines.fos. Now all items can stack and wear out, for this Boolean fields are added to the prototypes bool ProtoItem::IsStackable bool ProtoItem::IsDeteriorable Item type ITEM_MISC_EX was deleted, it is combined with ITEM_MISC (miscex.fopro is deleted). Vehicles are taken out to separate type ITEM_CAR (car.fopro was added). Also now user can define any type numbers for the items. Former fields uint MiscEx_StartVal0..9 of the start values for Item::Val0..9 were moved to common area named StartValue0..9, and with these values Item::Val0..9 are initialized. Metod bool Item::IsCar() const was deleted, instead of it use GetType()==ITEM_CAR. The next methods are renamed bool Item::IsGrouped() const -> bool Item::IsStackable() const bool Item::IsWeared() const -> bool Item::IsDeteriorable() const The next fields are renamed uint16 Item/ItemCl::BrokenWear -> Item/ItemCl::Deterioration uint16 Item/ItemCl::CarDeteoration -> Item/ItemCl::CarDeterioration uint8 MapperObject::Item_DeteorationFlags -> uint8 MapperObject::Item_BrokenFlags uint8 MapperObject::Item_DeteorationCount -> uint8 MapperObject::Item_BrokenCount uint16 MapperObject::Item_DeteorationValue -> uint16 MapperObject::Item_Deterioration Mechanism of affiliated objects was moved for common use. Previously it was available only for vehicle’s trunk. One object can have up to five derivatives. Numbers of the derivative objects are defined in uint16 ProtoItem::ChildPid_0..4. By creation of base object, derivatives are created automatically. For now Mapper doesn’t create affiliated obkects automatically, but it will be fixed in further. For setting the place of situation, special field ChildLines_0..4 is used (former MiscEx.Car.Bag_0..1, see below by recording format). Also it is possible now to define automatic blocking for any objects, not only for vehicles – field BlockLines (former MiscEx.Car.Blockers). Recording format for Child/BlockLines – XYXYXY..., where X is direction number (0..5/7), Y is the amount of steps (1..9) in this direction (previously for vehicle’s trunk for another recording format - XXXX...). Maximum amount of steps for BlockLines – 50, for ChildLines – 6. For operating with derivative objects use methods Item@+ Item::GetChild(uint childIndex) const (бывшая Item@+ Item::CarGetBag(int numBag)) bool Map::CheckPlaceForItem(uint16 hexX, uint16 hexY, uint16 pid) const (bool Map::CheckPlaceForCar(uint16 hexX, uint16 hexY, uint16 pid) const) Fields renaming affected lots of scripts, be attentive. Old proto format is converted to the new one automatically, but Object Editor (ObjectEditor.exe) still operates only with old format. It will be fixed soon. To replication.fos and entires.fos scripts the influence of right-angled geometry was added. Script main_planes.fos is formatted as a separate module. All pragmas were move to the end of _defines.fos. Drop of FPS when switching on view/attack borders was fixed. Rev.165 http://www2.xp-dev.com/sc/change/94227/165 Fix for the ASCompiler. Rev.164 http://www2.xp-dev.com/sc/change/94227/164 Changed ASCompiler output format to “filename(linenumber) : message”. Such output is recognized by a number of IDEs and allow jumping to the code by a double-click on the output line. Rev.163 http://www2.xp-dev.com/sc/change/94227/163 Tabs management system was added to Mapper. Now one tab can have numerous subtabs. Tabs names and its filling is defined in mappers scripts. But some tabs already have initial filling. Item – items prototypes by defaults (items.lst); Tile – tiles by default, search is performed in ‘art/tiles/’; Crit – critters prototypes by defaults (critters.lst); Fast – displays often used objects, initial state is defined in scripts (InitializeTabs in mapper_main.fos); Ign – Ignore, shows ignored objects which are not shown on the map; Inv, Msg, Map – special tabs which have nothing to do with the mechanism, but it is possible to change its name throug TabSetName (see below). The tab can have subtabs only of one type – tiles, critters or items (displayed in priority order). For items and critters the subtab’s name is chosen by user, for the tiles it is performed automatically. The lowest subtab “all” contains all prototypes (or tiles) on a list above. For activation the menu of tab choosing – perform a double click on it. If positions are numerous then use mouse wheel for navigation (scroll speed: normal – 4, with pressed shift – 8, with pressed ctrl – 20, with pressed alt – 50). For tabs management use scripts, functions Tab* uint TabGetTileDirs(int tab, string@[]+ dirNames, bool[]+ includeSubdirs) uint TabGetItemPids(int tab, string@+ subTab, uint16[]@+ itemPids) uint TabGetCritterPids(int tab, string@+ subTab, uint16[]@+ critterPids) void TabSetTileDirs(int tab, string@[]+ dirNames, bool[]+ includeSubdirs) void TabSetItemPids(int tab, string@+ subTab, uint16[]@+ itemPids) void TabSetCritterPids(int tab, string@+ subTab, uint16[]@+ critterPids) void TabDelete(int tab) void TabSelect(int tab, string@+ subTab) void TabSetName(int tab, string@+ tabName) int tab – tab’s number (see Tabs in _mapper_defines.fos); string@[]@+ dirNames – folder’s names for tiles searching; bool[]@+ includeSubdirs – turn on search in subfolders; string@+ subTab – subtab’s name; uint16[]@+ itemPids – item’s prototype numbers array; uint16[]@+ critterPids - critters’s prototype numbers array; string@+ subName – tab’s name. Global variable was added bool __SplitTilesCollection = true It defines whether tiles should be divided into groups in the folders. The group is defined as a string in the file’s name before the first number (e.g. abc12.png - group abc), if the number is absent, then group is defined as '<other>'. In connection with these changes, the global functions are deleted uint GetFastPrototypes(uint16[]@+ pids) void SetFastPrototypes(uint16[]@+ pids) Other updates. Fixed incorrect work of server/client which caused some bugs. Global variable int __GeometryType was added to _defines.fos for the indication of chosen geometry. See constants in _defines.fos Geometry. Depending on its value, tab with Tactics and Arcanum is added. Ability to work with file names which include spaces is added. When loading ART files, it is possible to flip them vertical or horizontal. Parameters in the file name - ‘v’/‘V’ and ‘h’/‘H’. When loading SPR file, if you define in changing color parameter – layer’s number -1, then the modificator will be applied to all four layers. Rev.162 http://www2.xp-dev.com/sc/change/94227/162 Quest perks “Midnight Child”, “Nosderatu Blood” were added (Modoc, “Night’s tender”). Now new home position is set for NPC-travelers (Devin, Eli) when they enter new location. Female characters now can finish quest of removing childkiller status. Allies HP and resistances were increased in “Dangerous hunt” quest. Also a simple dialogue is added to them. The forged letter is now removed from the inventory when finishing quest “Forgery”. Edvin in Klamath tells with a popup phrase when starting gathering items. A delay was added to the prisoner giving the cues in “Ernst Telman” quest. Ability of intimidating the NPC visitor if it’s a woman was deleted in quest “Wrath”. Barcus now reacts with popup phrases to the futher meetings with the player who have done quest “Amnesty for Joshua”. Upon the receiving lieutenant rank of Vaultcity’s Guard, player is awarded with a black combat armor. In “Diplomatic Courier” quest time (24 hours) which Sheiman takes for the thoughts now is calculated correctly. Upon finishing this quest, player receives +1 reputation in NCR. Sell price of the buggy which player receives upon finishing the quest in NCR was set to zero. Dialogue launch when player uses an antidote in quest “Poisoned Regulator” in Redding was fixed. Players who gained Vaultcity citizenship now can trade with Randal with no restrictions. Reputation calculation in quests “Real Cowboy”, “Hub Bibliography” in NCR was fixed. If player refuses the reward in “Hub Bibliography” quest, he gains +2 reputation (was +1) when he delivers 5 books. Increasing raider’s resistances and skills every new attack on NCR was switched off. Ability of crafting and buying chitin armor was added. Giant beetles drop chitin. Items with ITEM_GAG flag deletion upon player’s death was fixed. Rev.161 http://www2.xp-dev.com/sc/change/94227/161 Ability to customize game geometry was added, either the support of isometric projection with quadrangles was. For customization use global variables bool __MapHexagonal – isometry type: true - hexagonal, false - quadrangular; int __MapHexWidth – hex width; int __MapHexHeight – hex height; int __MapHexLineHeight – hex line height; int __MapTileOffsX/Y – ground tiles offset; int __MapRoofOffsX/Y – roof tiles offset; int __MapRoofSkipSize – amount of hex per one roof tile (necessary for its correct hiding); float __MapCameraAngle – 3d model rendering angle; bool __MapSmoothPath – path smoothing when moving; string __MapDataPrefix – path and prefix for the geometry files. Operational sprites for geometry are situated in art/geometry/. Quadrangular isometry use 8 directions, hexagonal – 6. In script config.fos in function InitializeGeometry(), necessary adjustments for 3 games (Fallout1/2, Fallout Tactics and Arcanum) are added. This function can be called in server, client and mapper scripts, as all three of them need geometry information. Global variables uint __LookDir4, uint __LookSneakDir4 were added for 8-directional geometry. Fixed Tactics SPR files loading. Mode MODE_NO_TALK was added. It affects ability to talk and appearance of the icon in the context menu. Double click on hex, affecting avatar’s moving, was fixed. Creation of descriptions for critters prototypes (FODLG.MSG) with high identifiers was fixed. Image of elephant gun was added in 3d. Rev.160 http://www2.xp-dev.com/sc/change/94227/160 Fixed a bug with server and client communication. Fixed a bug with wrong sprites display. Rev.159 http://www2.xp-dev.com/sc/change/94227/159 Documentation's update, mistakes fixes. Rev.158 http://www2.xp-dev.com/sc/change/94227/158 Script start_server_client.fos was renamed to config.fos and now it isn't simply pasted into function start(), but presented as a separate module with function InitializeGame(). Macros for operating with time were moved from _macros.fos to separate module _time.fos. Slight fix of drugs.fos. Rev.157 http://www2.xp-dev.com/sc/change/94227/157 Errors messages in server log when operating with functions GetPlayerName/GetPlayerId were removed. Also GetPlayerName returns null now, if the player wasn't found. Bugs of reputation calculation were fixed. Rev.156 http://www2.xp-dev.com/sc/change/94227/156 Ability to affect the colors when loading Tactics sprites was added. To make color shift, define necessary values in file name’s parameters (“$”). Format: fileName$[index,r,g,b]animName.spr (can be any amount of shifts […]) where index – body part’s number (0 - miscellaneous, 1 - skin, 2 -hair, 3 - armor); r,g,b – color shift for the each component, can be negative Example: someSprite$[2,50,-30,-20]anim1.spr – load sprite someSprite.spr, with animation anim1 and hair’s color shift in RGB (50,-30,-20). Additional flags for operating with color’s shift were added for Tactics critters (_animation.fos, animation.fos). Use macros ANIM1_COLOR_SKIN(index), ANIM1_COLOR_HAIR(index), ANIM1_COLOR_ARMOR(index) for values defining. Index can take on value from 0 to 15, appropriate to it values of color shift look in array colorOffsets of animation.fos script. For ability testing you can use text function void ColorOffset(Critter& cr, int skin, int hair, int armor) in test.fos. Rev.155 Some native structures were fixed. Rev.154 http://www2.xp-dev.com/sc/change/94227/154 AngleScript is updated to revision 822. Ability of sorting is added to scripts arrays Ascending sort void array::sortAsc() void array::sortAsc(uint index, uint count) Descending sort void array::sortDesc() void array::sortDesc(uint index, uint count) For user’s classes sorting realize opCmp method http://www.angelcode.com/angelscript/sdk/docs/manual/doc_script_class_ops.html Vehicle animations on the global map and item’s animations in Mapper are fixed. Some points in operating with critter’s animations are fixed (animation.fos). Global variable __GmapActive is fixed. Global variable for setting min. offline time after that client will completely exit from the game was added. uint __MinimumOfflineTime = 180000; // 3 minutes Rev.153 http://www2.xp-dev.com/sc/change/94227/153 Additional constants for operating with Chosen's actions were updated (Get/SetChosenActions, for CHOSEN_USE_ITEM). Rev.152 http://www2.xp-dev.com/sc/change/94227/152 Additional constants for operating with Chosen's actions were added (Get/SetChosenActions). Rev.151 http://www2.xp-dev.com/sc/change/94227/151 Bugs with incorrect files's names path detecting were fixed. Rev.150 http://www2.xp-dev.com/sc/change/94227/150 3d models loading was fixed. 3d models rendering to sprites was fixed. Critters animations were fixed (death in 2d and 3d modes). Shift calculation for some models was fixed. SAY_DIALOG/SAY_APPEND mechanics was fixed. (by Atom) Server’s config loading in Mapper was fixed. (by Atom) File HashNames.lst was added to client. Names of files which contain parameters (‘$params’) should be entered in it. If you use such names in the prototypes, Mapper or scripts GetStrHash), then include this name to this list. Format of writing: [any number] [file’s name] [end of string] E.g. 0 art\scenery\BrazureFire$t.ART 0 art\scenery\BrazureFire$t3.ART In further it is possible to detect and transmit such names automatically, but for the present use this system. Roof disappearing if it is situated in odd hex in two axis. Rev.149 http://www2.xp-dev.com/sc/change/94227/149 Documentation was updated. Some fixes in Arroyo (Minoc’s quest about raiders). Usage mode was added for sledgehammer and supersledge (for resources mining). Guard lib was brought into common standard of scripts formatting. Rev.148 http://www2.xp-dev.com/sc/change/94227/148 Two reserved variables were added to HLSL effects float AnimPosProc – current animation’s per cent 0%..100%, [0,1); float AnimPosTime – current animation’s time in seconds. Client’s hanging under certain circumstances was fixed (e.g. receiving item’s data when player in process of moving between maps). Dump generation when closing server application without stopping was switched off. Generation of unnecessary messages to log in function animation_ animation.fos was fixed. Rev.147 http://www2.xp-dev.com/sc/change/94227/147 Parameters for critter’s movement controlling were added. Time for moving in milliseconds: #define ST_WALK_TIME (117) #define ST_RUN_TIME (118) Ability to move #define MODE_NO_WALK (539) #define MODE_NO_RUN (540) If these parameters are equal to zero, then data is taken from CritterTypes.cfg. Loading of some ART files was fixed (Arcanum). Ability of specifying special image processing was added. Palette elements will be transparent depending on its index in the palette (alpha = 255 – index). To chose this loading type - use symbol “t” (or “T”) in file name parameters. E.g. ‘filename$t.art’; also you can combine with palette, e.g. ‘filename$1t.art’. Ignoring of spec.symbol “/r” was additionally added for splitEx function. In functions void DrawSprite(... bool applyOffsets) if applyOffsets == true there were additionally added shifting of width/2 and height of the image. Unnecessary fo3d files were deleted. Palette influence for Arcanum critters was fixed. Rev.146 http://www2.xp-dev.com/sc/change/94227/146 One more fix of incorrect critter displaying. Rev.145 http://www2.xp-dev.com/sc/change/94227/145 Quest “Communicated” was added (Redding). Caravaneers phrases were fixed, now they tell correct departure dates. Quest “Honomer’s bodyguard” was added (San Francisco). Retina scanner in GECK town was fixed. Slight fixes of the hubbolog’s map in San Francisco. Special result function for skill rise calculation through a dialogue was added.(dialog@r_SkillUp) The script for quest locations creating was fixed (hostile_location_quest.fos), allies and enemies scripts now work correctly. Resetting of a quest variable when deleting the location was fixed. Script for realization a dialogue between several npc’s with popping up phrases was added. (npc_dialog.fos) Story line implementation was continued. Maps numeration in the location with mutants was fixed (quest string “Guardian”). Rev.144 http://www2.xp-dev.com/sc/change/94227/144 Critter’s hitpoints regeneration was moved to scripts, you can look realization in function critter_idle main.fos. Global function for critters sampling from the global map was added to server scripts. uint GetGlobalMapCritters(uint16 worldX, uint16 worldY, uint radius, int findType, Critter@[]@+ critters) Additionally to methods bool Map::GetNearEntireCoords(int& entire, uint16& hexX, uint16& hexY) const bool Map::GetEntireCoords(int entire, uint skip, uint16& hexX, uint16& hexY) const were added methods bool Map::GetNearEntireCoords(int& entire, uint16& hexX, uint16& hexY, uint8& dir) const bool Map::GetEntireCoords(int entire, uint skip, uint16& hexX, uint16& hexY, uint8& dir) const which return direction. Global variable which specifies if the password in the client’s login window should be hidden was added bool __HidePassword = true Incorrect critters creation in Mapper was fixed. Displaying of switching critter’s type 3d->2d on the client’s side was fixed. Rev.143 http://www2.xp-dev.com/sc/change/94227/143 Fixed critters loading in Mapper (141 revision's bug). Rev.142 http://www2.xp-dev.com/sc/change/94227/142 Fixed server loading (the previous revision bug). Rev.141 http://www2.xp-dev.com/sc/change/94227/141 Mechanism for identifying critter’s animation file name was added. Now you can operate with critter’s animations from Tactics and Arcanum without any conversions. All data files which you need for enabling one or another critters are cited in CritterTypes.cfg comments. The next critters were added to SDK: Humanoid, Behemoth, MTT, Pacification. They are repacked to the separate archive ftrobots.bos. But all available critters from Tactics and Arcanum are added to CritterTypes.cfg with correctly defined parameters for them (by Tabloid), so you can enable the needed data files and use the critters. All animations are transformed to the general appearance (ANIM2_2D*, ANIM2_3D* -> ANIM2*). The functional for operating with them is moved to scripts. In some places where these values are used, numeric literals are replaced by string constants, which description you can find in DefineNames.lst. Fixes were made in weapons prototypes (weapons.fopro) and fo3d templates for 3d critters from VanBuren (_VBHuman.fo3d, _VBMob.fo3d, _VBWeapon.fo3d). Now three sets of primary and secondary animations are used for critters, for three condition types – alive, knockout, dead const uint Critter/CritterCl::Anim1/2Life/Knockout/Dead (const uint Critter/CritterCl::Anim1/2 were deleted). These values are used for animations as default. Pay attention that Anim1 additionally is summed up with animation of the weapon in the active slot, bit-by-bit OR. It is necessary for assignation certain values on continuing basis (e.g. sitting, lying position). For changing these values the next method is used void Critter::SetAnims(int cond, uint anim1, uint anim2) int cond – defines the position to apply values to (COND_* in _defines.fos), if null it is applied to all three; uint anim1, anim2 – animation values. Deleted const uint8 Critter/CritterCl::CondExt Accordingly all COND_*_* for them are deleted. Now position is differentiated by the animations. In connection with it, the next methods specifications were changed void ToDead(uint anim2, Critter@+ killer) bool ToKnockout(uint anim2begin, uint anim2idle, uint anim2end, uint lostAp, uint16 knockHx, uint16 knockHy) void EventKnockout(uint anim2begin, uint anim2idle, uint anim2end, uint lostAp, uint knockDist) void EventSmthKnockout(Critter& fromCr, uint anim2begin, uint anim2idle, uint anim2end, uint lostAp, uint knockDist) uint anim2begin, anim2idle, anim2end – animations of the knockout begging, staying in it and coming to yourself. Standard macroses are defined for the transfer KNOCKOUT_ANIM2_DEFAULT, KNOCKOUT_ANIM2_STUNNED (in _animation.fos). Also Mapper operates now not with CondExt, but with Anim1/Anim2 for the current Cond. Global variables for client/mapper for defining combat mode animations were added uint __Anim2CombatBegin = ANIM2_BEGIN_COMBAT uint __Anim2CombatIdle = ANIM2_IDLE_COMBAT uint __Anim2CombatEnd = ANIM2_END_COMBAT The next reserved client/mapper functions were added (animation.fos): - string@ critter_animation(int animType, uint crType, uint anim1, uint anim2, uint& pass, uint& flags, int& ox, int& oy) Function which is called when loading necessary animation. Returned value - file’s path and name. int animType – critter’s animation type (new parameter which is set in CritterTypes.cfg); uint crType – critter’s type; uint anim1, anim2 – animation’s indexes; uint& pass – function call’s number, is changed by the user. If animation loading failed and this parameter was changed, then function will be recalled (in certain cases you should try to load different files for the one animation); uint& flags – flags, at the present moment two of them – to take the first or the last frame from the animation ( Anim loading flags in _animation.fos); int& ox, &oy – shifts for the animation, in pixels. - bool critter_animation_substitute(int animType, uint crTypeBase, uint anim1Base, uint anim2Base, uint& crType, uint& anim1, uint& anim2) If animation loading failed (and uint& pass wasn’t changed), then this function is called for animation substitute detection (e.g. left hook can be replaced by the right hook). true is returned if the substitute was found (engine also additionally checks if crType, anim1, anim2 were really changed), false – no substitute, animation won’t be loaded and played. int animType – see above; uint crTypeBase, anim1Base, anim2Base – base critter’s and animation’s type, which were at the start; uint& crType, &anim1, &anim2 - critter’s and the current animation’s type for the substitution - bool critter_animation_fallout(uint crType, uint& anim1, uint& anim2, uint& anim1ex, uint& anim2ex, uint& flags) As Fallout’s animations are still loaded by the engine (additional shifts calculation and animations pasting together is needed), for determining animations conformity this function is called, i.e. instead of critter_animation for fallout’s animations this function is called. true is returned if animation is presented, false – not. Method bool Critter::IsAnim3d() const is deleted, use instead of it the global function int GetCritterAnimType(uint crType) values look in Anim types _animation.fos. Critters actions sounds now are played in the scripts, in animation_2d/3d_process. New mechanism for sound file name identification was made, look PlayAnimSound in animation.fos. Critters prototypes were divided into fallout’s (fallout2.fopro) and TLA's (tla.fopro). Bug with roof’s non-transparency in Mapper was fixed. Name indication of chosen critter or tile prototype in mapper was added. Format fo3d now recognizes named constants DefineNames.fos, namely for modificators Mesh, Subset, Layer, Value, DisableLayer, DisableSubset, Texture, EffDef (для Dword), Anim, AnimSpeed, AnimEqual. Global server variable for determining call frequency was added GLOBAL_PROCESS_MOVE uint __EncounterTime = 5000 Global client variable for determining frequency of foolish trick animation call was added uint __CritterFidgetTime = 50000 is deleted using formula Random(__CritterFidgetTime, __CritterFidgetTime * 2) Item prototype’s parameter was deleted bool ProtoItem::Weapon_RequiresActivation now if animation doesn’t exist, it is just not played. Parameters uint16 MapperObject::Scenery_ToMapX/Y were deleted, in mapper also. Moving between locations is performed by entery points. In weapons prototypes types of action animations were substituted from numeric by string constants (accordance look in DefineNames.lst). Appropriate changes were performed in ObjectEditor. Client functions PlaySound andPlayMusic now return bool, signalizing if file was found or not. Global functions for server/client/mapper which return appropriate values from CritterTypes.fos were added uint GetCritterAlias(uint crType) string@ GetCritterTypeName(uint crType) string@ GetCritterSoundName(uint crType) Mapper’s scripts were moved to server’s scripts folder. Also the whole set of functions for operating with CritterTypes.fos was added to Mapper bool IsCritterCanWalk(uint crType) bool IsCritterCanRun(uint crType) bool IsCritterCanRotate(uint crType) bool IsCritterCanAim(uint crType) bool IsCritterAnim1(uint crType, uint anim1) int GetCritterAnimType(uint crType) uint GetCritterAlias(uint crType) string@ GetCritterTypeName(uint crType) string@ GetCritterSoundName(uint crType) Specifications of client’s reserved functions were changed animation2d_process, animation3d_process parameter bool animateStay was added to the beginning. It indicates if any action is performed now (false) or stand animation (true). Reaction for global map’s interface buttons pressing when the size of map’s area (GmapMap) covers the buttons area was fixed. Bug with incorrect loading/saving maps in which script’s or function’s name consists of spaces was fixed. Bug with potential server crashing when using AI_PLANE_MISC was fixed. Rev.140 http://www2.xp-dev.com/sc/change/94227/140 Some robots from Fallout Tactics (look the next revision). Rev.139 http://www2.xp-dev.com/sc/change/94227/139 The next quests were added in San Francisco: “Introduction into Hubbology”, “Hub’s justice”. Transport to Atoll is available for the players who are doing “Introduction into Hubbology” quest (npc is in the docs area of San Fracisco); Automatic transfer to the command center of GECK city citizens when entering the map was removed. Now citizens can choose spawn point. Quest location “Hubbologists laboratory” was added (author JunoReactor). Rev.138 http://www2.xp-dev.com/sc/change/94227/138 Arroyo: Quest “Evidence of Chosen’s death” was added (Todd Stewart); Two courier quests were added (Cassidy, Todd Stewart); Encounter fixes: Fixed bugs of the 120 revision; Fixed random encounters where normally aggressive npc’s didn’t attack after fighting with the other npc’s; Fixed bug with unlimited experience in Den; Fixed mistakes in NCR quests cooldowns; Slight dialogues fixes. Rev.137 http://www2.xp-dev.com/sc/change/94227/137 Ability to specify the layer of tiles/roof to organize correct query of displaying. Totally there can be 5 layers, from 0 to 4. You can switch between them with pressing shift and pressing appropriate key (from 0 to 4). Indication of the current layer is specified in the map’s supplemental information (in upper right corner). Specification of MapperMap AddTile/AddTileName methods was expanded, also layer parameter was added void AddTile(uint16 hexX, uint16 hexY, int offsX, int offsY, int layer, bool roof, uint picHash) void AddTileName(uint16 hexX, uint16 hexY, int offsX, int offsY, int layer, bool roof, string@+ picName) Functions for hash calculation by file’s name and inverse function were added to the native scripts const char* (*GetNameByHash)(uint hash); // Get name of file by hash uint (* GetHashByName)(const char* name); // Get hash of file name The functional for operating with the chosen’s actions was added to the client’s scripts. For taking or specifying the actions use functions uint GetChosenActions(uint[]@+ actions) void SetChosenActions(uint[]@+ actions) This array consists of blocks of seven variables, the first is the type, the other are the parameters. Values of types and parameters look in _client_defines.fos Chosen actions. Argument with the location was added to the reserved function for checking the entries into this location bool entrance_FuncName(Location& loc, Critter@[]& critters, uint8 entrance) The next events were added for critters CRITTER_EVENT_USE_ITEM_ON_ME bool EventUseItemOnMe(Critter& whoUse, Item& item) CRITTER_EVENT_USE_SKILL_ON_ME bool EventUseSkillOnMe(Critter& whoUse, int skill) In the calls stack it is situated between CRITTER_EVENT_USE_* and the global handler. That is CRITTER_EVENT_USE_ITEM for the player + CRITTER_EVENT_SMTH_USE_ITEM for those who can see the player. CRITTER_EVENT_USE_ITEM_ON_ME The global handler critter_use_item. and CRITTER_EVENT_USE_SKILL for the player + CRITTER_EVENT_SMTH_USE_SKILL for those who can see the player. CRITTER_EVENT_USE_SKILL_ON_ME The global handler critter_use_skill. The supplemental information (current hex, fps, etc.) in Mapper is presented in the upper right corner. Bug of 135 revision with transparent tiles when placing them was fixed. Data connected with unfinished mechanism of textured grid was deleted. Rev.136 http://www2.xp-dev.com/sc/change/94227/136 Maps converted to text format. Rev.135 http://www2.xp-dev.com/sc/change/94227/135 Now only text format is used for maps, it is binary only for loading. All maps are converted to the text format (they will be uploaded with the next revision). Extension of this format is “fomap”. To convert your own maps to the new format – execute in Mapper ““#ConvertMaps”, then you should manually or using Mapper set required values in Time, NoLogOut, ScriptModule, ScriptFunc fields, which values you can see in file Maps.cfg. File Maps.cfg is not used anymore, locations prototype numbers are defined opposite to their name in file Locations.cfg, as in the most cases the one map prototype is used for the one location. According to these changes, the next MapperMap methods are deleted: uint GetTile(uint16 tileX, uint16 tileY, bool roof) const void SetTile(uint16 tileX, uint16 tileY, bool roof, uint picHash) string@ GetTileName(uint16 tileX, uint16 tileY, bool roof) const void SetTileName(uint16 tileX, uint16 tileY, bool roof, string@+ picName) And the next are added: uint GetTilesCount(uint16 hexX, uint16 hexY, bool roof) const void DeleteTile(uint16 hexX, uint16 hexY, bool roof, uint index) uint GetTile(uint16 hexX, uint16 hexY, bool roof, uint index) const void AddTile(uint16 hexX, uint16 hexY, int offsX, int offsY, bool roof, uint picHash) string@ GetTileName(uint16 hexX, uint16 hexY, bool roof, uint index) const void AddTileName(uint16 hexX, uint16 hexY, int offsX, int offsY, bool roof, string@+ picName) Also the next fields are added: const int WorkHexX const int WorkHexY int Time bool NoLogOut string ScriptModule string ScriptFunc The next methods are deleted (as their technology is not good enough for now): string@ GetTerrainName(uint16 tileX, uint16 tileY) cons void SetTerrainName(uint16 tileX, uint16 tileY, string@+ terrainName). Function bool SaveMap(MapperMap@+ map, string& fileName, int pathType, bool text, bool pack) now looks as bool SaveMap(MapperMap@+ map, string& fileName, int pathType). The ability to transmit commands /text /pack when saving by the console is deleted respectively. Several functions for operating with map’s fields were added to mapper script (you can do this procedure simply editing necessary field in the map’s file with text editor): #MapTime value – map’s time in minutes; #MapNoLogOut value –possibility to log out on the map; #MapScriptModule moduleName – script, module’s name; #MapScriptFunc funcName – script, function’s name. Now it is possible to place lots of sprites on one hex. Be attentive, fallout’s tiles have the same size and if you place two tiles on the same hex, you won’t see it (only if you select it , it will be less transparent than the others). Take it into account when you place or copy-paste tiles. Function #ClearTiles can help you with this problem, it deletes superfluous tiles from the hex. So, if you operate with fallout’s tiles and you don’t need several tiles on the same hex, execute this script when you finish work. Also you can place tiles on every hex, not in two. Ability of shifting is added for tiles. To produce tile shift just make the same operations as switching between tiles, but additionally pressing shift. Also you can use the same shift procedure for items. To cancel shift, press Alt with Shift and move objects. Fixed 130 revision’s bugs. Fixed bug with absence of shifting in fofrm with one sprite. Fixed bug with error in loading sprites in scripts (LoadSprite), which caused several other bugs. Remained ini files were formatted. Rev.134 http://www2.xp-dev.com/sc/change/94227/134 Config was uploaded by mistake. Take into accont, don't use config file from 132 and 133 revisions, admin pass is "hh" there. Rev.133 http://www2.xp-dev.com/sc/change/94227/133 Redding maps fixed, quest NPC were added. Rev.132 http://www2.xp-dev.com/sc/change/94227/132 Fixed "Anger" quest, the missing dialogue was restored, now it can be finished. Added quest "Forgery". (VC, Linnet) Rev.131 http://www2.xp-dev.com/sc/change/94227/131 New quests "Anger", "Ernst Telman" were added. (VC, Linnet) Fixed bug in VC guard's AI scripts. Fixed mistakes in quest “Amnesty for Joshua” dialogues. Ability to cancel their service for mercs/companions was added if the owner exits from location to the global map. Rev.130 http://www2.xp-dev.com/sc/change/94227/130 Support of graphics files SPR, TIL, ZAR from Fallout Tactics was added. Support of data files BOS from Fallout Tactics was added (works as ZIP archieve). For loading certain animation from SPR files, state it in the name after “$” sign. E.g. loading CrouchAttackClubSwing animation from file Mutant.spr - “Mutant$CrouchAttackClubSwing.spr”. The first frame of first animation is taken without direction. Also, ability to set certain palette for ART files (graphics files from Arcanum) was added – state palette’s number (from 0 to 3) after “$” sign. E.g. to load dfmbnsba.art file with the second palette - “dfmbnsba$1.art”. First palette is taken without direction (that is 0). Operation with sprites was changed. Now all interface graphics (which is set in ini files) is represented not as one sprite, as continuously played animation. Functional for operation with currently drawn sprites on the map was added to the native client’s and mapper’s scripts. Structures: struct Sprite – displayed sprite; struct SpriteInfo – additional information about the sprite. Functions: Sprite* (*GetDrawingSprites)(uint& count); - currently drawn sprites, if no sprites (on the global, menu), then NULL is returned and count == 0; SpriteInfo* (*GetSpriteInfo)(uint sprId); - getting additional information about certain sprite; uint (*GetSpriteColor)(uint sprId, int x, int y, bool affectZoom); - getting pixel’s colour, with the ability of taking zoom into account; it isn’t available for 3d models yet; format - ARGB; bool (IsSpriteHit)(Sprite sprite, int x, int y, bool checkEgg); - test whether the point on the display matches with the current sprite with taking zoom, transparence and egg of transparence into account (optional). The reserved native global variable GameOpt was renamed to Game. Global variables int __MouseX, __MouseY for current mouse position indication were added. Function void GetMousePosition(int& x, int& y) was deleted. Indication of opened console bool __ConsoleActive was added to client’s scripts. Bug with memory leak when rendering 3d graphics to sprites was fixed. Rev.129 http://www2.xp-dev.com/sc/change/94227/129 Added ability to use robot-guards from Sierra as bodyguards (for those who had completed quest "No-sweat job" in Navarro) Added quest "Amnesty for Joshua" (VC, Amanda) Work of teleport on special encounter "Mad scientist's laboratory" was restored. Rev.128 http://www2.xp-dev.com/sc/change/94227/128 Second stable SDK assembly. For the purpose of decreasing repository's size, assemblies will be stored in another places. Links you can find in text files. Rev.127 http://www2.xp-dev.com/sc/change/94227/127 Quest "No-sweat job" in Navarro. Rev.126 http://www2.xp-dev.com/sc/change/94227/126 Mercenaries and companions mechanism (merc.fos) was updated. Now every companion has term of service. Companions don’t meddle in player’s showdowns with NPC’s. Fixed quest “Dip.Courier”. Now it can be finished. Fixed quest “Dock’s attack”. Now it can be finished after killing 5 giant insects. Added 3 new mercs for Lo Pan. Updates NPC-travellers mechanism (traveller.fos). The first NPC-traveller was added (eli.fos). Functions which cooldowns checkup for NPCs in dialogues were fixed. When character dies, all items with flag ITEM_GAG are deleted. Fixed cooldowns for quests “Hub bibliography”, “Sick Brahmin” and in the dialogue with dr.Klaus for stimpacks and first aid kits delivery. When NPC repairs an item, ammo is ejected. Script for NPC monologues realization was added. (monologue.fos) Rev.125 http://www2.xp-dev.com/sc/change/94227/125 Fixes of password encryption in the client's files. Rev.124 http://www2.xp-dev.com/sc/change/94227/124 Fixed bug with graphics loading in the previous update. Rev.123 http://www2.xp-dev.com/sc/change/94227/123 DAT2.1 (Arcanum) files support was added. ART (Arcanum) graphic format was added. Function for operating with strings splitEx was added. Principle is the same as in split, but empty elements are not included in the result array. Also spaces/tabs/string_hyphenation are deleted from the result elements. Examples: split(“A|B||D”, “|”) -> {“A”, “B”, "", “D”} splitEx(“A|B||D”, “|”) -> {“A”, “B”, “D”} split(“A| B\t\t||D| E|F ”, “|”) -> {“A”, “ B\t\t”, "", “D”, “ E”, “F ”} splitEx(“A| B\t\tC||D| E|F ”, “|”) -> {“A”, “B”, “D”, “E”, “F”} Additional DrawSprite functions for the client and mapper were added. You can transfer true with the last argument and as the result, the shift which is stored in the current file will be added to the sprite’s position. void DrawSprite(uint sprId, int sprIndex, int x, int y, uint color, bool applyOffsets) void DrawSprite(uint sprId, int sprIndex, int x, int y, int w, int h, bool scratch, bool center, uint color, bool applyOffsets) Fixed bugs with incorrect ini settings parsing in the scripts. Rev.122 http://www2.xp-dev.com/sc/change/94227/122 Client scripts updates: For the reserved function void render_iface(uint layer) was added calling with value layer 100 to give the ability of drawing on the global map. Also the next global variables were added for operating with the global map: bool __GmapActive – whether global map is active and all the variables below are correct; bool __GmapWait – whether waiting mode of encounter affirming is active; float __GmapZoom – current zoom, don’t forget it to take into account while drawing a map; int __GmapOffsetX, __GmapOffsetY – map shift from the zero-coordinate (up-left corner); int __GmapGroupX, __GmapGroupY – player’s group coordinates; int __GmapMoveX, __GmapMoveY – destination point’s coordinates; float __GmapSpeedX, __GmapSpeedY – movement speed every 50 ms, without taking relief into account For example, calculating the current pixel group’s position - (x = __GmapGroupX / __GmapZoom + __GmapOffsetX), (y = __GmapGroupY / __GmapZoom + __GmapOffsetY). Fixed bug with hanging when drawing 3d model, occurred in the last update. Fixed missing bracket in English texts. (by Kilgore) Rev.121 http://www2.xp-dev.com/sc/change/94227/121 Added more mouse sensitivity and now you can see mouse’s speed percent in the settings. Updated FOConfig.exe. Added AlwaysRun option. Possible values for option Mouse speed were corrected. Option Sleep now can be set to -1, that means switching it off (maximum performance). Added ability of redirecting keyboard’s symbol codes input. For this, use option KeyboardRemap (in FOnline.cfg). It is performed after space – X Y X Y …, where X is the code which is substituted by Y. Code numbers - http://fonline.pastebin.com/Qy3E0qwj Interface description in default.ini is formatted and commented. (by LoadRunner) Location prototypes updates: Option max_copy was deleted. Option max_players was added. It limits the amount of players who can be on the location simultaneously. Players, who can’t enter location because of exceeding the limit will see message 904 from FOGAME.MSG {904}{}{Location is overcrowded, try to enter later.} Password encryption in server *.client. files was added. Mouse shift when switching between movement modes was fixed. Also, for more accurate work, the hex mask was added – look \Client\data\art\misc\hex_mask.png. Only red colour is taken into account and when it takes on certain value, the shift to certain direction is performed (50 – 5, 100 – 0, 150 – 3, 200 – 2). The mask is optional, you can work without it. Fixed loading/saving tiles in the maps text format. Fixed global map shifting behind screen’s edge. Registration of useless clicks in mapper when switching between windows, now isn’t performed. Fixed the animation of 3d critter standing when situating them on the map. Also now 3d critters don’t play standing animation in the critter’s list. Fixed displaying of critters which have only one direction. Fixed command ~reloadscripts. Now when you mark items for deleting (DeleteItem/DeleteItems), their quantity is saved. So, in the moment when real deleting is performed, server will delete the requested number of items. Now knockout during turn-based fight leads to immediate loosing action points, not after finishing the turn. Also, frequent checks for the necessity of finishing the turn were added at the server - if critter’s dead, critter has negative AP, critter has no more AP. Scripts: Fixed critter’s flags (Critter extra flags, _defines.fos). Fixed special encounter scripts Guardian of Forever, Mad Brahmins. Script trader.fos was formatted. Reserved function was added to client scripts, which is called with attacks void hit_aim(uint8& aim) aim value can be redefined( Hit locations in _defines.fos). Function int Critter::GetScore(uint score) was added to server scripts. Specification Critter::AddScore(int score, int val) was changed to Critter::AddScore(uint score, int val). Function for calculation the size of drawn text was added to client and mapper scripts void GetTextInfo(string& text, int w, int h, int font, int flags, int& tw, int& th, int& lines) string& text – text; int w, h, font, flags – height, width, print, flags; int& tw, int& th, int& lines – total width, height and amount of strings in the current text. Rev.120 http://www2.xp-dev.com/sc/change/94227/120 Unused encounter tables for Fallout 1 and commented original’s scripts were deleted from worldmap_init.fos; Random encounters of “beasts versus beasts” type were enabled, which were presented in the scripts, but were absent in the original. Added some new kinds of non-unique random encounters. Now, if player uses to kill NPC’s of certain group or organizations on random encounters, then they become aggressive. Vault City guard’s automatic search is deactivated. Now you need to activate the dialogue to pass through. Fixes in English dialogues versions. Maps fixes. Rev.119 http://www2.xp-dev.com/sc/change/94227/119 Fixed lots of little mistakes in dialogues; Fixed bugs in some Den and Klamath quests; Maps fixes; Duplicate dialogues with different names were deleted. Rev.118 http://www2.xp-dev.com/sc/change/94227/118 Fixed modificator's argument from Parent-0-7 to Parent0-7. Rev.117 http://www2.xp-dev.com/sc/change/94227/117 Added dialogues to Arroyo doctor and his team. Slight fixes (dialogues, maps). Rev.116 http://www2.xp-dev.com/sc/change/94227/116 Library for importing different 3d models was enabled – Assimp http://assimp.sourceforge.net/ Formats that are supported: http://assimp.sourceforge.net/main_features_formats.html Built-in one is still used for X format, for other ones – this library. If you don’t need the library, you can delete it (file Assimp32.dll), client and mapper are able to work without it. Updated mechanism of linking models and animations, now you can link any animation to any skeleton from any file. fo3d format changes: Modificator ModelAnimation was deleted. Modificators Anim, RenderFrame, RenderFrames were expanded – now file name which consists needed animation is placed before the animation’s name (if you state “ModelFile”, then search is performed in the file of loaded model)/ Specification of indicating parent texture (Texture X Parent) was expanded. Now you can additionally state the mesh number and its part, from which the texture is taken - Texture X ParentY-Z, where X is the texture’s number, Y is mesh number, Z is mesh part number; parameters Y-Z are optional, you may don’t use them at all or you may use them partly (Parent, Parent0, Parent-5). Fixed bug with incorrect script processing when operating with Critter::ShowScreen. Fixed bug with incorrect operating and crashing when using Log function with some special symbols. Added Combat Armor 3d model (by Gray). Rev.115 http://www2.xp-dev.com/sc/change/94227/115 Added special encounter "Warehouse of lost doughnuts" (author - Ponchik). Scripts for some original special encounters (author - Cracker). Remade some prototypes. Windows without glasses in Vault's walls can be shooted through now. Slight fixes. Rev.114 http://www2.xp-dev.com/sc/change/94227/114 Maps for quests from the 113 revision. Rev.113 http://www2.xp-dev.com/sc/change/94227/113 Klamath: quests - "Worker searching", "Husband's alert", "Brahmins vaccination" (author - Ponchik). Slight fixes. Rev.112 http://www2.xp-dev.com/sc/change/94227/112 Finished appearance of random encounter "Ocean Trader". Slight maps, dialogues and graphics fixes. Added buttons for BarterGround, GECK town, Warehouse and Hell for the global map (author - Ponchik). Slight fixes. Rev.111 http://www2.xp-dev.com/sc/change/94227/111 Added additional mechanism for data files loading (dat, zip). It is necessary for loading data files loading before scripts initializing and processing start() function as some date is needed to be used before this (effects, prints and some other resourses). For adding files to loading – create DataFiles.cfg file in which you should list all necessary file names. The program searches for the content from the last to the first data file. This mechanism uses server, client, mapper. If list isn’t found then no alerts will be displayed. If one of the files from the list can’t be found or load error appears, then alert will be shown. Option PatchDatPath was deleted, loading of this file is moved to DataFiles.cfg. Rev.110 http://www2.xp-dev.com/sc/change/94227/110 Fixed model's borders calculating which caused nick or text shift above critter's head. Rev.109 http://www2.xp-dev.com/sc/change/94227/109 Fixed skin setting-up when registration 3d character. Fixed order of loaded packs (dat, zip) scanning while searching and parsing ini files. Addition to 106 revision – for stating specific keys for certain resolutions now are used not separate files with different names, but marks in the main file. At the start of the string write “resolution”, than min. width and height for starting using these options. By default these values are equal to zero. For example: "resolution 1024 768 key = value..." It means, that “key = value ...(and so on till the next keyword ”resolution”)” will be included in the final ini. Found data will be inserted in the main file as screen width grows. Rev.108 http://www2.xp-dev.com/sc/change/94227/108 Actual cash files. Rev.107 http://www2.xp-dev.com/sc/change/94227/107 SDK is switched to 3d players mode. Normal version will be restored after finishing mechanism debugging process. For switching off 3d players models – comment the next strings in Server\scripts\_defines.fos #define PLAYERS_3D // Enable 3d players #define PLAYERS_3D_NO_HEAD // No head slot #define PLAYERS_3D_VAULT_SUITE // Vault suite by default, not naked 3d updates: Fixed and reduced the size of attributes and weapons. Added missing attributes of opened pipboy. In the left hand now is displayed the item, which player has in the second slot. Armor’s models are divided between the current armor items in the such way, that gamer could see the difference. For example combat armor consists of power armor and the helmet, robes are replaced by jail suit and etc. Fixed animation playing during creating the new character in single mode. Added skin change processing in start intro and after Kitty’s haircut. Added skeleton’s skins. Added sound for men and women. Fixed sound name for critters parameter’s loading (CritterTypes.cfg, SoundName). Now characters walk slowly with double click if alwaysrun option is turned on. Rev.106 http://www2.xp-dev.com/sc/change/94227/106 Added ability to make 3d characters available to play for. To enable it (it is disabled as default) - comment certain strings in _defines.fos // #define PLAYERS_3D // Enable 3d players // #define PLAYERS_3D_NO_HEAD // No head slot // #define PLAYERS_3D_VAULT_SUITE // Vault suite by default, not naked Updated mechanism of working with ini files. Now, when searching for the keys, excess spaces and tabulations are skipped (now you can type “ key = value ”, previously was correct only variant “key=value”) Added function bool AppendIfaceIni(string& iniName), which enables additional ini files. If the name includes slashes, than the search is being performed from data root, if not - than from folder data/art/interface/. default.ini is added automatically by the engine, others you can enable in start() client function. Loading is performed sequentially from default.ini to ones enabled by user by turn. Every packed file is checked by the turn of loading, then in the folder. Global variable string __UserInterface was deleted. Fixed bug with incorrect parsing of animation indexes in fo3d file. Fixed bug with incorrect position of the egg of transparence in zoom mode. For better readability the next scripts were formatted: start_server_client.fos client_main.fos In the future this practice will be continued. Rev.105 http://www2.xp-dev.com/sc/change/94227/105 Documentation update - slight fixes. Rev.104 http://www2.xp-dev.com/sc/change/94227/104 Added structure of script array (ScriptArray) to native scripts. Added ability to client's native scripts of calling hex data - Field. Data is stored in Field* GameOptions::ClientMap, uint GameOptions::ClientMapWidth/ClientMapHeight. If map is loaded, than ClientMap != NULL, hex calling - ClientMap[hexY * ClientMapWidth + hexX]. Rev.103 http://www2.xp-dev.com/sc/change/94227/103 Added always run option - can be enabled in client's config file “AlwaysRun”. Disabled as default. Added global variables for AlwaysRun regulating: bool __AlwaysRun (as default - false) - enabling AlwaysRun ability; uint __AlwaysRunMoveDist (as default = 1) - run with click, if distance is equal or more than the value; uint __AlwaysRunUseDist (as default = 5) - run with using smth/dialogue/etc, if distance is equal or more than the value. TLA's mechanics is equal to original - always run with click, always run with using if distance is more than 4 hexes. Added parameter uint Critter::ItemTransferCount to native scripts. It stores the value of transferred items during the last transaction. Rev.102 http://www2.xp-dev.com/sc/change/94227/102 Optimized server operation (script calling) in one tread operation mode, performance increased up to 400%. Fixed bug with crash when calling Critter::Say* methods with parametr SAY_SAY_TITLE. Rev.101 http://www2.xp-dev.com/sc/change/94227/101 Changes in fo3d format, new specification was created - look this theme: http://www.fonline.ru/forum/showthread.php?t=19689 New format added new abilities of working with 3d objects - trasmission of texures, other paremeters, etc. Also added ability to render certain animation to sprites as for one frame, either for the whole animation. But the bug with cutting off the shade situated below the lowest edge of model still presents. Updated old fo3d files, also VanBuren's critters and weapon models were added. Changed effects structure, added effect for normal mapping (3D_NormalMapping.fx). Added transfer of real numbers through scripts, float __EffectValue0..9. Fixed bugs with loading 3ds files - miss of meshes except the first; crash if texture coordinates are not presented. Fixed bug in Mapper with data copying when copy-pasting a large number of objects. Fixed text centering of hexes amount in zoom mode. Rev.100 http://www2.xp-dev.com/sc/change/94227/100 Documentation update. Rev.99 http://www2.xp-dev.com/sc/change/94227/99 Updated documentation file, which was missed in the previous revision. Rev.98 http://www2.xp-dev.com/sc/change/94227/98 Added resourse gathering system; Documentation updating. Rev.97 http://www2.xp-dev.com/sc/change/94227/97 Fixes of "Night is tender" quest, now healing must work properly. Added preview from global map for GECK location. Rev.96 http://www2.xp-dev.com/sc/change/94227/96 Gecks counting on the location now affects its auto moving away and visibility separately; Parameter geck_enabled (Map::GeckEnabled) renamed to geck_visible (Map::GeckVisible). Rev.95 http://www2.xp-dev.com/sc/change/94227/95 Added global server function void SetChosenSendParameter(int index, bool enabled) which can denie transmitting parameters to client. Transmitting of all parameters is enabled by default. Rev.94 http://www2.xp-dev.com/sc/change/94227/94 Fixes of sea encounter maps. Rev.93 http://www2.xp-dev.com/sc/change/94227/93 Added sea encounters; Added posibility of an encounter while travelling on air/water transport; Player always have possibility of cancellation water/air encounter and never gains experience for that; Bug fix in mapper with incorrect editing critter's parameters. Rev.92 http://www2.xp-dev.com/sc/change/94227/92 Fixed displaying rating in pipboy. In mapper additional indication of cut sprites was added to make lines, which are needed for correct interaction, visible. Rev.91 http://www2.xp-dev.com/sc/change/94227/91 Added traffic encryption between server and client. Rev.90 http://www2.xp-dev.com/sc/change/94227/90 Fixed choosing automatically cut sprites in zoom mode. Rev.89 http://www2.xp-dev.com/sc/change/94227/89 Added parametr DrawOrderOffsetHexY for shifting order of drawing lower (Y axis). This is an analogue for recently deleted DrawPosOffsX. Fixed using car trunk. Different slight fixes. Rev.88 http://www2.xp-dev.com/sc/change/94227/88 Fixed exit from Redding; slight fixes. Rev.87 http://www2.xp-dev.com/sc/change/94227/87 Fix for weapon AP cost. Rev.86 http://www2.xp-dev.com/sc/change/94227/86 May be fixed bug with incorrect displaying of some tiles. Fixed bug with unworking elevators. Added restoration of effects when loosing a device (cause crashed e.g. with alt+tab) Rev.85 http://www2.xp-dev.com/sc/change/94227/85 Fixed bug with chat disappearing. Fixed AI bug when combat plans always finished with REASON_CANT_WALK. Rev.84 http://www2.xp-dev.com/sc/change/94227/84 Fix for DT params reading. Rev.83 http://www2.xp-dev.com/sc/change/94227/83 Safety checks for radio commands. Rev.82 http://www2.xp-dev.com/sc/change/94227/82 Fixes of some dialogues; translations of dialogues on Barterground; map fixes; fixes of encounter table; slight fixes. Rev.81 http://www2.xp-dev.com/sc/change/94227/81 Fixed another bug during moving on the global map. Fixed unplanned activating of b/w effect. Rev.80 http://www2.xp-dev.com/sc/change/94227/80 Fixed teleportation bug during moving on the global map. Rev.79 http://www2.xp-dev.com/sc/change/94227/79 Fixed bug with incorrect tear and wear and fuel consumption calculation during moving on the global map by car. Rev.78 http://www2.xp-dev.com/sc/change/94227/78 Fixed brightness output. Fixed outlining activation. Rev.77 http://www2.xp-dev.com/sc/change/94227/77 Added automatic sprite cutting. Main purpose – correct displaying of long walls. Parameter SpriteCut was added to prototypes and mapper (only for scenery) for modification. Cutting values: 0 – switched off, 1 – horizontal (X axis), 2 – vertical (Y axis). Wall blocks should be set manually , for that purpose six blocks with different corner types with visual indication were added. It is necessary for correct calculation of brightness and egg of transparence reaction. Numbers 6800..6805 at the end of Wall and Fast list. Fixed client instability after recent update. Primary indexes array for animations was expanded to the range ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789. For value changing use native means (structure CritterType in fonline.h). Support of effects (HLSL) loading with earlier version of compiler. Automatic attempt of compilation is performed after failure in compilation with the current library. Added data updating for client function GetIniStr in the start function (start) after each call of LoadDataFile. Mapper update: Fixed bug with error in loading tiles with extension not in lower case. Fixed algorithm of sprite displaying calculation (when big sprites were disappearing near the screen edge). Additional visual means for debugging: - Ctrl + Q: Corners type viewing; - Ctrl + W: Viewing the result of sprite cutting, linking them to hexes; - Ctrl + E: Viewing the sequence of sprites drawing. At the time of renewing NPC’s bag, only items which are not in inventory are repaired and reloaded. Added ability to set sprite shift in screen coordinates to prototypes. Fixed bug with double notification of quest state change. Rev.76 http://www2.xp-dev.com/sc/change/94227/76 Added quest “Night is tender” Rev.75 http://www2.xp-dev.com/sc/change/94227/75 Tables for sea encounters, slight fixes. Rev.74 http://www2.xp-dev.com/sc/change/94227/74 Source documentation. Rev.73 http://www2.xp-dev.com/sc/change/94227/73 SPECIAL calculating is moved to native scripts - fonline_tla.dll for server and fonline_tla_client.dll for client (must be situated in data\scripts). The other parameters which are used in the engine are needed generally for drawing GUI, but soon they’ll be moved to scripts too. Native scripts files are moved from data folder to scripts. Added bat-file make_tla.bat for their compilation (installation of MSVS8 is necessary). For example of use new methods for critter classes are added (IsInjured, IsDmgArm...), items (IsHtHAttack, IsGunAttack...) with pragma bindfunc. Example of linking global varieties of standard and native scripts is added (__HitAimEyes, __HitAimHead..., these global varieties are moved to scripts). Callback functions are added (to GameOptions) for item usage cost determination - GetUseApCost. For attack max range determination - - GetAttackDistantion. It further such functions will force out usage of critter parameters in the engine. These functions are binded at the stage of connecting of library to the engine (DllMainEx). For operating with the engine added the next functions (to GameOptions): CritterChangeParameter – for correct change of critter parameter, this function should be called firstly, then you can change the value. CritterTypes – index of CritterType structures where data from CritterTypes.cfg is stored. Added method to client’s critters for detection whether now is time of its move in the turn-based mode bool CritterCl::IsTurnBasedTurn() const Some logics of operating with turn-based mode is moved to the scripts - turn_based_process main.fos. Some recommended specifications for the reserved functions are changed - templates.fos. Min. time of dialogue or barter with NPC now is regulated by the global varieties __DlgTalkMinTime (now default 100 seconds) и __DlgBarterMinTime (now default 50 seconds). Range for all prototypes (maps, locations, items) is expanded to 30000. Fixed bug with incorrect drawing of minimap in the pipboy. Fixed bug with incorrect calculating of healing rate while registration. Fixes of Zerg’s special encounter. Rev.72 http://www2.xp-dev.com/sc/change/94227/72 Data library for script compilation (updated on 27 October) Rev.71 http://www2.xp-dev.com/sc/change/94227/71 Added Zerg special encounter. Fixed bug with incorrect names in Fixboy. Added function LoadDataFile to server scripts, analogue of client/mapper. Fixed mistiming of player movement on global map. Deleted function Critter::SendQuestVar, now alert about changing of local variable is automatic. Changed function specification void ShowScreen(int screenType, uint param, string& funcName) to void ShowScreen(int screenType, uint param, string@+ funcName), now can transmit both empty string or null. Rev.70 http://www2.xp-dev.com/sc/change/94227/70 Documentation is updated. Deleted incorrect splash-picture. Added urgent files for scripts autoaddition in Notepad++. Rev.69 http://www2.xp-dev.com/sc/change/94227/69 Added ability to use your own shaders for game graphics drawing. High Level Shader Language is used for this. Effects folder is situated in data\effects. After the first compilation they are cashed in the folder data\cache (in futher other different data will be cashed there). You can read specifications on the game engine effects in data\effects\ReadMe.txt. Added ability to link any effect to sprite or model in .fofrm and .fo3d (“effect=effect_name.fx”). For default effect changing, function void SetEffect(int effectType, int effectSubtype, string@+ effectName) was implemented into the client scripts. int effectType, effectSubtype – effect types look in _client_defines.fos (Subtype for fonts used font type); string@+ effectName – the name of the effect file (with extension) is in the folder data\effects. Added changing of detailization of game objects for demonstration. For activation press Alt+W, for return press Alt+Q. Added client function for map redrawing void RefreshMap(bool onlyTiles, bool onlyRoof, bool onlyLight) if all three parameters are false, than everything will be redrawed. Also these three parameters are incompatible. Fixed bug in mapper with impossibility of viewing 3d critters in prototypes table. At present time they can’t be ranged. Added ability to play sounds/music from different folders. void RefreshMap(bool onlyTiles, bool onlyRoof, bool onlyLight) If there isn’t slashes (‘/’,‘\’) in path name than search is performed in the folder sfx/music. If there are slashes, than in the root (“data/mysounds/mysound.ogg”). Rev.68 http://www2.xp-dev.com/sc/change/94227/68 Fixed bug in the ObjectEditor when damage type is saved incorrectly. Rev.67 http://www2.xp-dev.com/sc/change/94227/67 Fixed crashing when calling CritterCl::[Param/Stat/Perk/etc]Base in client scripts; Fixed error with recording Anydata of zero length (by Atom). Rev.66 http://www2.xp-dev.com/sc/change/94227/66 Fixed incorrect weapon prototype; errors in checking for special encounters; added decraft of the sand sack to fixboy; other little fixes. Rev.65 http://www2.xp-dev.com/sc/change/94227/65 Redding: finished map according to the last concept; - Garbage was returned to static locations; - Ammo craft on benches (beta-version); - Destruction of the sack using skill repair now gives use empty sack. - Entering Den message was moved to texts from script. Rev.64 http://www2.xp-dev.com/sc/change/94227/64 AngelScript updated to 732 revision. Added new methods for arrays: void T[]::insertAt(uint, const T&) – element inserting in specified position in the array; void T[]::removeAt(uint) – deleting the element by index; void T[]::insertFirst(const T&) – element inserting to the beginning of the array; void T[]::removeFirst() – deleting the first element; void T[]::insertLast(const T&) – element inserting to the end of the array; void T[]::removeLast() – deleting the last element; void T[]::grow(uint) – add elements (the sames as a.resize(length()+X)); void T[]::reduce(uint) – delete elements (the same as a.resize(length()-X)); T& T[]::first() – call of the first element of the array (the same as a[0]); T& T[]::last() – call of the last element of the array (the same as a[a.length()-1]). Also deleted all functions ArrayPushBack as the built-in array functional was expanded. All the scripts were fixed accordingly. Rev.63 http://www2.xp-dev.com/sc/change/94227/63 Added ability to start the server as a service. For registration/start use key “-service” (shortcut FOServerService.exe.lnk). For deleting use keys “-service -delete” (shortcut FOServerServiceDelete.exe.lnk). Added ability to log using function OutputDebugString. The log can be caught (even remotely) using program DebugView http://technet.microsoft.com/en-us/sysinternals/bb896647.aspx For switching it on in server and client configs option LoggingDebugOutput is added. Server/client/mapper will work normally now with incorrect active folders. At start you set the current folder of executable. Fixed bug with absence of replacement “x” by “ч” in built-in punto switcher. Fixed crash in turn based mode and incorrect work of Map::GetCritter(uint critterId). Rev.62 http://www2.xp-dev.com/sc/change/94227/62 Fixed bug with updating vehicle data on the global map. Fixed bug with system hanging while looking items quantity in game info. Fixed bug with the incorrect login/disconnect. Fixed bug with incorrect creating non-stacking items on the map in the number of >1. Fixed bug with incorrect critters gathering when path tracing (by Atom). CRITTER_EVENT_TALK now performed before checking NPC for settings which could restrict speaking with it. Added new mechanism for script garbage gathering (by Atom). For config file simplification, the next options were removed: ASGarbageTime, VarsGarbageTime. Deleted transfer of a group of critters into global map processing global_process, CRITTER_EVENT_GLOBAL_PROCESS. Also instead of transferring a group into global map processing global_invite, CRITTER_EVENT_GLOBAL_INVITE, now only the leader is transferred. Instead of picking group use Critter@[]@ Critter::GetGlobalGroup(). Because of that, specification methods were changed: bool Critter::EventGlobalProcess(int type, Critter@[]& group, ...) bool Critter::EventGlobalInvite(Critter@[]& group, ...) for bool Critter::EventGlobalProcess(int type, Critter& cr, ...) bool Critter::EventGlobalInvite(Critter& leader, ...) Reserved functions of critter event CRITTER_EVENT_GLOBAL_PROCESS, CRITTER_EVENT_GLOBAL_INVITE bool _FuncName(Critter& cr, int type, Critter@[]& group, ...) bool _FuncName(Critter& leader, Critter@[]& group, ...) for bool _FuncName(Critter& cr, int type, ...) bool _FuncName(Critter& leader, ...) Fixed bug with incorrect cooldown for hijacking, now it is equal for a normal lock. Added checking for unopenable door to the lock break script. Rev.61 http://www2.xp-dev.com/sc/change/94227/61 Fixed bug with incorrect reappraisal of item flags in Mapper. Fixed bug when player isn't notified about moved item. Rev.60 http://www2.xp-dev.com/sc/change/94227/60 Fixed bug with incorrect displaying of the rain on roofs. Rev.59 http://www2.xp-dev.com/sc/change/94227/59 Mapper's fix for correct operating with new folder and print's names. Rev.58 http://www2.xp-dev.com/sc/change/94227/58 For editing use program Bitmap Font Generator v1.12. http://www.angelcode.com/products/bmfont/ Print should have the next attributes - OEM RUSSIAN, Padding 1 (in all directions), Binary, all symbols should be placed on the one texture. All prints are moved in the separate folder “Client\data\fonts\”. For the example print FONT_COURIER_NEW_SMALL is added. Look _client_defines.fos, client_main.fos, CourierNewSmall.bmfc, CourierNewSmall.fnt, CourierNewSmall_0.png. Added function in client’s scripts of activating the clock which shows you the time signal comes to server and returns (ping). You can use it for restriction of input while waiting for server’s answer. Fixed crushing when looking players statistics on server. Fixed crushing of Dialogue Editor (by Atom). Rev.57 http://www2.xp-dev.com/sc/change/94227/57 Expanded mechanism of operating with ingame radio. Added flag ITEM_RADIO for radio. (in _defines.fos). Radio messages are now also sent to radios which are on the ground . For their identification engine sends them with color 0xFFFFFFFE (in map_message in client_main.fos). Realization is in script radio.fos (interface, mechanics), call from main.fos. Interface data is taken from default.ini (Radio*). You can edit it with using item or using science skill on it. Radio data is situated in general fields of several item types. That’s why it isn’t a good idea to use this flag with Doors, Keys, Cars, Weapons, Armors, Holodiscs. Transmitting and receiving functions are separated. For managing the next flags and range types are used (_defines.fos): Restriction of transmitting/receiving is stored in Item/ItemCl::RadioFlags, used by the engine: RADIO_DISABLE_SEND, RADIO_DISABLE_RECV. Restriction of switching radio state in в Item/ItemCl::RadioFlags: RADIO_DISABLE_SHIFT_SEND, RADIO_DISABLE_SHIFT_RECV - restriction of switching transmit/receive; RADIO_DISABLE_SHIFT_BC_SEND, RADIO_DISABLE_SHIFT_BC_RECV - restriction of changing distance range; RADIO_DISABLE_SHIFT_CHANNEL – restriction of channel switching. Range types are stored in Item/ItemCl::RadioBroadcastSend/RadioBroadcastRecv, are used by the engine: RADIO_BROADCAST_WORLD – works all over the world; RADIO_BROADCAST_MAP – works within the limits of the current map; RADIO_BROADCAST_LOCATION - works within the limits of the current location; RADIO_BROADCAST_ZONE(x) - works within the limits of “x” zones on the global map; RADIO_BROADCAST_FORCE_ALL – works everywhere regardless of the adjustments of transmitting or receiving radio/ Added support of these flags to the object editor (both engine and script ones). Added scripts uint16 ProtoItem::RadioChannel, uint16 ProtoItem::RadioFlags, uint8 ProtoItem::RadioBroadcastSend, uint8 ProtoItem::RadioBroadcastRecv. For holodisc marking added flag ITEM_HOLODISK (in _defines.fos). Holodisc data is situated in general fields of several item types. That’s why it isn’t a good idea to use this flag with Doors, Keys, Cars, Weapons, Armors, Holodiscs. Added support of this flag in object editor. Added script uint ProtoItem::HolodiskNum. Added ability to use built-in cartridge indicator for other purposes. Added the next parameters: uint8 ProtoItem::IndicatorStart – initial value, - Item/ItemCl::Indicator; uint8 ProtoItem::IndicatorMax – maximum available value (for correct calculation of the strip position); uint8 Item/ItemCl::Indicator – current value. Mechanism is considered activated if maximum value in the prototype isn’t equal to zero. Added support of editing of initial and maximum values in the object editor. Method Item::GetMapPosition for the items which are in the global map returns their coordinates. Fixed bug with system hanging while looking online statistics. Added storing up to 20 ip addresses for one account (fonline.h). Item prototype’s fields, which are equal to zero, now cannot be saved. All prototypes are resaved. Continued working on multithreading in game logics. Added ignoring of non-initialized maps or locations while loading save (NPC’s would be moved to global map, items - deleted). Fixed bug in the dialogue on BiX location. Updated abilities of GUI scripting. In script _defines.fos notes “Used in engine” are replaced by “Hardcoded”; point is the same - to show that this data is used by engine also. Corrected some specifications in template.fos of reserved functions. Rev.56 http://www2.xp-dev.com/sc/change/94227/56 Changes in craft: some new recipe's (new weapon, etc.), added workbenches in some town/military bases. Rev.55 http://www2.xp-dev.com/sc/change/94227/55 - Updated Redding maps; - Deleted unused graphics; - Added second entrance to NCR; - Some changes in NPC's inventories on encounters. Rev.54 http://www2.xp-dev.com/sc/change/94227/54 - Slight fixes in Hartman's and Shrim's dialogues (Vault City); - Fixed problem with immediate sending off caravans/patrols Ahe9mPDq; - Changed content of the quest variable for the quest "Third trial. Drill." - Restored functions for triggers t_DialogNpc and scenery s_TransitToMap. Rev.53 http://www2.xp-dev.com/sc/change/94227/53 Fixes of KotW location. Quest for oil can can be done by everybody in Arroyo now. Rev.52 http://www2.xp-dev.com/sc/change/94227/52 Fixes of Brok and Xander Church location (by VaultTec) Rev.51 http://www2.xp-dev.com/sc/change/94227/51 Fixed names loading (*Names.lst) with the dialogue editor. Changed extention of its config file. Rev.50 http://www2.xp-dev.com/sc/change/94227/50 Fixed bug with duplicating of time events. Rev.49 http://www2.xp-dev.com/sc/change/94227/49 Slight optimization of multi-threading. Rev.48 http://www2.xp-dev.com/sc/change/94227/48 Fixed error in loading of games variables values. Fixed loading of saves games in single player mode. Rev.47 http://www2.xp-dev.com/sc/change/94227/47 Time events changes. - function specification void EraseTimeEvent(uint num) changed to bool EraseTimeEvent(uint num) Return value shows whether deleting is done or the event isn't found. - Deleted the next functions: uint CreateTimeEvent(uint beginSecond, string& funcName, Critter& cr, bool save) uint CreateTimeEvent(uint beginSecond, string& funcName, Item& item, bool save) uint CreateTimeEvent(uint beginSecond, string& funcName, Critter@[]+ critters, Item[]@+ items, bool save) For migration just put the identificator to the critter or item. Added the next functions for operating with event's values: bool GetTimeEvent(uint num, uint& duration, uint[]@+ values) bool GetTimeEvent(uint num, uint& duration, int[]@+ values) bool SetTimeEvent(uint num, uint duration, uint[]@+ values) bool SetTimeEvent(uint num, uint duration, int[]@+ values) Parametr "duration" - time till the event is done in seconds. Return value means that operation is completed, error means that event wasn't found. These functions are thread-safe, 2 thread can't operate with the events simultaneously. Function GetTimeEvent blocks using (changing) of the event until the script is finished or until SetTimeEvent is called, which unblocks the event. GetTimeEvent writes value to the end of the array, SetTimeEvent rewrites it completely. When null is transmitted to values SetTimeEvent values are not changed. - Event function specification can be of two types now: uint e_FuncName(uint[]@ values) uint e_FuncName(int[]@ values) Fixed bug with crashing while loading 3ds file without texture coordinates. Rev.46 http://www2.xp-dev.com/sc/change/94227/46 Added next fuctional for operating with files (class "file"): - for data reading uint8 file::readUint8() uint16 file::readUint16() uint32 file::readUint32() uint64 file::readUint64() In the case of error or the end of file it returns 0. uint file::readData(uint count, uint8[]& data) If data == 0 then program read all data till the end of the file beginning from the current position. Read data is added to the end of the array. The return value shows the real amount of read bytes. - For data recording bool file::writeUint8(uint8 data) bool file::writeUint16(uint16 data) bool file::writeUint32(uint32 data) bool file::writeUint64(uint64 data) bool file::writeData(uint8[]& data, uint count) If count == 0 it records all data from an array. In the case of error it returns false. Fixed bug with incorrect output of zoom value on minimap. Rev.45 http://www2.xp-dev.com/sc/change/94227/45 Extended range of game variables: - local variable of location (LLVAR_); - local variable of map (LMVAR_); - local variable of item (LIVAR_). When using them in dialogue values are taken from: for location - current critter's location; for map - current critter's map; for item - current item in the main slot. For operating with scripts use function GetLocalVar with transmitting of needed operator. Server will delete unused variables of all types automatically. Deleted server function uint DeleteVars(uint id). Dialog editor was adapted to the last updates of game variables. Added ability to define named value (DefineNames.lst) as a value for conditions and results. Added missed translations. Translations of commit history you can find here: http://www.xp-dev.com/forum/topic/3220 Rev.44 http://www2.xp-dev.com/sc/change/94227/44 Updated format of time output in dialogue with repairer-npc; Added script for realization of npc-travellers on global map.(traveller.fos and Davine's script in sf_common.fos); Added npc-traveller explosives-seller Davine. Can be hired in GECK town; Added trade mode "cash only" MODE_BARTER_ONLY_CASH; Fixed bugs in maps structure on maps with holodiscs. Rev.43 http://www2.xp-dev.com/sc/change/94227/43 Added setting in config which defines whether to bind logic threads to the core or let OS do it. In default it is enabled (1) 1. If zero then operating system automatically manage threads between cores, else affinity thread per core LogicThreadSetAffinity=1 Continued work on multi-threading of game logics. Rev.42 http://www2.xp-dev.com/sc/change/94227/42 Fixed crashing under certain conditions; Fixed cycle counting per second. Rev.41 http://www2.xp-dev.com/sc/change/94227/41 Fixed bug connected with the last update. Rev.40 http://www2.xp-dev.com/sc/change/94227/40 Multi-threading of game logics is now supported. You can read about this in details on the forum; Fixed path of recording/reading ban files; Added seconds on the globalmap clock; Decreased permissible length of text listener of channels and maps from 5 to 2 symbols; Deleted global server function void DeleteNpcForce(Critter& npc); Changed specification of method from uint Location::GetMaps(Map@[]& maps) const to uint Location::GetMaps(Map@[]@+ maps) const Now you can know the amount of maps on the location without recording them into array; Added basic server command ~log (~37). It is intended for text listening of server log. Minimum access: administrator. For adding to text listening you should transmit arguement "+", for disconnecting "-"; Fixed basic creating locations command ~addloc (~16); Upgraded basic command of looking player's id using his name ~id (~4); Changed specifications of global functions void critter_attack(Critter& cr, Critter& target, ProtoItem& weapon, ProtoItem@ ammo, uint8 aim) -> void critter_attack(Critter& cr, Critter& target, ProtoItem& weapon, uint8 weaponMode, ProtoItem@ ammo) int to_hit(CritterCl& chosen, CritterCl& target, ProtoItem& weapon, int hitLocation) -> int to_hit(CritterCl& chosen, CritterCl& target, ProtoItem& weapon, uint8 weaponMode); Added variables for weapons which state their active mode const uint8 Item::Mode const uint8 ItemCl::Mode 4 high-order bits - sight (look Hit locations in _defines.fos), 4 low-order bits - mode (0 – primary, 1 – secondary, 2 – third); Added macroses for convenience _WeaponModeUse, _WeaponModeAim, _WeaponModeMake в _macros.fos; Added returnable value of the current mode in method GetSlotProto (urgent for weapons) ProtoItem@+ Critter/CritterCl::GetSlotProto(int slot, uint8& mode) const; Renamed parametr #define ST_RATE_ITEM (102) to #define ST_HANDS_ITEM_AND_MODE (102) value stored in it: XXXX00YY, where XXXX pid - unarmed blow, and YY - mode. Changed way of the dialogue redirecting. You should use returnable value of result function or say-mode instead of uint __ForceDialog; Added specifications of functions: uint r_FuncName(...), uint dlg_FuncName(...) which are detected by server automatically; Fixed bug with moving pushed players only in one direction; Object pointers (derivatives arrays or class members)Location, Map, Critter, Item, GameVar can't be saved in global varities now. For scripts migration save their identificators (Location::Id, Map::Id, Critter::Id, Item::Id), addresing to the objects with (GetLocation, GetMap, GetCritter, GetItem). Weapons prototypes don't save curret mode of fire (in connection with multi-threading). Changed specifications of class members ProtoItem const uint8 Weapon_Skill, const uint8 Weapon_DmgType, const uint8 Weapon_Anim2, const uint16 Weapon_DmgMin, const uint16 Weapon_DmgMax, const uint16 Weapon_MaxDist, const uint16 Weapon_Effect, const uint16 Weapon_Round, const uint8 Weapon_ApCost, const uint8 Weapon_SoundId, const bool Weapon_Remove, const bool Weapon_Aim, const uint8 Weapon_CurrentUse, void Weapon_SetUse(uint8 use) const to const uint16 Weapon_Skill_F, const uint16 Weapon_Skill_S, const uint16 Weapon_Skill_T, const uint16 Weapon_DmgType_F, const uint16 Weapon_DmgType_S, const uint16 Weapon_DmgType_T, const uint16 Weapon_Anim2_F, const uint16 Weapon_Anim2_S, const uint16 Weapon_Anim2_T, const uint16 Weapon_DmgMin_F, const uint16 Weapon_DmgMin_S, const uint16 Weapon_DmgMin_T, const uint16 Weapon_DmgMax_F, const uint16 Weapon_DmgMax_S, const uint16 Weapon_DmgMax_T, const uint16 Weapon_MaxDist_F, const uint16 Weapon_MaxDist_S, const uint16 Weapon_MaxDist_T, const uint16 Weapon_Effect_F, const uint16 Weapon_Effect_S, const uint16 Weapon_Effect_T, const uint16 Weapon_Round_F, const uint16 Weapon_Round_S, const uint16 Weapon_Round_T, const uint16 Weapon_ApCost_F, const uint16 Weapon_ApCost_S, const uint16 Weapon_ApCost_T, const uint8 Weapon_SoundId_F, const uint8 Weapon_SoundId_S, const uint8 Weapon_SoundId_T, const bool Weapon_Remove_F, const bool Weapon_Remove_S, const bool Weapon_Remove_T, const bool Weapon_Aim_F, const bool Weapon_Aim_S, const bool Weapon_Aim_T Added special macros for convenience (Weapon in _macros.fos) _WeaponIsPrimaryAviable, _WeaponIsSecondaryAviable, _WeaponIsThirdAviable, _WeaponSkill, _WeaponDmgType, _WeaponAnim2, _WeaponDmgMin, _WeaponDmgMax, _WeaponMaxDist, _WeaponEffect, _WeaponRound, _WeaponApCost, _WeaponSoundId, _WeaponRemove, _WeaponAim, _WeaponModeUse, _WeaponModeAim, _WeaponModeMake Mapper updates: string@ MapperObject::PicMap/PicInv now return prototype's picturename if other isn't set up; Added const uint16 MapperMap::Width, const uint16 MapperMap::Height for storing current map sizes; Fixed function GetMapFileNames(...). Rev.39 http://www2.xp-dev.com/sc/change/94227/39 Slight fixes of quests in Den, Klamath Improved closed location in Redding Rev.38 http://www2.xp-dev.com/sc/change/94227/38 Slight fixes of quests from string "Guard"; Added services for guardsmen: doc. Troy can heal player; give stimpacks; Valery repairs items; Added universal repairing script for npc (repairer.fos). E.g. in the dialogue vc_valery.foldg 3 new special encounters with holodiscs; Several deleted functions from stdlib are returned. Rev.37 http://www2.xp-dev.com/sc/change/94227/37 Fix of calculating amount of dead NPC on location when necessity of attack is being determinated. Fix of amount loss allies counter when finishing the quest. Output of messages to log is disabled in quest “The drill”. Fix of limit of times amount quest “Dangerous hunt” can be done. Descriptions of deleted maps were returned, which made server restart impossible without saves clearing. Rev.36 http://www2.xp-dev.com/sc/change/94227/36 Fix of Hartman’s dialog. The wrong requirement was deleted. Rev.35 http://www2.xp-dev.com/sc/change/94227/35 New quests from string “Guard” in Vaultcity - Vaultcity guard. Third trial. Drill. - Easy walk. - Go there, don’t know where. - Dangerous hunt. - Diplomatic courier. Fix of caravan’s and patrol’s departure time. Relative departure time was substituted for absolute. Added ability of caravan’s instant departure from the dialog. Fix of items that were generated in encounters 0 in number. (It was impossible to throw out them) Fix of quest “Hub bibliography”. Player need 7 books to gain reputation instead of 6. Rev.34 http://www2.xp-dev.com/sc/change/94227/34 - Maps fixes - Fixed reaction of BG guards on explosives activation Rev.33 http://www2.xp-dev.com/sc/change/94227/33 - Graphics fixes - Non-used files were deleted - Original map of BG was returned Rev.32 http://www2.xp-dev.com/sc/change/94227/32 Private car parking in geck town is disabled till the problem with car boot is solved. Rev.31 http://www2.xp-dev.com/sc/change/94227/31 Added first quests of string “Guardsman”, VaultCity. (Clearing of server saves is needed) Added template for making quests-combats with npc. (fighter_quest.fos, e.g. “Guard. First trial.”) Added ability to take quest “Hub bibliography” again if player failed to finish it at previous time. Fixed incorrect condition in Dappo’s dialogue in quest “Lot of defective rifles”. Added verification of addressee in “Postman” quest, now player can’t bring letter to any npc of type stated in the letter. Rev.30 http://www2.xp-dev.com/sc/change/94227/30 Deleted not used MSG files - FOSCRIPT.MSG. Rev.29 http://www2.xp-dev.com/sc/change/94227/29 Updates of way of making records into log. Added ability to look the name of the thread which made a record. Option in config – LoggingThread. You can also turn on output in the server application using “Logging with thread”. Changed format of time output. Now it is not “time in ms”, but “hours:minutes:seconds:milliseconds”. Rev.28 http://www2.xp-dev.com/sc/change/94227/28 Fix and formatting. Rev.27 http://www2.xp-dev.com/sc/change/94227/27 Fixed mistakes in calculating karma in quest "Returning of the fugitive". Rev.26 http://www2.xp-dev.com/sc/change/94227/26 Changes on Church of Brok and Xander location: - fixed Preacher, Scientist, repairer Alechandro, Cook, Mickey dialogs; - quests work correctly now; - repairer Alechandro identifies items correctly; - ability to record the information about Church was added (after completing Preacher's quest). Rev.25 http://www2.xp-dev.com/sc/change/94227/25 Activating time of dynamite was fixed. Rev.24 http://www2.xp-dev.com/sc/change/94227/24 New algorithm of generating of pseudorandom variables was added (Mersenne twister). Previously was standart C algorythm srand/rand. Rev.23 http://www2.xp-dev.com/sc/change/94227/23 Energy barrier on the entrance of GECK town was improved. Rev.22 http://www2.xp-dev.com/sc/change/94227/22 Fixed client crashing on start. For preventing this bug in future the control system of versions of cashed scripts in the client has been added. Rev.21 http://www2.xp-dev.com/sc/change/94227/21 Fixed problem when it was impossible to add players to GECK town after removing them with option "Clear list". Rev.20 http://www2.xp-dev.com/sc/change/94227/20 Fixed cooldown of the Postman quest. Rev.19 http://www2.xp-dev.com/sc/change/94227/19 Wrongly deleted dialogs are returned. Rev.18 http://www2.xp-dev.com/sc/change/94227/18 Fixes Deleted not used files. Fixed errors when player removes child killer karma additional times. Fixed error with incorrect name of script of map_v15_village map. Added output of message of increasing trade skill when finishing “Farm vermins” quest to the log. Weakened the giant wasp in the quest in Modoc. Rev.17 http://www2.xp-dev.com/sc/change/94227/17 AngelScript was updated to rev.684, v. 2.19.2 Added global variables to the client: bool __ShowTile, __ShowRoof, __ShowItem, __ShowScen, __ShowWall, __ShowCrit, __ShowFast, __ShowPlayerNames, __ShowNpcNames, __ShowCritId. Deleted limit of min. time of using Map::SetLoopTime (it was 1 second). Fixed registration of the global variables of string type (pragma globalvar). Fixed using reserved global variables string type. Added global variables to mapper: string __ClientPath, __ServerPath. Deleted constant modificators in client from string CritterlCl::Name, CritterlCl::Lexems. Added variable CritterlCl::NameOnHead, which if is not empty, outputted above critter’s head. Rev.16 http://www2.xp-dev.com/sc/change/94227/16 Fixed reclearing of child killer status. Rev.15 http://www2.xp-dev.com/sc/change/94227/15 Fixes: - Fixed names of Giant Wasps and bugs in kills statistic; - Reduced requirements of amount of killed mobs and intelligence in Broken Hills quests (bh_marcus.fodlg, bh_super.fodlg); - Reduced requirement of intelligence for “Fresh blood” quest (vc_doctor_troy.foldg); - Fixed possibility of gaining experience multiple times in “Cabbage” quest in Modoc (mod_farmer_q.fodlg); - Player receives reputation in NCR for quest “True cowboy” even if only one Brahmin is brought (ncr_felix.fodlg); - Michael’s miniquest in NCR can be done by every player only once (ncr_michael.fodlg); - Added requirement of 16 level for “buggy” quest (ncr_ratch.fodlg); - Fixed amount of gaining experience when player rejects gratuity in “Postman” quest (q_mail_reciever.fodlg); - Fixed cooldown of “Postman” quest; - Cave mobs – spawn point near the exit grid was removed in the smallest cave; - Fixes of several dialogues in Vault City; - New quest – “Fugitive returning” – when finished, status “Child killer” is removed. Hubbologist in Redding bank offers this quest; - New quest “Farm vermines”. It is offered by Joe in Modoc (mod_joe.fodlg); - Fixed energy barrier in GECK town; - Added computer for breaking of energy barrier inside the town; - Added car lots for GECK town citizens (not more than 2); - Added ability of clearing of citizens list by town leader using the terminal. Rev.14 http://www2.xp-dev.com/sc/change/94227/14 Update for Notepad++ (Syntax_highlighting, autocomplete, function parameters hints) Rev.13 http://www2.xp-dev.com/sc/change/94227/13 First stable version.h3. Your title here...

SidleJinks picture

Description: Rev.193 http://www2.xp-dev.com/sc/change/94227/193 Russian text output into log was fixed. Error appearing on starting single mode with enabled server GUI was fixed. One more fix of client-server network interaction (attempt of fixing hangings while downloading chache). Rev.192 http://www2.xp-dev.com/sc/change/94227/192 Bug with visualisation of other playing movement was fixed. It appeared in 161 revision. Rev.191 http://www2.xp-dev.com/sc/change/94227/191 Operation with network interaction was optimized, the processor will be loaded less when sending large volumes of information (e.g. cache transmitting). Models, which are situated in separate folders, loading was fixed (slashes are replaces by dots). Rev.190 http://www2.xp-dev.com/sc/change/94227/190 Cache loading was fixed. Cache situation was changed on the client’s side and now a separate folder for cache is created for every server. DataFiles.cfg situation was fixed. For critters in Mapper with Cond == 3 (dead) now automatically parameter ST_REPLICATION_TIME is set to -1 (if it is equal to 0) i.e. nonreplicated. And for Cond == 2 (knockout) big cooldown for getting up is set. For “dictionary” class was added method uint keys(string@[]@ keys) const which returns all the keys and their quantity. Now it is checked for presence of palette with the same name with the FRM file which is loading. If there isn’t one, then default is used (like now). Rev.189 http://www2.xp-dev.com/sc/change/94227/189 Extra system for detecting launched client’s windows was added. Bug with impossibility of reading some files when one copy of client/mapper/server is launched. Check for ITEM_GAG on detection of finishing REASON_HEX_BUSY_RING plan (when critter is surrounded by impassable objects or critters) was added. Ground and roof tiles offset was fixed in FOnline geometry. Rev.188 http://www2.xp-dev.com/sc/change/94227/188 Support of graphic formats MOS and BAM from Ininity Engine (Boldur’s Gate, Icewind Dale, Planescape Torment) was added. It is possible to define the number of played cycle or frame. To define cycle’s number in file name parameters (“S”) – define its index and to define the frame add dash and frame’s index. Examples: fileName$5.bam – load fileName.bam with frames for cycle № 5; fileName$1-4.bam - load fileName.bam with frame № 4 with cycle № 1; fileName.bam - load fileName.bam с with frames for cycle № 0. Rev.187 http://www2.xp-dev.com/sc/change/94227/187 Some actions were performed to fix server's hanging up. Rev.186 http://www2.xp-dev.com/sc/change/94227/186 Some actions were performed to fix server's hanging up. Not adding function's name to log was fixed. Levelcap was removed in the scripts. Rev.185 http://www2.xp-dev.com/sc/change/94227/185 NO_LOOT and NO_DROP mode were switched off for the giant bugs. Rev.184 http://www2.xp-dev.com/sc/change/94227/184 In connection with porting the server (*nix and 64bit) the next changes were made: Operating with net was rebuilded. Libevent library is used. http://monkey.org/~provos/libevent/ http://en.wikipedia.org/wiki/Libevent http://ru.wikipedia.org/wiki/Libevent Operating with GUI was remade. FLTK library is used. http://fltk.org/ http://en.wikipedia.org/wiki/FLTK http://ru.wikipedia.org/wiki/FLTK Operating with threads was remade. Pthreads is used http://sources.redhat.com/pthreads-win32/ (Windows port) http://en.wikipedia.org/wiki/Pthreads http://ru.wikipedia.org/wiki/Pthreads Changes are serious and can cause unstable work. Memory leak when loading maps was fixed in server. Loading maps with items in containers/inventories in mapper was fixed. Don’t use mapper of 171-182 revisions for editing old maps. Now parameters values for critters in mapper are applies only if they are not equal to zero. Initially value is taken from defaults (from .fopro), then from the map’s data if !=0. Critter’s names in mapper are now taken only by prototype number without accounting dialogue’s number. Old specification of Log function which was changed in 174 revision was returned to native scripts. Server’s GUI now ‘Courier New’ type, option in config was deleted. Option for changing server’s window size and its elements was added GUI size modifier GUISize=0 E.g. if GUISize=-50 then server’s window and all its elements will be 50% smaller, if GUISize=30 then 30% larger. Log in server window is unrolled as defaults. Also, the information from the log can be copied and scrolling is stopped if it is focused. Client’s crashing when playing items animation was fixed. Paths make_tla.bat were converted to Visual Studio 2008 (9.0). Rev.183 http://www2.xp-dev.com/sc/change/94227/183 Lo Pan’s mercenaries call leader’s name correctly now. Nancy and Sid’s quest location now is deleted after leaving it (previously it wasn’t deleted and hanged in the memory). SF docs were excluded from NoPvP locations. Letters generation in Postman quest was fixed. Holodisk with combat robot’s video recordings can be given to Buster now. Shaneman’s documents now have description in “Diplomatic mission” quest. A dialogue between bar clients in outer Vault City was added (wipe is required). Mini quest “Seduce art” was added in Klamath (wipe is required). Rev.182 http://www2.xp-dev.com/sc/change/94227/182 NPC-travellers will no longer take dead characters to the global map. Atoll was removed from Eli’s destinations. Skill displaying when increasing it through the dialogue was fixed. The mistakes in the newcomer’s dialogues in “Anger” quest were fixed. The mistake in mercenaries script which caused the leaving the employer earlier was fixed. Rev.181 http://www2.xp-dev.com/sc/change/94227/181 Reading nicknames from ignor list file was fixed. Console command for adding a player to the ignor list was added ~ignore PlayerName. Rev.180 http://www2.xp-dev.com/sc/change/94227/180 Mechanism of reputation calculation was switched off due to its incorrect work. Now all the list will be visible, but will work correctly. Rev.179 http://www2.xp-dev.com/sc/change/94227/179 Network protocol bug which caused short hangs up was fixed. Client's script was fixed which could cause null parameter call. Rev.178 http://www2.xp-dev.com/sc/change/94227/178 Superfluous rifles on offer were fixed. Rev.177 http://www2.xp-dev.com/sc/change/94227/177 Game version increment. Rev.176 http://www2.xp-dev.com/sc/change/94227/176 Sequence of handlers calling was fixed MAP_EVENT_OUT_CRITTER, MAP_EVENT_IN_CRITTER now the first one is called initially, then the second On intro_init map static lighting was set. Group moving indication on the global map was fixed (previous update bug). Rev.175 http://www2.xp-dev.com/sc/change/94227/175 Console command ~globalmap was added. It moves player to global map. It works only on noPvP maps for players not in combat mode and with noPvP mode turned on. In caravans and travellers scripts functions of moving to final destination's map were updated. Rev.174 http://www2.xp-dev.com/sc/change/94227/174 Porting game to Linux was started. Also supporting of 64 bit platforms. Client’s native libraries are now transmitted automatically. They are stored in ‘Client/data/cache’. Folder with scripts ‘Client/data/scripts’ is not used anymore and was deleted. To the server’s folder library STLPort (http://www.stlport.org/) was added. Client’s libraries are now compiling with it’s help. It is connected with porting to other platforms. Additional methods of moving were added to critters in server scripts bool Critter::TransitToMap(uint mapId, uint16 hexX, uint16 hexY, uint8 dir, bool withGroup) bool Critter::TransitToMap(uint mapId, int entireNum, bool withGroup) bool withGroup – when moving from global map to local map, all the group will be moved. Regular TransitToMap (without bool withGroup) work as with withGroup == false. Previously they worked as как withGroup == true, what led to moving all the group when replicating, if dead critter was on the global map. 3d critters were switched off. For switching on see PLAYERS_3D in _defines.fos. Constants for operating with game constants were added(see 168 revision, http://www2.xp-dev.com/sc/change/94227/168). Specification for the reserved function Log in native scripts was changed. Now the first returned parameter is function’s name from which it was called. Rev.173 http://www2.xp-dev.com/sc/change/94227/173 Traders were added to Atoll and Redding. Barterground was moved to position 690:760 as it isn’t needed anymore in north-west region due to noPvP mode. Locations “BiX Church” and “Atom’s Church” were moved to special encounters class. Fixed rewards in some quests. Maps fixes. Biscuit on Modoc can be received only once now (as in Fallout 2). Rev.172 http://www2.xp-dev.com/sc/change/94227/172 noPvP mode was activated on some TLA maps. It will be used on the next TLA session. For switching it off on your server set global variable __NoPvpMaps=false; in script config.fos Ability of making a list of ignored players, it works similarly NameColorizing. It needs manual adding nickname of ignored player to IgnoreList.txt For refreshing the list of ignored players in game use console command ~ignorelist. Rev.171 http://www2.xp-dev.com/sc/change/94227/171 Derivative objects system for mapper was updated. When placing base object, all his derivatives are placed automatically. If one object from the group is being selected - all others are being selected too. If the prototype or position of the derivative object is changed, changes will be automatically applied by mapper or server when loading. For the example see cars, at the present time they have one derivative object – their trunk. Now when placing the car, it will be created automatically, also it will be moved with it and if base or derivative object is deleted, all the group will be deleted too. The system of moving selected objects in mapper was upgraded. Now in hexagonal system the selected objects will be moved without being tearing apart. Also the selected objects, when being moved, will stop at the map’s edge, so they won’t mix into a pile. The problem with detecting whether items in container belong to their inventory or container. Previously items were placing on the hex and if you place two containers on the same hex, all the items will stack in one container. Now it is fixed. Item::TrapValue initialization through mapper was fixed. If rewriting is performed on prototypes loading, alert is displayed. It was added for items and critters prototypes. In object’s structure in mapper was deleted field const bool Item_InContainer and added const uint UID, ContainerUID, ParentUID, ParentChildIndex Rev.170 http://www2.xp-dev.com/sc/change/94227/170 Now server doesn't block client's libraries while working. Previously you needed to stop the server to replace client's dll (Server/scripts/fonline_tla_client.dll). Rev.169 http://www2.xp-dev.com/sc/change/94227/169 Combined content of MASTER.DAT + CRITTER.DAT. Size - 201 MB! Rev.168 http://www2.xp-dev.com/sc/change/94227/168 Client and Mapper are no longer bounded with Fallout’s data files - MASTER.DAT and CRITTER.DAT. These files content is combined (excess data is deleted) and packed into fallout.dat (will be uploaded with the next update) and defined in DataFiles.cfg. Global variables string __MasterPath, __CritterPath were deleted. The configurator (FOConfig.exe) is updated accordingly fixes above. Critter’s lighting in the death moment and flat items lighting was fixed. To server/client/mapper scripts the next functions for operating with the constants (*Names.lst) were added: int GetConstantValue(int constCollection, string@+ name) – identifying constant’s value by the name; string@ GetConstantName(int constCollection, int value) - identifying constant’s name by the value; void AddConstant(int constCollection, string@+ name, int value) – adding separate constant to the collection; bool LoadConstants(int constCollection, string@+ fileName, int pathType) – loading/reloading the collection; int constCollection – collection’s number, see Constants collections in _defines.fos, also you can define your own collections; string@+ name – constant’s name; int value - constant’s value; string@+ fileName, int pathType – collection file’s name and folder path. Rev.167 http://www2.xp-dev.com/sc/change/94227/167 Bug with error of name/password in login menu if it exceeds 12 symbols was fixed. Screen centering on the player when loading map in right-angle geometry was fixed. Copying objects in Mapper from smaller map to the bigger one was fixed. Mapper hanging up when Sleep < 0 was fixed. Crashes when loading ART files were fixed. Principe of transparency defining with parameter ‘”t” was changed, now it isn’t equal to 255 – paletteIndex, but to max(R, G, B). Rev.166 http://www2.xp-dev.com/sc/change/94227/166 System of operating with items prototypes was updated (ProtoItem). Ability to add your own fields to proto class was added. New pragma ‘bindfield’ is used for this, e.g.: #pragma bindfield "const int ProtoItem::MyValue -> 400" it means creation of field MyValue of int type with offset 400 (considering thas int is 4 byte, it will occupy bytes 400, 401, 402, 403). Totally for user’s fields 500 bytes are available. Field is equal to zero as defaults, but it is possible to change the value by defining value (in the current case MyValue=111 or MyValue=SkillBigGuns) in proto file (.fopro), number (if it contains only numbers) or path to the file (it is identified by the presence of ‘/’ or ‘\’ symbols). For now fields which are not used by the engine are taken out to scripts, see _defines.fos Item prototypes fields. Changes in structure ProtoItem. All next methods are deleted uint8 GetType() const uint16 GetProtoId() const bool IsGrouped() const bool IsWeared() const bool Container_IsGroundLevel() const List of new fields which are registered in the engine (part of them is renamed, some were deleted) http://pastebin.com/8R4QkP3h The other fields are registered with #pragma bindfield in _defines.fos. Now all items can stack and wear out, for this Boolean fields are added to the prototypes bool ProtoItem::IsStackable bool ProtoItem::IsDeteriorable Item type ITEM_MISC_EX was deleted, it is combined with ITEM_MISC (miscex.fopro is deleted). Vehicles are taken out to separate type ITEM_CAR (car.fopro was added). Also now user can define any type numbers for the items. Former fields uint MiscEx_StartVal0..9 of the start values for Item::Val0..9 were moved to common area named StartValue0..9, and with these values Item::Val0..9 are initialized. Metod bool Item::IsCar() const was deleted, instead of it use GetType()==ITEM_CAR. The next methods are renamed bool Item::IsGrouped() const -> bool Item::IsStackable() const bool Item::IsWeared() const -> bool Item::IsDeteriorable() const The next fields are renamed uint16 Item/ItemCl::BrokenWear -> Item/ItemCl::Deterioration uint16 Item/ItemCl::CarDeteoration -> Item/ItemCl::CarDeterioration uint8 MapperObject::Item_DeteorationFlags -> uint8 MapperObject::Item_BrokenFlags uint8 MapperObject::Item_DeteorationCount -> uint8 MapperObject::Item_BrokenCount uint16 MapperObject::Item_DeteorationValue -> uint16 MapperObject::Item_Deterioration Mechanism of affiliated objects was moved for common use. Previously it was available only for vehicle’s trunk. One object can have up to five derivatives. Numbers of the derivative objects are defined in uint16 ProtoItem::ChildPid_0..4. By creation of base object, derivatives are created automatically. For now Mapper doesn’t create affiliated obkects automatically, but it will be fixed in further. For setting the place of situation, special field ChildLines_0..4 is used (former MiscEx.Car.Bag_0..1, see below by recording format). Also it is possible now to define automatic blocking for any objects, not only for vehicles – field BlockLines (former MiscEx.Car.Blockers). Recording format for Child/BlockLines – XYXYXY..., where X is direction number (0..5/7), Y is the amount of steps (1..9) in this direction (previously for vehicle’s trunk for another recording format - XXXX...). Maximum amount of steps for BlockLines – 50, for ChildLines – 6. For operating with derivative objects use methods Item@+ Item::GetChild(uint childIndex) const (бывшая Item@+ Item::CarGetBag(int numBag)) bool Map::CheckPlaceForItem(uint16 hexX, uint16 hexY, uint16 pid) const (bool Map::CheckPlaceForCar(uint16 hexX, uint16 hexY, uint16 pid) const) Fields renaming affected lots of scripts, be attentive. Old proto format is converted to the new one automatically, but Object Editor (ObjectEditor.exe) still operates only with old format. It will be fixed soon. To replication.fos and entires.fos scripts the influence of right-angled geometry was added. Script main_planes.fos is formatted as a separate module. All pragmas were move to the end of _defines.fos. Drop of FPS when switching on view/attack borders was fixed. Rev.165 http://www2.xp-dev.com/sc/change/94227/165 Fix for the ASCompiler. Rev.164 http://www2.xp-dev.com/sc/change/94227/164 Changed ASCompiler output format to “filename(linenumber) : message”. Such output is recognized by a number of IDEs and allow jumping to the code by a double-click on the output line. Rev.163 http://www2.xp-dev.com/sc/change/94227/163 Tabs management system was added to Mapper. Now one tab can have numerous subtabs. Tabs names and its filling is defined in mappers scripts. But some tabs already have initial filling. Item – items prototypes by defaults (items.lst); Tile – tiles by default, search is performed in ‘art/tiles/’; Crit – critters prototypes by defaults (critters.lst); Fast – displays often used objects, initial state is defined in scripts (InitializeTabs in mapper_main.fos); Ign – Ignore, shows ignored objects which are not shown on the map; Inv, Msg, Map – special tabs which have nothing to do with the mechanism, but it is possible to change its name throug TabSetName (see below). The tab can have subtabs only of one type – tiles, critters or items (displayed in priority order). For items and critters the subtab’s name is chosen by user, for the tiles it is performed automatically. The lowest subtab “all” contains all prototypes (or tiles) on a list above. For activation the menu of tab choosing – perform a double click on it. If positions are numerous then use mouse wheel for navigation (scroll speed: normal – 4, with pressed shift – 8, with pressed ctrl – 20, with pressed alt – 50). For tabs management use scripts, functions Tab* uint TabGetTileDirs(int tab, string@[]+ dirNames, bool[]+ includeSubdirs) uint TabGetItemPids(int tab, string@+ subTab, uint16[]@+ itemPids) uint TabGetCritterPids(int tab, string@+ subTab, uint16[]@+ critterPids) void TabSetTileDirs(int tab, string@[]+ dirNames, bool[]+ includeSubdirs) void TabSetItemPids(int tab, string@+ subTab, uint16[]@+ itemPids) void TabSetCritterPids(int tab, string@+ subTab, uint16[]@+ critterPids) void TabDelete(int tab) void TabSelect(int tab, string@+ subTab) void TabSetName(int tab, string@+ tabName) int tab – tab’s number (see Tabs in _mapper_defines.fos); string@[]@+ dirNames – folder’s names for tiles searching; bool[]@+ includeSubdirs – turn on search in subfolders; string@+ subTab – subtab’s name; uint16[]@+ itemPids – item’s prototype numbers array; uint16[]@+ critterPids - critters’s prototype numbers array; string@+ subName – tab’s name. Global variable was added bool __SplitTilesCollection = true It defines whether tiles should be divided into groups in the folders. The group is defined as a string in the file’s name before the first number (e.g. abc12.png - group abc), if the number is absent, then group is defined as '<other>'. In connection with these changes, the global functions are deleted uint GetFastPrototypes(uint16[]@+ pids) void SetFastPrototypes(uint16[]@+ pids) Other updates. Fixed incorrect work of server/client which caused some bugs. Global variable int __GeometryType was added to _defines.fos for the indication of chosen geometry. See constants in _defines.fos Geometry. Depending on its value, tab with Tactics and Arcanum is added. Ability to work with file names which include spaces is added. When loading ART files, it is possible to flip them vertical or horizontal. Parameters in the file name - ‘v’/‘V’ and ‘h’/‘H’. When loading SPR file, if you define in changing color parameter – layer’s number -1, then the modificator will be applied to all four layers. Rev.162 http://www2.xp-dev.com/sc/change/94227/162 Quest perks “Midnight Child”, “Nosderatu Blood” were added (Modoc, “Night’s tender”). Now new home position is set for NPC-travelers (Devin, Eli) when they enter new location. Female characters now can finish quest of removing childkiller status. Allies HP and resistances were increased in “Dangerous hunt” quest. Also a simple dialogue is added to them. The forged letter is now removed from the inventory when finishing quest “Forgery”. Edvin in Klamath tells with a popup phrase when starting gathering items. A delay was added to the prisoner giving the cues in “Ernst Telman” quest. Ability of intimidating the NPC visitor if it’s a woman was deleted in quest “Wrath”. Barcus now reacts with popup phrases to the futher meetings with the player who have done quest “Amnesty for Joshua”. Upon the receiving lieutenant rank of Vaultcity’s Guard, player is awarded with a black combat armor. In “Diplomatic Courier” quest time (24 hours) which Sheiman takes for the thoughts now is calculated correctly. Upon finishing this quest, player receives +1 reputation in NCR. Sell price of the buggy which player receives upon finishing the quest in NCR was set to zero. Dialogue launch when player uses an antidote in quest “Poisoned Regulator” in Redding was fixed. Players who gained Vaultcity citizenship now can trade with Randal with no restrictions. Reputation calculation in quests “Real Cowboy”, “Hub Bibliography” in NCR was fixed. If player refuses the reward in “Hub Bibliography” quest, he gains +2 reputation (was +1) when he delivers 5 books. Increasing raider’s resistances and skills every new attack on NCR was switched off. Ability of crafting and buying chitin armor was added. Giant beetles drop chitin. Items with ITEM_GAG flag deletion upon player’s death was fixed. Rev.161 http://www2.xp-dev.com/sc/change/94227/161 Ability to customize game geometry was added, either the support of isometric projection with quadrangles was. For customization use global variables bool __MapHexagonal – isometry type: true - hexagonal, false - quadrangular; int __MapHexWidth – hex width; int __MapHexHeight – hex height; int __MapHexLineHeight – hex line height; int __MapTileOffsX/Y – ground tiles offset; int __MapRoofOffsX/Y – roof tiles offset; int __MapRoofSkipSize – amount of hex per one roof tile (necessary for its correct hiding); float __MapCameraAngle – 3d model rendering angle; bool __MapSmoothPath – path smoothing when moving; string __MapDataPrefix – path and prefix for the geometry files. Operational sprites for geometry are situated in art/geometry/. Quadrangular isometry use 8 directions, hexagonal – 6. In script config.fos in function InitializeGeometry(), necessary adjustments for 3 games (Fallout1/2, Fallout Tactics and Arcanum) are added. This function can be called in server, client and mapper scripts, as all three of them need geometry information. Global variables uint __LookDir4, uint __LookSneakDir4 were added for 8-directional geometry. Fixed Tactics SPR files loading. Mode MODE_NO_TALK was added. It affects ability to talk and appearance of the icon in the context menu. Double click on hex, affecting avatar’s moving, was fixed. Creation of descriptions for critters prototypes (FODLG.MSG) with high identifiers was fixed. Image of elephant gun was added in 3d. Rev.160 http://www2.xp-dev.com/sc/change/94227/160 Fixed a bug with server and client communication. Fixed a bug with wrong sprites display. Rev.159 http://www2.xp-dev.com/sc/change/94227/159 Documentation's update, mistakes fixes. Rev.158 http://www2.xp-dev.com/sc/change/94227/158 Script start_server_client.fos was renamed to config.fos and now it isn't simply pasted into function start(), but presented as a separate module with function InitializeGame(). Macros for operating with time were moved from _macros.fos to separate module _time.fos. Slight fix of drugs.fos. Rev.157 http://www2.xp-dev.com/sc/change/94227/157 Errors messages in server log when operating with functions GetPlayerName/GetPlayerId were removed. Also GetPlayerName returns null now, if the player wasn't found. Bugs of reputation calculation were fixed. Rev.156 http://www2.xp-dev.com/sc/change/94227/156 Ability to affect the colors when loading Tactics sprites was added. To make color shift, define necessary values in file name’s parameters (“$”). Format: fileName$[index,r,g,b]animName.spr (can be any amount of shifts […]) where index – body part’s number (0 - miscellaneous, 1 - skin, 2 -hair, 3 - armor); r,g,b – color shift for the each component, can be negative Example: someSprite$[2,50,-30,-20]anim1.spr – load sprite someSprite.spr, with animation anim1 and hair’s color shift in RGB (50,-30,-20). Additional flags for operating with color’s shift were added for Tactics critters (_animation.fos, animation.fos). Use macros ANIM1_COLOR_SKIN(index), ANIM1_COLOR_HAIR(index), ANIM1_COLOR_ARMOR(index) for values defining. Index can take on value from 0 to 15, appropriate to it values of color shift look in array colorOffsets of animation.fos script. For ability testing you can use text function void ColorOffset(Critter& cr, int skin, int hair, int armor) in test.fos. Rev.155 Some native structures were fixed. Rev.154 http://www2.xp-dev.com/sc/change/94227/154 AngleScript is updated to revision 822. Ability of sorting is added to scripts arrays Ascending sort void array::sortAsc() void array::sortAsc(uint index, uint count) Descending sort void array::sortDesc() void array::sortDesc(uint index, uint count) For user’s classes sorting realize opCmp method http://www.angelcode.com/angelscript/sdk/docs/manual/doc_script_class_ops.html Vehicle animations on the global map and item’s animations in Mapper are fixed. Some points in operating with critter’s animations are fixed (animation.fos). Global variable __GmapActive is fixed. Global variable for setting min. offline time after that client will completely exit from the game was added. uint __MinimumOfflineTime = 180000; // 3 minutes Rev.153 http://www2.xp-dev.com/sc/change/94227/153 Additional constants for operating with Chosen's actions were updated (Get/SetChosenActions, for CHOSEN_USE_ITEM). Rev.152 http://www2.xp-dev.com/sc/change/94227/152 Additional constants for operating with Chosen's actions were added (Get/SetChosenActions). Rev.151 http://www2.xp-dev.com/sc/change/94227/151 Bugs with incorrect files's names path detecting were fixed. Rev.150 http://www2.xp-dev.com/sc/change/94227/150 3d models loading was fixed. 3d models rendering to sprites was fixed. Critters animations were fixed (death in 2d and 3d modes). Shift calculation for some models was fixed. SAY_DIALOG/SAY_APPEND mechanics was fixed. (by Atom) Server’s config loading in Mapper was fixed. (by Atom) File HashNames.lst was added to client. Names of files which contain parameters (‘$params’) should be entered in it. If you use such names in the prototypes, Mapper or scripts GetStrHash), then include this name to this list. Format of writing: [any number] [file’s name] [end of string] E.g. 0 art\scenery\BrazureFire$t.ART 0 art\scenery\BrazureFire$t3.ART In further it is possible to detect and transmit such names automatically, but for the present use this system. Roof disappearing if it is situated in odd hex in two axis. Rev.149 http://www2.xp-dev.com/sc/change/94227/149 Documentation was updated. Some fixes in Arroyo (Minoc’s quest about raiders). Usage mode was added for sledgehammer and supersledge (for resources mining). Guard lib was brought into common standard of scripts formatting. Rev.148 http://www2.xp-dev.com/sc/change/94227/148 Two reserved variables were added to HLSL effects float AnimPosProc – current animation’s per cent 0%..100%, [0,1); float AnimPosTime – current animation’s time in seconds. Client’s hanging under certain circumstances was fixed (e.g. receiving item’s data when player in process of moving between maps). Dump generation when closing server application without stopping was switched off. Generation of unnecessary messages to log in function animation_ animation.fos was fixed. Rev.147 http://www2.xp-dev.com/sc/change/94227/147 Parameters for critter’s movement controlling were added. Time for moving in milliseconds: #define ST_WALK_TIME (117) #define ST_RUN_TIME (118) Ability to move #define MODE_NO_WALK (539) #define MODE_NO_RUN (540) If these parameters are equal to zero, then data is taken from CritterTypes.cfg. Loading of some ART files was fixed (Arcanum). Ability of specifying special image processing was added. Palette elements will be transparent depending on its index in the palette (alpha = 255 – index). To chose this loading type - use symbol “t” (or “T”) in file name parameters. E.g. ‘filename$t.art’; also you can combine with palette, e.g. ‘filename$1t.art’. Ignoring of spec.symbol “/r” was additionally added for splitEx function. In functions void DrawSprite(... bool applyOffsets) if applyOffsets == true there were additionally added shifting of width/2 and height of the image. Unnecessary fo3d files were deleted. Palette influence for Arcanum critters was fixed. Rev.146 http://www2.xp-dev.com/sc/change/94227/146 One more fix of incorrect critter displaying. Rev.145 http://www2.xp-dev.com/sc/change/94227/145 Quest “Communicated” was added (Redding). Caravaneers phrases were fixed, now they tell correct departure dates. Quest “Honomer’s bodyguard” was added (San Francisco). Retina scanner in GECK town was fixed. Slight fixes of the hubbolog’s map in San Francisco. Special result function for skill rise calculation through a dialogue was added.(dialog@r_SkillUp) The script for quest locations creating was fixed (hostile_location_quest.fos), allies and enemies scripts now work correctly. Resetting of a quest variable when deleting the location was fixed. Script for realization a dialogue between several npc’s with popping up phrases was added. (npc_dialog.fos) Story line implementation was continued. Maps numeration in the location with mutants was fixed (quest string “Guardian”). Rev.144 http://www2.xp-dev.com/sc/change/94227/144 Critter’s hitpoints regeneration was moved to scripts, you can look realization in function critter_idle main.fos. Global function for critters sampling from the global map was added to server scripts. uint GetGlobalMapCritters(uint16 worldX, uint16 worldY, uint radius, int findType, Critter@[]@+ critters) Additionally to methods bool Map::GetNearEntireCoords(int& entire, uint16& hexX, uint16& hexY) const bool Map::GetEntireCoords(int entire, uint skip, uint16& hexX, uint16& hexY) const were added methods bool Map::GetNearEntireCoords(int& entire, uint16& hexX, uint16& hexY, uint8& dir) const bool Map::GetEntireCoords(int entire, uint skip, uint16& hexX, uint16& hexY, uint8& dir) const which return direction. Global variable which specifies if the password in the client’s login window should be hidden was added bool __HidePassword = true Incorrect critters creation in Mapper was fixed. Displaying of switching critter’s type 3d->2d on the client’s side was fixed. Rev.143 http://www2.xp-dev.com/sc/change/94227/143 Fixed critters loading in Mapper (141 revision's bug). Rev.142 http://www2.xp-dev.com/sc/change/94227/142 Fixed server loading (the previous revision bug). Rev.141 http://www2.xp-dev.com/sc/change/94227/141 Mechanism for identifying critter’s animation file name was added. Now you can operate with critter’s animations from Tactics and Arcanum without any conversions. All data files which you need for enabling one or another critters are cited in CritterTypes.cfg comments. The next critters were added to SDK: Humanoid, Behemoth, MTT, Pacification. They are repacked to the separate archive ftrobots.bos. But all available critters from Tactics and Arcanum are added to CritterTypes.cfg with correctly defined parameters for them (by Tabloid), so you can enable the needed data files and use the critters. All animations are transformed to the general appearance (ANIM2_2D*, ANIM2_3D* -> ANIM2*). The functional for operating with them is moved to scripts. In some places where these values are used, numeric literals are replaced by string constants, which description you can find in DefineNames.lst. Fixes were made in weapons prototypes (weapons.fopro) and fo3d templates for 3d critters from VanBuren (_VBHuman.fo3d, _VBMob.fo3d, _VBWeapon.fo3d). Now three sets of primary and secondary animations are used for critters, for three condition types – alive, knockout, dead const uint Critter/CritterCl::Anim1/2Life/Knockout/Dead (const uint Critter/CritterCl::Anim1/2 were deleted). These values are used for animations as default. Pay attention that Anim1 additionally is summed up with animation of the weapon in the active slot, bit-by-bit OR. It is necessary for assignation certain values on continuing basis (e.g. sitting, lying position). For changing these values the next method is used void Critter::SetAnims(int cond, uint anim1, uint anim2) int cond – defines the position to apply values to (COND_* in _defines.fos), if null it is applied to all three; uint anim1, anim2 – animation values. Deleted const uint8 Critter/CritterCl::CondExt Accordingly all COND_*_* for them are deleted. Now position is differentiated by the animations. In connection with it, the next methods specifications were changed void ToDead(uint anim2, Critter@+ killer) bool ToKnockout(uint anim2begin, uint anim2idle, uint anim2end, uint lostAp, uint16 knockHx, uint16 knockHy) void EventKnockout(uint anim2begin, uint anim2idle, uint anim2end, uint lostAp, uint knockDist) void EventSmthKnockout(Critter& fromCr, uint anim2begin, uint anim2idle, uint anim2end, uint lostAp, uint knockDist) uint anim2begin, anim2idle, anim2end – animations of the knockout begging, staying in it and coming to yourself. Standard macroses are defined for the transfer KNOCKOUT_ANIM2_DEFAULT, KNOCKOUT_ANIM2_STUNNED (in _animation.fos). Also Mapper operates now not with CondExt, but with Anim1/Anim2 for the current Cond. Global variables for client/mapper for defining combat mode animations were added uint __Anim2CombatBegin = ANIM2_BEGIN_COMBAT uint __Anim2CombatIdle = ANIM2_IDLE_COMBAT uint __Anim2CombatEnd = ANIM2_END_COMBAT The next reserved client/mapper functions were added (animation.fos): - string@ critter_animation(int animType, uint crType, uint anim1, uint anim2, uint& pass, uint& flags, int& ox, int& oy) Function which is called when loading necessary animation. Returned value - file’s path and name. int animType – critter’s animation type (new parameter which is set in CritterTypes.cfg); uint crType – critter’s type; uint anim1, anim2 – animation’s indexes; uint& pass – function call’s number, is changed by the user. If animation loading failed and this parameter was changed, then function will be recalled (in certain cases you should try to load different files for the one animation); uint& flags – flags, at the present moment two of them – to take the first or the last frame from the animation ( Anim loading flags in _animation.fos); int& ox, &oy – shifts for the animation, in pixels. - bool critter_animation_substitute(int animType, uint crTypeBase, uint anim1Base, uint anim2Base, uint& crType, uint& anim1, uint& anim2) If animation loading failed (and uint& pass wasn’t changed), then this function is called for animation substitute detection (e.g. left hook can be replaced by the right hook). true is returned if the substitute was found (engine also additionally checks if crType, anim1, anim2 were really changed), false – no substitute, animation won’t be loaded and played. int animType – see above; uint crTypeBase, anim1Base, anim2Base – base critter’s and animation’s type, which were at the start; uint& crType, &anim1, &anim2 - critter’s and the current animation’s type for the substitution - bool critter_animation_fallout(uint crType, uint& anim1, uint& anim2, uint& anim1ex, uint& anim2ex, uint& flags) As Fallout’s animations are still loaded by the engine (additional shifts calculation and animations pasting together is needed), for determining animations conformity this function is called, i.e. instead of critter_animation for fallout’s animations this function is called. true is returned if animation is presented, false – not. Method bool Critter::IsAnim3d() const is deleted, use instead of it the global function int GetCritterAnimType(uint crType) values look in Anim types _animation.fos. Critters actions sounds now are played in the scripts, in animation_2d/3d_process. New mechanism for sound file name identification was made, look PlayAnimSound in animation.fos. Critters prototypes were divided into fallout’s (fallout2.fopro) and TLA's (tla.fopro). Bug with roof’s non-transparency in Mapper was fixed. Name indication of chosen critter or tile prototype in mapper was added. Format fo3d now recognizes named constants DefineNames.fos, namely for modificators Mesh, Subset, Layer, Value, DisableLayer, DisableSubset, Texture, EffDef (для Dword), Anim, AnimSpeed, AnimEqual. Global server variable for determining call frequency was added GLOBAL_PROCESS_MOVE uint __EncounterTime = 5000 Global client variable for determining frequency of foolish trick animation call was added uint __CritterFidgetTime = 50000 is deleted using formula Random(__CritterFidgetTime, __CritterFidgetTime * 2) Item prototype’s parameter was deleted bool ProtoItem::Weapon_RequiresActivation now if animation doesn’t exist, it is just not played. Parameters uint16 MapperObject::Scenery_ToMapX/Y were deleted, in mapper also. Moving between locations is performed by entery points. In weapons prototypes types of action animations were substituted from numeric by string constants (accordance look in DefineNames.lst). Appropriate changes were performed in ObjectEditor. Client functions PlaySound andPlayMusic now return bool, signalizing if file was found or not. Global functions for server/client/mapper which return appropriate values from CritterTypes.fos were added uint GetCritterAlias(uint crType) string@ GetCritterTypeName(uint crType) string@ GetCritterSoundName(uint crType) Mapper’s scripts were moved to server’s scripts folder. Also the whole set of functions for operating with CritterTypes.fos was added to Mapper bool IsCritterCanWalk(uint crType) bool IsCritterCanRun(uint crType) bool IsCritterCanRotate(uint crType) bool IsCritterCanAim(uint crType) bool IsCritterAnim1(uint crType, uint anim1) int GetCritterAnimType(uint crType) uint GetCritterAlias(uint crType) string@ GetCritterTypeName(uint crType) string@ GetCritterSoundName(uint crType) Specifications of client’s reserved functions were changed animation2d_process, animation3d_process parameter bool animateStay was added to the beginning. It indicates if any action is performed now (false) or stand animation (true). Reaction for global map’s interface buttons pressing when the size of map’s area (GmapMap) covers the buttons area was fixed. Bug with incorrect loading/saving maps in which script’s or function’s name consists of spaces was fixed. Bug with potential server crashing when using AI_PLANE_MISC was fixed. Rev.140 http://www2.xp-dev.com/sc/change/94227/140 Some robots from Fallout Tactics (look the next revision). Rev.139 http://www2.xp-dev.com/sc/change/94227/139 The next quests were added in San Francisco: “Introduction into Hubbology”, “Hub’s justice”. Transport to Atoll is available for the players who are doing “Introduction into Hubbology” quest (npc is in the docs area of San Fracisco); Automatic transfer to the command center of GECK city citizens when entering the map was removed. Now citizens can choose spawn point. Quest location “Hubbologists laboratory” was added (author JunoReactor). Rev.138 http://www2.xp-dev.com/sc/change/94227/138 Arroyo: Quest “Evidence of Chosen’s death” was added (Todd Stewart); Two courier quests were added (Cassidy, Todd Stewart); Encounter fixes: Fixed bugs of the 120 revision; Fixed random encounters where normally aggressive npc’s didn’t attack after fighting with the other npc’s; Fixed bug with unlimited experience in Den; Fixed mistakes in NCR quests cooldowns; Slight dialogues fixes. Rev.137 http://www2.xp-dev.com/sc/change/94227/137 Ability to specify the layer of tiles/roof to organize correct query of displaying. Totally there can be 5 layers, from 0 to 4. You can switch between them with pressing shift and pressing appropriate key (from 0 to 4). Indication of the current layer is specified in the map’s supplemental information (in upper right corner). Specification of MapperMap AddTile/AddTileName methods was expanded, also layer parameter was added void AddTile(uint16 hexX, uint16 hexY, int offsX, int offsY, int layer, bool roof, uint picHash) void AddTileName(uint16 hexX, uint16 hexY, int offsX, int offsY, int layer, bool roof, string@+ picName) Functions for hash calculation by file’s name and inverse function were added to the native scripts const char* (*GetNameByHash)(uint hash); // Get name of file by hash uint (* GetHashByName)(const char* name); // Get hash of file name The functional for operating with the chosen’s actions was added to the client’s scripts. For taking or specifying the actions use functions uint GetChosenActions(uint[]@+ actions) void SetChosenActions(uint[]@+ actions) This array consists of blocks of seven variables, the first is the type, the other are the parameters. Values of types and parameters look in _client_defines.fos Chosen actions. Argument with the location was added to the reserved function for checking the entries into this location bool entrance_FuncName(Location& loc, Critter@[]& critters, uint8 entrance) The next events were added for critters CRITTER_EVENT_USE_ITEM_ON_ME bool EventUseItemOnMe(Critter& whoUse, Item& item) CRITTER_EVENT_USE_SKILL_ON_ME bool EventUseSkillOnMe(Critter& whoUse, int skill) In the calls stack it is situated between CRITTER_EVENT_USE_* and the global handler. That is CRITTER_EVENT_USE_ITEM for the player + CRITTER_EVENT_SMTH_USE_ITEM for those who can see the player. CRITTER_EVENT_USE_ITEM_ON_ME The global handler critter_use_item. and CRITTER_EVENT_USE_SKILL for the player + CRITTER_EVENT_SMTH_USE_SKILL for those who can see the player. CRITTER_EVENT_USE_SKILL_ON_ME The global handler critter_use_skill. The supplemental information (current hex, fps, etc.) in Mapper is presented in the upper right corner. Bug of 135 revision with transparent tiles when placing them was fixed. Data connected with unfinished mechanism of textured grid was deleted. Rev.136 http://www2.xp-dev.com/sc/change/94227/136 Maps converted to text format. Rev.135 http://www2.xp-dev.com/sc/change/94227/135 Now only text format is used for maps, it is binary only for loading. All maps are converted to the text format (they will be uploaded with the next revision). Extension of this format is “fomap”. To convert your own maps to the new format – execute in Mapper ““#ConvertMaps”, then you should manually or using Mapper set required values in Time, NoLogOut, ScriptModule, ScriptFunc fields, which values you can see in file Maps.cfg. File Maps.cfg is not used anymore, locations prototype numbers are defined opposite to their name in file Locations.cfg, as in the most cases the one map prototype is used for the one location. According to these changes, the next MapperMap methods are deleted: uint GetTile(uint16 tileX, uint16 tileY, bool roof) const void SetTile(uint16 tileX, uint16 tileY, bool roof, uint picHash) string@ GetTileName(uint16 tileX, uint16 tileY, bool roof) const void SetTileName(uint16 tileX, uint16 tileY, bool roof, string@+ picName) And the next are added: uint GetTilesCount(uint16 hexX, uint16 hexY, bool roof) const void DeleteTile(uint16 hexX, uint16 hexY, bool roof, uint index) uint GetTile(uint16 hexX, uint16 hexY, bool roof, uint index) const void AddTile(uint16 hexX, uint16 hexY, int offsX, int offsY, bool roof, uint picHash) string@ GetTileName(uint16 hexX, uint16 hexY, bool roof, uint index) const void AddTileName(uint16 hexX, uint16 hexY, int offsX, int offsY, bool roof, string@+ picName) Also the next fields are added: const int WorkHexX const int WorkHexY int Time bool NoLogOut string ScriptModule string ScriptFunc The next methods are deleted (as their technology is not good enough for now): string@ GetTerrainName(uint16 tileX, uint16 tileY) cons void SetTerrainName(uint16 tileX, uint16 tileY, string@+ terrainName). Function bool SaveMap(MapperMap@+ map, string& fileName, int pathType, bool text, bool pack) now looks as bool SaveMap(MapperMap@+ map, string& fileName, int pathType). The ability to transmit commands /text /pack when saving by the console is deleted respectively. Several functions for operating with map’s fields were added to mapper script (you can do this procedure simply editing necessary field in the map’s file with text editor): #MapTime value – map’s time in minutes; #MapNoLogOut value –possibility to log out on the map; #MapScriptModule moduleName – script, module’s name; #MapScriptFunc funcName – script, function’s name. Now it is possible to place lots of sprites on one hex. Be attentive, fallout’s tiles have the same size and if you place two tiles on the same hex, you won’t see it (only if you select it , it will be less transparent than the others). Take it into account when you place or copy-paste tiles. Function #ClearTiles can help you with this problem, it deletes superfluous tiles from the hex. So, if you operate with fallout’s tiles and you don’t need several tiles on the same hex, execute this script when you finish work. Also you can place tiles on every hex, not in two. Ability of shifting is added for tiles. To produce tile shift just make the same operations as switching between tiles, but additionally pressing shift. Also you can use the same shift procedure for items. To cancel shift, press Alt with Shift and move objects. Fixed 130 revision’s bugs. Fixed bug with absence of shifting in fofrm with one sprite. Fixed bug with error in loading sprites in scripts (LoadSprite), which caused several other bugs. Remained ini files were formatted. Rev.134 http://www2.xp-dev.com/sc/change/94227/134 Config was uploaded by mistake. Take into accont, don't use config file from 132 and 133 revisions, admin pass is "hh" there. Rev.133 http://www2.xp-dev.com/sc/change/94227/133 Redding maps fixed, quest NPC were added. Rev.132 http://www2.xp-dev.com/sc/change/94227/132 Fixed "Anger" quest, the missing dialogue was restored, now it can be finished. Added quest "Forgery". (VC, Linnet) Rev.131 http://www2.xp-dev.com/sc/change/94227/131 New quests "Anger", "Ernst Telman" were added. (VC, Linnet) Fixed bug in VC guard's AI scripts. Fixed mistakes in quest “Amnesty for Joshua” dialogues. Ability to cancel their service for mercs/companions was added if the owner exits from location to the global map. Rev.130 http://www2.xp-dev.com/sc/change/94227/130 Support of graphics files SPR, TIL, ZAR from Fallout Tactics was added. Support of data files BOS from Fallout Tactics was added (works as ZIP archieve). For loading certain animation from SPR files, state it in the name after “$” sign. E.g. loading CrouchAttackClubSwing animation from file Mutant.spr - “Mutant$CrouchAttackClubSwing.spr”. The first frame of first animation is taken without direction. Also, ability to set certain palette for ART files (graphics files from Arcanum) was added – state palette’s number (from 0 to 3) after “$” sign. E.g. to load dfmbnsba.art file with the second palette - “dfmbnsba$1.art”. First palette is taken without direction (that is 0). Operation with sprites was changed. Now all interface graphics (which is set in ini files) is represented not as one sprite, as continuously played animation. Functional for operation with currently drawn sprites on the map was added to the native client’s and mapper’s scripts. Structures: struct Sprite – displayed sprite; struct SpriteInfo – additional information about the sprite. Functions: Sprite* (*GetDrawingSprites)(uint& count); - currently drawn sprites, if no sprites (on the global, menu), then NULL is returned and count == 0; SpriteInfo* (*GetSpriteInfo)(uint sprId); - getting additional information about certain sprite; uint (*GetSpriteColor)(uint sprId, int x, int y, bool affectZoom); - getting pixel’s colour, with the ability of taking zoom into account; it isn’t available for 3d models yet; format - ARGB; bool (IsSpriteHit)(Sprite sprite, int x, int y, bool checkEgg); - test whether the point on the display matches with the current sprite with taking zoom, transparence and egg of transparence into account (optional). The reserved native global variable GameOpt was renamed to Game. Global variables int __MouseX, __MouseY for current mouse position indication were added. Function void GetMousePosition(int& x, int& y) was deleted. Indication of opened console bool __ConsoleActive was added to client’s scripts. Bug with memory leak when rendering 3d graphics to sprites was fixed. Rev.129 http://www2.xp-dev.com/sc/change/94227/129 Added ability to use robot-guards from Sierra as bodyguards (for those who had completed quest "No-sweat job" in Navarro) Added quest "Amnesty for Joshua" (VC, Amanda) Work of teleport on special encounter "Mad scientist's laboratory" was restored. Rev.128 http://www2.xp-dev.com/sc/change/94227/128 Second stable SDK assembly. For the purpose of decreasing repository's size, assemblies will be stored in another places. Links you can find in text files. Rev.127 http://www2.xp-dev.com/sc/change/94227/127 Quest "No-sweat job" in Navarro. Rev.126 http://www2.xp-dev.com/sc/change/94227/126 Mercenaries and companions mechanism (merc.fos) was updated. Now every companion has term of service. Companions don’t meddle in player’s showdowns with NPC’s. Fixed quest “Dip.Courier”. Now it can be finished. Fixed quest “Dock’s attack”. Now it can be finished after killing 5 giant insects. Added 3 new mercs for Lo Pan. Updates NPC-travellers mechanism (traveller.fos). The first NPC-traveller was added (eli.fos). Functions which cooldowns checkup for NPCs in dialogues were fixed. When character dies, all items with flag ITEM_GAG are deleted. Fixed cooldowns for quests “Hub bibliography”, “Sick Brahmin” and in the dialogue with dr.Klaus for stimpacks and first aid kits delivery. When NPC repairs an item, ammo is ejected. Script for NPC monologues realization was added. (monologue.fos) Rev.125 http://www2.xp-dev.com/sc/change/94227/125 Fixes of password encryption in the client's files. Rev.124 http://www2.xp-dev.com/sc/change/94227/124 Fixed bug with graphics loading in the previous update. Rev.123 http://www2.xp-dev.com/sc/change/94227/123 DAT2.1 (Arcanum) files support was added. ART (Arcanum) graphic format was added. Function for operating with strings splitEx was added. Principle is the same as in split, but empty elements are not included in the result array. Also spaces/tabs/string_hyphenation are deleted from the result elements. Examples: split(“A|B||D”, “|”) -> {“A”, “B”, "", “D”} splitEx(“A|B||D”, “|”) -> {“A”, “B”, “D”} split(“A| B\t\t||D| E|F ”, “|”) -> {“A”, “ B\t\t”, "", “D”, “ E”, “F ”} splitEx(“A| B\t\tC||D| E|F ”, “|”) -> {“A”, “B”, “D”, “E”, “F”} Additional DrawSprite functions for the client and mapper were added. You can transfer true with the last argument and as the result, the shift which is stored in the current file will be added to the sprite’s position. void DrawSprite(uint sprId, int sprIndex, int x, int y, uint color, bool applyOffsets) void DrawSprite(uint sprId, int sprIndex, int x, int y, int w, int h, bool scratch, bool center, uint color, bool applyOffsets) Fixed bugs with incorrect ini settings parsing in the scripts. Rev.122 http://www2.xp-dev.com/sc/change/94227/122 Client scripts updates: For the reserved function void render_iface(uint layer) was added calling with value layer 100 to give the ability of drawing on the global map. Also the next global variables were added for operating with the global map: bool __GmapActive – whether global map is active and all the variables below are correct; bool __GmapWait – whether waiting mode of encounter affirming is active; float __GmapZoom – current zoom, don’t forget it to take into account while drawing a map; int __GmapOffsetX, __GmapOffsetY – map shift from the zero-coordinate (up-left corner); int __GmapGroupX, __GmapGroupY – player’s group coordinates; int __GmapMoveX, __GmapMoveY – destination point’s coordinates; float __GmapSpeedX, __GmapSpeedY – movement speed every 50 ms, without taking relief into account For example, calculating the current pixel group’s position - (x = __GmapGroupX / __GmapZoom + __GmapOffsetX), (y = __GmapGroupY / __GmapZoom + __GmapOffsetY). Fixed bug with hanging when drawing 3d model, occurred in the last update. Fixed missing bracket in English texts. (by Kilgore) Rev.121 http://www2.xp-dev.com/sc/change/94227/121 Added more mouse sensitivity and now you can see mouse’s speed percent in the settings. Updated FOConfig.exe. Added AlwaysRun option. Possible values for option Mouse speed were corrected. Option Sleep now can be set to -1, that means switching it off (maximum performance). Added ability of redirecting keyboard’s symbol codes input. For this, use option KeyboardRemap (in FOnline.cfg). It is performed after space – X Y X Y …, where X is the code which is substituted by Y. Code numbers - http://fonline.pastebin.com/Qy3E0qwj Interface description in default.ini is formatted and commented. (by LoadRunner) Location prototypes updates: Option max_copy was deleted. Option max_players was added. It limits the amount of players who can be on the location simultaneously. Players, who can’t enter location because of exceeding the limit will see message 904 from FOGAME.MSG {904}{}{Location is overcrowded, try to enter later.} Password encryption in server *.client. files was added. Mouse shift when switching between movement modes was fixed. Also, for more accurate work, the hex mask was added – look \Client\data\art\misc\hex_mask.png. Only red colour is taken into account and when it takes on certain value, the shift to certain direction is performed (50 – 5, 100 – 0, 150 – 3, 200 – 2). The mask is optional, you can work without it. Fixed loading/saving tiles in the maps text format. Fixed global map shifting behind screen’s edge. Registration of useless clicks in mapper when switching between windows, now isn’t performed. Fixed the animation of 3d critter standing when situating them on the map. Also now 3d critters don’t play standing animation in the critter’s list. Fixed displaying of critters which have only one direction. Fixed command ~reloadscripts. Now when you mark items for deleting (DeleteItem/DeleteItems), their quantity is saved. So, in the moment when real deleting is performed, server will delete the requested number of items. Now knockout during turn-based fight leads to immediate loosing action points, not after finishing the turn. Also, frequent checks for the necessity of finishing the turn were added at the server - if critter’s dead, critter has negative AP, critter has no more AP. Scripts: Fixed critter’s flags (Critter extra flags, _defines.fos). Fixed special encounter scripts Guardian of Forever, Mad Brahmins. Script trader.fos was formatted. Reserved function was added to client scripts, which is called with attacks void hit_aim(uint8& aim) aim value can be redefined( Hit locations in _defines.fos). Function int Critter::GetScore(uint score) was added to server scripts. Specification Critter::AddScore(int score, int val) was changed to Critter::AddScore(uint score, int val). Function for calculation the size of drawn text was added to client and mapper scripts void GetTextInfo(string& text, int w, int h, int font, int flags, int& tw, int& th, int& lines) string& text – text; int w, h, font, flags – height, width, print, flags; int& tw, int& th, int& lines – total width, height and amount of strings in the current text. Rev.120 http://www2.xp-dev.com/sc/change/94227/120 Unused encounter tables for Fallout 1 and commented original’s scripts were deleted from worldmap_init.fos; Random encounters of “beasts versus beasts” type were enabled, which were presented in the scripts, but were absent in the original. Added some new kinds of non-unique random encounters. Now, if player uses to kill NPC’s of certain group or organizations on random encounters, then they become aggressive. Vault City guard’s automatic search is deactivated. Now you need to activate the dialogue to pass through. Fixes in English dialogues versions. Maps fixes. Rev.119 http://www2.xp-dev.com/sc/change/94227/119 Fixed lots of little mistakes in dialogues; Fixed bugs in some Den and Klamath quests; Maps fixes; Duplicate dialogues with different names were deleted. Rev.118 http://www2.xp-dev.com/sc/change/94227/118 Fixed modificator's argument from Parent-0-7 to Parent0-7. Rev.117 http://www2.xp-dev.com/sc/change/94227/117 Added dialogues to Arroyo doctor and his team. Slight fixes (dialogues, maps). Rev.116 http://www2.xp-dev.com/sc/change/94227/116 Library for importing different 3d models was enabled – Assimp http://assimp.sourceforge.net/ Formats that are supported: http://assimp.sourceforge.net/main_features_formats.html Built-in one is still used for X format, for other ones – this library. If you don’t need the library, you can delete it (file Assimp32.dll), client and mapper are able to work without it. Updated mechanism of linking models and animations, now you can link any animation to any skeleton from any file. fo3d format changes: Modificator ModelAnimation was deleted. Modificators Anim, RenderFrame, RenderFrames were expanded – now file name which consists needed animation is placed before the animation’s name (if you state “ModelFile”, then search is performed in the file of loaded model)/ Specification of indicating parent texture (Texture X Parent) was expanded. Now you can additionally state the mesh number and its part, from which the texture is taken - Texture X ParentY-Z, where X is the texture’s number, Y is mesh number, Z is mesh part number; parameters Y-Z are optional, you may don’t use them at all or you may use them partly (Parent, Parent0, Parent-5). Fixed bug with incorrect script processing when operating with Critter::ShowScreen. Fixed bug with incorrect operating and crashing when using Log function with some special symbols. Added Combat Armor 3d model (by Gray). Rev.115 http://www2.xp-dev.com/sc/change/94227/115 Added special encounter "Warehouse of lost doughnuts" (author - Ponchik). Scripts for some original special encounters (author - Cracker). Remade some prototypes. Windows without glasses in Vault's walls can be shooted through now. Slight fixes. Rev.114 http://www2.xp-dev.com/sc/change/94227/114 Maps for quests from the 113 revision. Rev.113 http://www2.xp-dev.com/sc/change/94227/113 Klamath: quests - "Worker searching", "Husband's alert", "Brahmins vaccination" (author - Ponchik). Slight fixes. Rev.112 http://www2.xp-dev.com/sc/change/94227/112 Finished appearance of random encounter "Ocean Trader". Slight maps, dialogues and graphics fixes. Added buttons for BarterGround, GECK town, Warehouse and Hell for the global map (author - Ponchik). Slight fixes. Rev.111 http://www2.xp-dev.com/sc/change/94227/111 Added additional mechanism for data files loading (dat, zip). It is necessary for loading data files loading before scripts initializing and processing start() function as some date is needed to be used before this (effects, prints and some other resourses). For adding files to loading – create DataFiles.cfg file in which you should list all necessary file names. The program searches for the content from the last to the first data file. This mechanism uses server, client, mapper. If list isn’t found then no alerts will be displayed. If one of the files from the list can’t be found or load error appears, then alert will be shown. Option PatchDatPath was deleted, loading of this file is moved to DataFiles.cfg. Rev.110 http://www2.xp-dev.com/sc/change/94227/110 Fixed model's borders calculating which caused nick or text shift above critter's head. Rev.109 http://www2.xp-dev.com/sc/change/94227/109 Fixed skin setting-up when registration 3d character. Fixed order of loaded packs (dat, zip) scanning while searching and parsing ini files. Addition to 106 revision – for stating specific keys for certain resolutions now are used not separate files with different names, but marks in the main file. At the start of the string write “resolution”, than min. width and height for starting using these options. By default these values are equal to zero. For example: "resolution 1024 768 key = value..." It means, that “key = value ...(and so on till the next keyword ”resolution”)” will be included in the final ini. Found data will be inserted in the main file as screen width grows. Rev.108 http://www2.xp-dev.com/sc/change/94227/108 Actual cash files. Rev.107 http://www2.xp-dev.com/sc/change/94227/107 SDK is switched to 3d players mode. Normal version will be restored after finishing mechanism debugging process. For switching off 3d players models – comment the next strings in Server\scripts\_defines.fos #define PLAYERS_3D // Enable 3d players #define PLAYERS_3D_NO_HEAD // No head slot #define PLAYERS_3D_VAULT_SUITE // Vault suite by default, not naked 3d updates: Fixed and reduced the size of attributes and weapons. Added missing attributes of opened pipboy. In the left hand now is displayed the item, which player has in the second slot. Armor’s models are divided between the current armor items in the such way, that gamer could see the difference. For example combat armor consists of power armor and the helmet, robes are replaced by jail suit and etc. Fixed animation playing during creating the new character in single mode. Added skin change processing in start intro and after Kitty’s haircut. Added skeleton’s skins. Added sound for men and women. Fixed sound name for critters parameter’s loading (CritterTypes.cfg, SoundName). Now characters walk slowly with double click if alwaysrun option is turned on. Rev.106 http://www2.xp-dev.com/sc/change/94227/106 Added ability to make 3d characters available to play for. To enable it (it is disabled as default) - comment certain strings in _defines.fos // #define PLAYERS_3D // Enable 3d players // #define PLAYERS_3D_NO_HEAD // No head slot // #define PLAYERS_3D_VAULT_SUITE // Vault suite by default, not naked Updated mechanism of working with ini files. Now, when searching for the keys, excess spaces and tabulations are skipped (now you can type “ key = value ”, previously was correct only variant “key=value”) Added function bool AppendIfaceIni(string& iniName), which enables additional ini files. If the name includes slashes, than the search is being performed from data root, if not - than from folder data/art/interface/. default.ini is added automatically by the engine, others you can enable in start() client function. Loading is performed sequentially from default.ini to ones enabled by user by turn. Every packed file is checked by the turn of loading, then in the folder. Global variable string __UserInterface was deleted. Fixed bug with incorrect parsing of animation indexes in fo3d file. Fixed bug with incorrect position of the egg of transparence in zoom mode. For better readability the next scripts were formatted: start_server_client.fos client_main.fos In the future this practice will be continued. Rev.105 http://www2.xp-dev.com/sc/change/94227/105 Documentation update - slight fixes. Rev.104 http://www2.xp-dev.com/sc/change/94227/104 Added structure of script array (ScriptArray) to native scripts. Added ability to client's native scripts of calling hex data - Field. Data is stored in Field* GameOptions::ClientMap, uint GameOptions::ClientMapWidth/ClientMapHeight. If map is loaded, than ClientMap != NULL, hex calling - ClientMap[hexY * ClientMapWidth + hexX]. Rev.103 http://www2.xp-dev.com/sc/change/94227/103 Added always run option - can be enabled in client's config file “AlwaysRun”. Disabled as default. Added global variables for AlwaysRun regulating: bool __AlwaysRun (as default - false) - enabling AlwaysRun ability; uint __AlwaysRunMoveDist (as default = 1) - run with click, if distance is equal or more than the value; uint __AlwaysRunUseDist (as default = 5) - run with using smth/dialogue/etc, if distance is equal or more than the value. TLA's mechanics is equal to original - always run with click, always run with using if distance is more than 4 hexes. Added parameter uint Critter::ItemTransferCount to native scripts. It stores the value of transferred items during the last transaction. Rev.102 http://www2.xp-dev.com/sc/change/94227/102 Optimized server operation (script calling) in one tread operation mode, performance increased up to 400%. Fixed bug with crash when calling Critter::Say* methods with parametr SAY_SAY_TITLE. Rev.101 http://www2.xp-dev.com/sc/change/94227/101 Changes in fo3d format, new specification was created - look this theme: http://www.fonline.ru/forum/showthread.php?t=19689 New format added new abilities of working with 3d objects - trasmission of texures, other paremeters, etc. Also added ability to render certain animation to sprites as for one frame, either for the whole animation. But the bug with cutting off the shade situated below the lowest edge of model still presents. Updated old fo3d files, also VanBuren's critters and weapon models were added. Changed effects structure, added effect for normal mapping (3D_NormalMapping.fx). Added transfer of real numbers through scripts, float __EffectValue0..9. Fixed bugs with loading 3ds files - miss of meshes except the first; crash if texture coordinates are not presented. Fixed bug in Mapper with data copying when copy-pasting a large number of objects. Fixed text centering of hexes amount in zoom mode. Rev.100 http://www2.xp-dev.com/sc/change/94227/100 Documentation update. Rev.99 http://www2.xp-dev.com/sc/change/94227/99 Updated documentation file, which was missed in the previous revision. Rev.98 http://www2.xp-dev.com/sc/change/94227/98 Added resourse gathering system; Documentation updating. Rev.97 http://www2.xp-dev.com/sc/change/94227/97 Fixes of "Night is tender" quest, now healing must work properly. Added preview from global map for GECK location. Rev.96 http://www2.xp-dev.com/sc/change/94227/96 Gecks counting on the location now affects its auto moving away and visibility separately; Parameter geck_enabled (Map::GeckEnabled) renamed to geck_visible (Map::GeckVisible). Rev.95 http://www2.xp-dev.com/sc/change/94227/95 Added global server function void SetChosenSendParameter(int index, bool enabled) which can denie transmitting parameters to client. Transmitting of all parameters is enabled by default. Rev.94 http://www2.xp-dev.com/sc/change/94227/94 Fixes of sea encounter maps. Rev.93 http://www2.xp-dev.com/sc/change/94227/93 Added sea encounters; Added posibility of an encounter while travelling on air/water transport; Player always have possibility of cancellation water/air encounter and never gains experience for that; Bug fix in mapper with incorrect editing critter's parameters. Rev.92 http://www2.xp-dev.com/sc/change/94227/92 Fixed displaying rating in pipboy. In mapper additional indication of cut sprites was added to make lines, which are needed for correct interaction, visible. Rev.91 http://www2.xp-dev.com/sc/change/94227/91 Added traffic encryption between server and client. Rev.90 http://www2.xp-dev.com/sc/change/94227/90 Fixed choosing automatically cut sprites in zoom mode. Rev.89 http://www2.xp-dev.com/sc/change/94227/89 Added parametr DrawOrderOffsetHexY for shifting order of drawing lower (Y axis). This is an analogue for recently deleted DrawPosOffsX. Fixed using car trunk. Different slight fixes. Rev.88 http://www2.xp-dev.com/sc/change/94227/88 Fixed exit from Redding; slight fixes. Rev.87 http://www2.xp-dev.com/sc/change/94227/87 Fix for weapon AP cost. Rev.86 http://www2.xp-dev.com/sc/change/94227/86 May be fixed bug with incorrect displaying of some tiles. Fixed bug with unworking elevators. Added restoration of effects when loosing a device (cause crashed e.g. with alt+tab) Rev.85 http://www2.xp-dev.com/sc/change/94227/85 Fixed bug with chat disappearing. Fixed AI bug when combat plans always finished with REASON_CANT_WALK. Rev.84 http://www2.xp-dev.com/sc/change/94227/84 Fix for DT params reading. Rev.83 http://www2.xp-dev.com/sc/change/94227/83 Safety checks for radio commands. Rev.82 http://www2.xp-dev.com/sc/change/94227/82 Fixes of some dialogues; translations of dialogues on Barterground; map fixes; fixes of encounter table; slight fixes. Rev.81 http://www2.xp-dev.com/sc/change/94227/81 Fixed another bug during moving on the global map. Fixed unplanned activating of b/w effect. Rev.80 http://www2.xp-dev.com/sc/change/94227/80 Fixed teleportation bug during moving on the global map. Rev.79 http://www2.xp-dev.com/sc/change/94227/79 Fixed bug with incorrect tear and wear and fuel consumption calculation during moving on the global map by car. Rev.78 http://www2.xp-dev.com/sc/change/94227/78 Fixed brightness output. Fixed outlining activation. Rev.77 http://www2.xp-dev.com/sc/change/94227/77 Added automatic sprite cutting. Main purpose – correct displaying of long walls. Parameter SpriteCut was added to prototypes and mapper (only for scenery) for modification. Cutting values: 0 – switched off, 1 – horizontal (X axis), 2 – vertical (Y axis). Wall blocks should be set manually , for that purpose six blocks with different corner types with visual indication were added. It is necessary for correct calculation of brightness and egg of transparence reaction. Numbers 6800..6805 at the end of Wall and Fast list. Fixed client instability after recent update. Primary indexes array for animations was expanded to the range ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789. For value changing use native means (structure CritterType in fonline.h). Support of effects (HLSL) loading with earlier version of compiler. Automatic attempt of compilation is performed after failure in compilation with the current library. Added data updating for client function GetIniStr in the start function (start) after each call of LoadDataFile. Mapper update: Fixed bug with error in loading tiles with extension not in lower case. Fixed algorithm of sprite displaying calculation (when big sprites were disappearing near the screen edge). Additional visual means for debugging: - Ctrl + Q: Corners type viewing; - Ctrl + W: Viewing the result of sprite cutting, linking them to hexes; - Ctrl + E: Viewing the sequence of sprites drawing. At the time of renewing NPC’s bag, only items which are not in inventory are repaired and reloaded. Added ability to set sprite shift in screen coordinates to prototypes. Fixed bug with double notification of quest state change. Rev.76 http://www2.xp-dev.com/sc/change/94227/76 Added quest “Night is tender” Rev.75 http://www2.xp-dev.com/sc/change/94227/75 Tables for sea encounters, slight fixes. Rev.74 http://www2.xp-dev.com/sc/change/94227/74 Source documentation. Rev.73 http://www2.xp-dev.com/sc/change/94227/73 SPECIAL calculating is moved to native scripts - fonline_tla.dll for server and fonline_tla_client.dll for client (must be situated in data\scripts). The other parameters which are used in the engine are needed generally for drawing GUI, but soon they’ll be moved to scripts too. Native scripts files are moved from data folder to scripts. Added bat-file make_tla.bat for their compilation (installation of MSVS8 is necessary). For example of use new methods for critter classes are added (IsInjured, IsDmgArm...), items (IsHtHAttack, IsGunAttack...) with pragma bindfunc. Example of linking global varieties of standard and native scripts is added (__HitAimEyes, __HitAimHead..., these global varieties are moved to scripts). Callback functions are added (to GameOptions) for item usage cost determination - GetUseApCost. For attack max range determination - - GetAttackDistantion. It further such functions will force out usage of critter parameters in the engine. These functions are binded at the stage of connecting of library to the engine (DllMainEx). For operating with the engine added the next functions (to GameOptions): CritterChangeParameter – for correct change of critter parameter, this function should be called firstly, then you can change the value. CritterTypes – index of CritterType structures where data from CritterTypes.cfg is stored. Added method to client’s critters for detection whether now is time of its move in the turn-based mode bool CritterCl::IsTurnBasedTurn() const Some logics of operating with turn-based mode is moved to the scripts - turn_based_process main.fos. Some recommended specifications for the reserved functions are changed - templates.fos. Min. time of dialogue or barter with NPC now is regulated by the global varieties __DlgTalkMinTime (now default 100 seconds) и __DlgBarterMinTime (now default 50 seconds). Range for all prototypes (maps, locations, items) is expanded to 30000. Fixed bug with incorrect drawing of minimap in the pipboy. Fixed bug with incorrect calculating of healing rate while registration. Fixes of Zerg’s special encounter. Rev.72 http://www2.xp-dev.com/sc/change/94227/72 Data library for script compilation (updated on 27 October) Rev.71 http://www2.xp-dev.com/sc/change/94227/71 Added Zerg special encounter. Fixed bug with incorrect names in Fixboy. Added function LoadDataFile to server scripts, analogue of client/mapper. Fixed mistiming of player movement on global map. Deleted function Critter::SendQuestVar, now alert about changing of local variable is automatic. Changed function specification void ShowScreen(int screenType, uint param, string& funcName) to void ShowScreen(int screenType, uint param, string@+ funcName), now can transmit both empty string or null. Rev.70 http://www2.xp-dev.com/sc/change/94227/70 Documentation is updated. Deleted incorrect splash-picture. Added urgent files for scripts autoaddition in Notepad++. Rev.69 http://www2.xp-dev.com/sc/change/94227/69 Added ability to use your own shaders for game graphics drawing. High Level Shader Language is used for this. Effects folder is situated in data\effects. After the first compilation they are cashed in the folder data\cache (in futher other different data will be cashed there). You can read specifications on the game engine effects in data\effects\ReadMe.txt. Added ability to link any effect to sprite or model in .fofrm and .fo3d (“effect=effect_name.fx”). For default effect changing, function void SetEffect(int effectType, int effectSubtype, string@+ effectName) was implemented into the client scripts. int effectType, effectSubtype – effect types look in _client_defines.fos (Subtype for fonts used font type); string@+ effectName – the name of the effect file (with extension) is in the folder data\effects. Added changing of detailization of game objects for demonstration. For activation press Alt+W, for return press Alt+Q. Added client function for map redrawing void RefreshMap(bool onlyTiles, bool onlyRoof, bool onlyLight) if all three parameters are false, than everything will be redrawed. Also these three parameters are incompatible. Fixed bug in mapper with impossibility of viewing 3d critters in prototypes table. At present time they can’t be ranged. Added ability to play sounds/music from different folders. void RefreshMap(bool onlyTiles, bool onlyRoof, bool onlyLight) If there isn’t slashes (‘/’,‘\’) in path name than search is performed in the folder sfx/music. If there are slashes, than in the root (“data/mysounds/mysound.ogg”). Rev.68 http://www2.xp-dev.com/sc/change/94227/68 Fixed bug in the ObjectEditor when damage type is saved incorrectly. Rev.67 http://www2.xp-dev.com/sc/change/94227/67 Fixed crashing when calling CritterCl::[Param/Stat/Perk/etc]Base in client scripts; Fixed error with recording Anydata of zero length (by Atom). Rev.66 http://www2.xp-dev.com/sc/change/94227/66 Fixed incorrect weapon prototype; errors in checking for special encounters; added decraft of the sand sack to fixboy; other little fixes. Rev.65 http://www2.xp-dev.com/sc/change/94227/65 Redding: finished map according to the last concept; - Garbage was returned to static locations; - Ammo craft on benches (beta-version); - Destruction of the sack using skill repair now gives use empty sack. - Entering Den message was moved to texts from script. Rev.64 http://www2.xp-dev.com/sc/change/94227/64 AngelScript updated to 732 revision. Added new methods for arrays: void T[]::insertAt(uint, const T&) – element inserting in specified position in the array; void T[]::removeAt(uint) – deleting the element by index; void T[]::insertFirst(const T&) – element inserting to the beginning of the array; void T[]::removeFirst() – deleting the first element; void T[]::insertLast(const T&) – element inserting to the end of the array; void T[]::removeLast() – deleting the last element; void T[]::grow(uint) – add elements (the sames as a.resize(length()+X)); void T[]::reduce(uint) – delete elements (the same as a.resize(length()-X)); T& T[]::first() – call of the first element of the array (the same as a[0]); T& T[]::last() – call of the last element of the array (the same as a[a.length()-1]). Also deleted all functions ArrayPushBack as the built-in array functional was expanded. All the scripts were fixed accordingly. Rev.63 http://www2.xp-dev.com/sc/change/94227/63 Added ability to start the server as a service. For registration/start use key “-service” (shortcut FOServerService.exe.lnk). For deleting use keys “-service -delete” (shortcut FOServerServiceDelete.exe.lnk). Added ability to log using function OutputDebugString. The log can be caught (even remotely) using program DebugView http://technet.microsoft.com/en-us/sysinternals/bb896647.aspx For switching it on in server and client configs option LoggingDebugOutput is added. Server/client/mapper will work normally now with incorrect active folders. At start you set the current folder of executable. Fixed bug with absence of replacement “x” by “ч” in built-in punto switcher. Fixed crash in turn based mode and incorrect work of Map::GetCritter(uint critterId). Rev.62 http://www2.xp-dev.com/sc/change/94227/62 Fixed bug with updating vehicle data on the global map. Fixed bug with system hanging while looking items quantity in game info. Fixed bug with the incorrect login/disconnect. Fixed bug with incorrect creating non-stacking items on the map in the number of >1. Fixed bug with incorrect critters gathering when path tracing (by Atom). CRITTER_EVENT_TALK now performed before checking NPC for settings which could restrict speaking with it. Added new mechanism for script garbage gathering (by Atom). For config file simplification, the next options were removed: ASGarbageTime, VarsGarbageTime. Deleted transfer of a group of critters into global map processing global_process, CRITTER_EVENT_GLOBAL_PROCESS. Also instead of transferring a group into global map processing global_invite, CRITTER_EVENT_GLOBAL_INVITE, now only the leader is transferred. Instead of picking group use Critter@[]@ Critter::GetGlobalGroup(). Because of that, specification methods were changed: bool Critter::EventGlobalProcess(int type, Critter@[]& group, ...) bool Critter::EventGlobalInvite(Critter@[]& group, ...) for bool Critter::EventGlobalProcess(int type, Critter& cr, ...) bool Critter::EventGlobalInvite(Critter& leader, ...) Reserved functions of critter event CRITTER_EVENT_GLOBAL_PROCESS, CRITTER_EVENT_GLOBAL_INVITE bool _FuncName(Critter& cr, int type, Critter@[]& group, ...) bool _FuncName(Critter& leader, Critter@[]& group, ...) for bool _FuncName(Critter& cr, int type, ...) bool _FuncName(Critter& leader, ...) Fixed bug with incorrect cooldown for hijacking, now it is equal for a normal lock. Added checking for unopenable door to the lock break script. Rev.61 http://www2.xp-dev.com/sc/change/94227/61 Fixed bug with incorrect reappraisal of item flags in Mapper. Fixed bug when player isn't notified about moved item. Rev.60 http://www2.xp-dev.com/sc/change/94227/60 Fixed bug with incorrect displaying of the rain on roofs. Rev.59 http://www2.xp-dev.com/sc/change/94227/59 Mapper's fix for correct operating with new folder and print's names. Rev.58 http://www2.xp-dev.com/sc/change/94227/58 For editing use program Bitmap Font Generator v1.12. http://www.angelcode.com/products/bmfont/ Print should have the next attributes - OEM RUSSIAN, Padding 1 (in all directions), Binary, all symbols should be placed on the one texture. All prints are moved in the separate folder “Client\data\fonts\”. For the example print FONT_COURIER_NEW_SMALL is added. Look _client_defines.fos, client_main.fos, CourierNewSmall.bmfc, CourierNewSmall.fnt, CourierNewSmall_0.png. Added function in client’s scripts of activating the clock which shows you the time signal comes to server and returns (ping). You can use it for restriction of input while waiting for server’s answer. Fixed crushing when looking players statistics on server. Fixed crushing of Dialogue Editor (by Atom). Rev.57 http://www2.xp-dev.com/sc/change/94227/57 Expanded mechanism of operating with ingame radio. Added flag ITEM_RADIO for radio. (in _defines.fos). Radio messages are now also sent to radios which are on the ground . For their identification engine sends them with color 0xFFFFFFFE (in map_message in client_main.fos). Realization is in script radio.fos (interface, mechanics), call from main.fos. Interface data is taken from default.ini (Radio*). You can edit it with using item or using science skill on it. Radio data is situated in general fields of several item types. That’s why it isn’t a good idea to use this flag with Doors, Keys, Cars, Weapons, Armors, Holodiscs. Transmitting and receiving functions are separated. For managing the next flags and range types are used (_defines.fos): Restriction of transmitting/receiving is stored in Item/ItemCl::RadioFlags, used by the engine: RADIO_DISABLE_SEND, RADIO_DISABLE_RECV. Restriction of switching radio state in в Item/ItemCl::RadioFlags: RADIO_DISABLE_SHIFT_SEND, RADIO_DISABLE_SHIFT_RECV - restriction of switching transmit/receive; RADIO_DISABLE_SHIFT_BC_SEND, RADIO_DISABLE_SHIFT_BC_RECV - restriction of changing distance range; RADIO_DISABLE_SHIFT_CHANNEL – restriction of channel switching. Range types are stored in Item/ItemCl::RadioBroadcastSend/RadioBroadcastRecv, are used by the engine: RADIO_BROADCAST_WORLD – works all over the world; RADIO_BROADCAST_MAP – works within the limits of the current map; RADIO_BROADCAST_LOCATION - works within the limits of the current location; RADIO_BROADCAST_ZONE(x) - works within the limits of “x” zones on the global map; RADIO_BROADCAST_FORCE_ALL – works everywhere regardless of the adjustments of transmitting or receiving radio/ Added support of these flags to the object editor (both engine and script ones). Added scripts uint16 ProtoItem::RadioChannel, uint16 ProtoItem::RadioFlags, uint8 ProtoItem::RadioBroadcastSend, uint8 ProtoItem::RadioBroadcastRecv. For holodisc marking added flag ITEM_HOLODISK (in _defines.fos). Holodisc data is situated in general fields of several item types. That’s why it isn’t a good idea to use this flag with Doors, Keys, Cars, Weapons, Armors, Holodiscs. Added support of this flag in object editor. Added script uint ProtoItem::HolodiskNum. Added ability to use built-in cartridge indicator for other purposes. Added the next parameters: uint8 ProtoItem::IndicatorStart – initial value, - Item/ItemCl::Indicator; uint8 ProtoItem::IndicatorMax – maximum available value (for correct calculation of the strip position); uint8 Item/ItemCl::Indicator – current value. Mechanism is considered activated if maximum value in the prototype isn’t equal to zero. Added support of editing of initial and maximum values in the object editor. Method Item::GetMapPosition for the items which are in the global map returns their coordinates. Fixed bug with system hanging while looking online statistics. Added storing up to 20 ip addresses for one account (fonline.h). Item prototype’s fields, which are equal to zero, now cannot be saved. All prototypes are resaved. Continued working on multithreading in game logics. Added ignoring of non-initialized maps or locations while loading save (NPC’s would be moved to global map, items - deleted). Fixed bug in the dialogue on BiX location. Updated abilities of GUI scripting. In script _defines.fos notes “Used in engine” are replaced by “Hardcoded”; point is the same - to show that this data is used by engine also. Corrected some specifications in template.fos of reserved functions. Rev.56 http://www2.xp-dev.com/sc/change/94227/56 Changes in craft: some new recipe's (new weapon, etc.), added workbenches in some town/military bases. Rev.55 http://www2.xp-dev.com/sc/change/94227/55 - Updated Redding maps; - Deleted unused graphics; - Added second entrance to NCR; - Some changes in NPC's inventories on encounters. Rev.54 http://www2.xp-dev.com/sc/change/94227/54 - Slight fixes in Hartman's and Shrim's dialogues (Vault City); - Fixed problem with immediate sending off caravans/patrols Ahe9mPDq; - Changed content of the quest variable for the quest "Third trial. Drill." - Restored functions for triggers t_DialogNpc and scenery s_TransitToMap. Rev.53 http://www2.xp-dev.com/sc/change/94227/53 Fixes of KotW location. Quest for oil can can be done by everybody in Arroyo now. Rev.52 http://www2.xp-dev.com/sc/change/94227/52 Fixes of Brok and Xander Church location (by VaultTec) Rev.51 http://www2.xp-dev.com/sc/change/94227/51 Fixed names loading (*Names.lst) with the dialogue editor. Changed extention of its config file. Rev.50 http://www2.xp-dev.com/sc/change/94227/50 Fixed bug with duplicating of time events. Rev.49 http://www2.xp-dev.com/sc/change/94227/49 Slight optimization of multi-threading. Rev.48 http://www2.xp-dev.com/sc/change/94227/48 Fixed error in loading of games variables values. Fixed loading of saves games in single player mode. Rev.47 http://www2.xp-dev.com/sc/change/94227/47 Time events changes. - function specification void EraseTimeEvent(uint num) changed to bool EraseTimeEvent(uint num) Return value shows whether deleting is done or the event isn't found. - Deleted the next functions: uint CreateTimeEvent(uint beginSecond, string& funcName, Critter& cr, bool save) uint CreateTimeEvent(uint beginSecond, string& funcName, Item& item, bool save) uint CreateTimeEvent(uint beginSecond, string& funcName, Critter@[]+ critters, Item[]@+ items, bool save) For migration just put the identificator to the critter or item. Added the next functions for operating with event's values: bool GetTimeEvent(uint num, uint& duration, uint[]@+ values) bool GetTimeEvent(uint num, uint& duration, int[]@+ values) bool SetTimeEvent(uint num, uint duration, uint[]@+ values) bool SetTimeEvent(uint num, uint duration, int[]@+ values) Parametr "duration" - time till the event is done in seconds. Return value means that operation is completed, error means that event wasn't found. These functions are thread-safe, 2 thread can't operate with the events simultaneously. Function GetTimeEvent blocks using (changing) of the event until the script is finished or until SetTimeEvent is called, which unblocks the event. GetTimeEvent writes value to the end of the array, SetTimeEvent rewrites it completely. When null is transmitted to values SetTimeEvent values are not changed. - Event function specification can be of two types now: uint e_FuncName(uint[]@ values) uint e_FuncName(int[]@ values) Fixed bug with crashing while loading 3ds file without texture coordinates. Rev.46 http://www2.xp-dev.com/sc/change/94227/46 Added next fuctional for operating with files (class "file"): - for data reading uint8 file::readUint8() uint16 file::readUint16() uint32 file::readUint32() uint64 file::readUint64() In the case of error or the end of file it returns 0. uint file::readData(uint count, uint8[]& data) If data == 0 then program read all data till the end of the file beginning from the current position. Read data is added to the end of the array. The return value shows the real amount of read bytes. - For data recording bool file::writeUint8(uint8 data) bool file::writeUint16(uint16 data) bool file::writeUint32(uint32 data) bool file::writeUint64(uint64 data) bool file::writeData(uint8[]& data, uint count) If count == 0 it records all data from an array. In the case of error it returns false. Fixed bug with incorrect output of zoom value on minimap. Rev.45 http://www2.xp-dev.com/sc/change/94227/45 Extended range of game variables: - local variable of location (LLVAR_); - local variable of map (LMVAR_); - local variable of item (LIVAR_). When using them in dialogue values are taken from: for location - current critter's location; for map - current critter's map; for item - current item in the main slot. For operating with scripts use function GetLocalVar with transmitting of needed operator. Server will delete unused variables of all types automatically. Deleted server function uint DeleteVars(uint id). Dialog editor was adapted to the last updates of game variables. Added ability to define named value (DefineNames.lst) as a value for conditions and results. Added missed translations. Translations of commit history you can find here: http://www.xp-dev.com/forum/topic/3220 Rev.44 http://www2.xp-dev.com/sc/change/94227/44 Updated format of time output in dialogue with repairer-npc; Added script for realization of npc-travellers on global map.(traveller.fos and Davine's script in sf_common.fos); Added npc-traveller explosives-seller Davine. Can be hired in GECK town; Added trade mode "cash only" MODE_BARTER_ONLY_CASH; Fixed bugs in maps structure on maps with holodiscs. Rev.43 http://www2.xp-dev.com/sc/change/94227/43 Added setting in config which defines whether to bind logic threads to the core or let OS do it. In default it is enabled (1) 1. If zero then operating system automatically manage threads between cores, else affinity thread per core LogicThreadSetAffinity=1 Continued work on multi-threading of game logics. Rev.42 http://www2.xp-dev.com/sc/change/94227/42 Fixed crashing under certain conditions; Fixed cycle counting per second. Rev.41 http://www2.xp-dev.com/sc/change/94227/41 Fixed bug connected with the last update. Rev.40 http://www2.xp-dev.com/sc/change/94227/40 Multi-threading of game logics is now supported. You can read about this in details on the forum; Fixed path of recording/reading ban files; Added seconds on the globalmap clock; Decreased permissible length of text listener of channels and maps from 5 to 2 symbols; Deleted global server function void DeleteNpcForce(Critter& npc); Changed specification of method from uint Location::GetMaps(Map@[]& maps) const to uint Location::GetMaps(Map@[]@+ maps) const Now you can know the amount of maps on the location without recording them into array; Added basic server command ~log (~37). It is intended for text listening of server log. Minimum access: administrator. For adding to text listening you should transmit arguement "+", for disconnecting "-"; Fixed basic creating locations command ~addloc (~16); Upgraded basic command of looking player's id using his name ~id (~4); Changed specifications of global functions void critter_attack(Critter& cr, Critter& target, ProtoItem& weapon, ProtoItem@ ammo, uint8 aim) -> void critter_attack(Critter& cr, Critter& target, ProtoItem& weapon, uint8 weaponMode, ProtoItem@ ammo) int to_hit(CritterCl& chosen, CritterCl& target, ProtoItem& weapon, int hitLocation) -> int to_hit(CritterCl& chosen, CritterCl& target, ProtoItem& weapon, uint8 weaponMode); Added variables for weapons which state their active mode const uint8 Item::Mode const uint8 ItemCl::Mode 4 high-order bits - sight (look Hit locations in _defines.fos), 4 low-order bits - mode (0 – primary, 1 – secondary, 2 – third); Added macroses for convenience _WeaponModeUse, _WeaponModeAim, _WeaponModeMake в _macros.fos; Added returnable value of the current mode in method GetSlotProto (urgent for weapons) ProtoItem@+ Critter/CritterCl::GetSlotProto(int slot, uint8& mode) const; Renamed parametr #define ST_RATE_ITEM (102) to #define ST_HANDS_ITEM_AND_MODE (102) value stored in it: XXXX00YY, where XXXX pid - unarmed blow, and YY - mode. Changed way of the dialogue redirecting. You should use returnable value of result function or say-mode instead of uint __ForceDialog; Added specifications of functions: uint r_FuncName(...), uint dlg_FuncName(...) which are detected by server automatically; Fixed bug with moving pushed players only in one direction; Object pointers (derivatives arrays or class members)Location, Map, Critter, Item, GameVar can't be saved in global varities now. For scripts migration save their identificators (Location::Id, Map::Id, Critter::Id, Item::Id), addresing to the objects with (GetLocation, GetMap, GetCritter, GetItem). Weapons prototypes don't save curret mode of fire (in connection with multi-threading). Changed specifications of class members ProtoItem const uint8 Weapon_Skill, const uint8 Weapon_DmgType, const uint8 Weapon_Anim2, const uint16 Weapon_DmgMin, const uint16 Weapon_DmgMax, const uint16 Weapon_MaxDist, const uint16 Weapon_Effect, const uint16 Weapon_Round, const uint8 Weapon_ApCost, const uint8 Weapon_SoundId, const bool Weapon_Remove, const bool Weapon_Aim, const uint8 Weapon_CurrentUse, void Weapon_SetUse(uint8 use) const to const uint16 Weapon_Skill_F, const uint16 Weapon_Skill_S, const uint16 Weapon_Skill_T, const uint16 Weapon_DmgType_F, const uint16 Weapon_DmgType_S, const uint16 Weapon_DmgType_T, const uint16 Weapon_Anim2_F, const uint16 Weapon_Anim2_S, const uint16 Weapon_Anim2_T, const uint16 Weapon_DmgMin_F, const uint16 Weapon_DmgMin_S, const uint16 Weapon_DmgMin_T, const uint16 Weapon_DmgMax_F, const uint16 Weapon_DmgMax_S, const uint16 Weapon_DmgMax_T, const uint16 Weapon_MaxDist_F, const uint16 Weapon_MaxDist_S, const uint16 Weapon_MaxDist_T, const uint16 Weapon_Effect_F, const uint16 Weapon_Effect_S, const uint16 Weapon_Effect_T, const uint16 Weapon_Round_F, const uint16 Weapon_Round_S, const uint16 Weapon_Round_T, const uint16 Weapon_ApCost_F, const uint16 Weapon_ApCost_S, const uint16 Weapon_ApCost_T, const uint8 Weapon_SoundId_F, const uint8 Weapon_SoundId_S, const uint8 Weapon_SoundId_T, const bool Weapon_Remove_F, const bool Weapon_Remove_S, const bool Weapon_Remove_T, const bool Weapon_Aim_F, const bool Weapon_Aim_S, const bool Weapon_Aim_T Added special macros for convenience (Weapon in _macros.fos) _WeaponIsPrimaryAviable, _WeaponIsSecondaryAviable, _WeaponIsThirdAviable, _WeaponSkill, _WeaponDmgType, _WeaponAnim2, _WeaponDmgMin, _WeaponDmgMax, _WeaponMaxDist, _WeaponEffect, _WeaponRound, _WeaponApCost, _WeaponSoundId, _WeaponRemove, _WeaponAim, _WeaponModeUse, _WeaponModeAim, _WeaponModeMake Mapper updates: string@ MapperObject::PicMap/PicInv now return prototype's picturename if other isn't set up; Added const uint16 MapperMap::Width, const uint16 MapperMap::Height for storing current map sizes; Fixed function GetMapFileNames(...). Rev.39 http://www2.xp-dev.com/sc/change/94227/39 Slight fixes of quests in Den, Klamath Improved closed location in Redding Rev.38 http://www2.xp-dev.com/sc/change/94227/38 Slight fixes of quests from string "Guard"; Added services for guardsmen: doc. Troy can heal player; give stimpacks; Valery repairs items; Added universal repairing script for npc (repairer.fos). E.g. in the dialogue vc_valery.foldg 3 new special encounters with holodiscs; Several deleted functions from stdlib are returned. Rev.37 http://www2.xp-dev.com/sc/change/94227/37 Fix of calculating amount of dead NPC on location when necessity of attack is being determinated. Fix of amount loss allies counter when finishing the quest. Output of messages to log is disabled in quest “The drill”. Fix of limit of times amount quest “Dangerous hunt” can be done. Descriptions of deleted maps were returned, which made server restart impossible without saves clearing. Rev.36 http://www2.xp-dev.com/sc/change/94227/36 Fix of Hartman’s dialog. The wrong requirement was deleted. Rev.35 http://www2.xp-dev.com/sc/change/94227/35 New quests from string “Guard” in Vaultcity - Vaultcity guard. Third trial. Drill. - Easy walk. - Go there, don’t know where. - Dangerous hunt. - Diplomatic courier. Fix of caravan’s and patrol’s departure time. Relative departure time was substituted for absolute. Added ability of caravan’s instant departure from the dialog. Fix of items that were generated in encounters 0 in number. (It was impossible to throw out them) Fix of quest “Hub bibliography”. Player need 7 books to gain reputation instead of 6. Rev.34 http://www2.xp-dev.com/sc/change/94227/34 - Maps fixes - Fixed reaction of BG guards on explosives activation Rev.33 http://www2.xp-dev.com/sc/change/94227/33 - Graphics fixes - Non-used files were deleted - Original map of BG was returned Rev.32 http://www2.xp-dev.com/sc/change/94227/32 Private car parking in geck town is disabled till the problem with car boot is solved. Rev.31 http://www2.xp-dev.com/sc/change/94227/31 Added first quests of string “Guardsman”, VaultCity. (Clearing of server saves is needed) Added template for making quests-combats with npc. (fighter_quest.fos, e.g. “Guard. First trial.”) Added ability to take quest “Hub bibliography” again if player failed to finish it at previous time. Fixed incorrect condition in Dappo’s dialogue in quest “Lot of defective rifles”. Added verification of addressee in “Postman” quest, now player can’t bring letter to any npc of type stated in the letter. Rev.30 http://www2.xp-dev.com/sc/change/94227/30 Deleted not used MSG files - FOSCRIPT.MSG. Rev.29 http://www2.xp-dev.com/sc/change/94227/29 Updates of way of making records into log. Added ability to look the name of the thread which made a record. Option in config – LoggingThread. You can also turn on output in the server application using “Logging with thread”. Changed format of time output. Now it is not “time in ms”, but “hours:minutes:seconds:milliseconds”. Rev.28 http://www2.xp-dev.com/sc/change/94227/28 Fix and formatting. Rev.27 http://www2.xp-dev.com/sc/change/94227/27 Fixed mistakes in calculating karma in quest "Returning of the fugitive". Rev.26 http://www2.xp-dev.com/sc/change/94227/26 Changes on Church of Brok and Xander location: - fixed Preacher, Scientist, repairer Alechandro, Cook, Mickey dialogs; - quests work correctly now; - repairer Alechandro identifies items correctly; - ability to record the information about Church was added (after completing Preacher's quest). Rev.25 http://www2.xp-dev.com/sc/change/94227/25 Activating time of dynamite was fixed. Rev.24 http://www2.xp-dev.com/sc/change/94227/24 New algorithm of generating of pseudorandom variables was added (Mersenne twister). Previously was standart C algorythm srand/rand. Rev.23 http://www2.xp-dev.com/sc/change/94227/23 Energy barrier on the entrance of GECK town was improved. Rev.22 http://www2.xp-dev.com/sc/change/94227/22 Fixed client crashing on start. For preventing this bug in future the control system of versions of cashed scripts in the client has been added. Rev.21 http://www2.xp-dev.com/sc/change/94227/21 Fixed problem when it was impossible to add players to GECK town after removing them with option "Clear list". Rev.20 http://www2.xp-dev.com/sc/change/94227/20 Fixed cooldown of the Postman quest. Rev.19 http://www2.xp-dev.com/sc/change/94227/19 Wrongly deleted dialogs are returned. Rev.18 http://www2.xp-dev.com/sc/change/94227/18 Fixes Deleted not used files. Fixed errors when player removes child killer karma additional times. Fixed error with incorrect name of script of map_v15_village map. Added output of message of increasing trade skill when finishing “Farm vermins” quest to the log. Weakened the giant wasp in the quest in Modoc. Rev.17 http://www2.xp-dev.com/sc/change/94227/17 AngelScript was updated to rev.684, v. 2.19.2 Added global variables to the client: bool __ShowTile, __ShowRoof, __ShowItem, __ShowScen, __ShowWall, __ShowCrit, __ShowFast, __ShowPlayerNames, __ShowNpcNames, __ShowCritId. Deleted limit of min. time of using Map::SetLoopTime (it was 1 second). Fixed registration of the global variables of string type (pragma globalvar). Fixed using reserved global variables string type. Added global variables to mapper: string __ClientPath, __ServerPath. Deleted constant modificators in client from string CritterlCl::Name, CritterlCl::Lexems. Added variable CritterlCl::NameOnHead, which if is not empty, outputted above critter’s head. Rev.16 http://www2.xp-dev.com/sc/change/94227/16 Fixed reclearing of child killer status. Rev.15 http://www2.xp-dev.com/sc/change/94227/15 Fixes: - Fixed names of Giant Wasps and bugs in kills statistic; - Reduced requirements of amount of killed mobs and intelligence in Broken Hills quests (bh_marcus.fodlg, bh_super.fodlg); - Reduced requirement of intelligence for “Fresh blood” quest (vc_doctor_troy.foldg); - Fixed possibility of gaining experience multiple times in “Cabbage” quest in Modoc (mod_farmer_q.fodlg); - Player receives reputation in NCR for quest “True cowboy” even if only one Brahmin is brought (ncr_felix.fodlg); - Michael’s miniquest in NCR can be done by every player only once (ncr_michael.fodlg); - Added requirement of 16 level for “buggy” quest (ncr_ratch.fodlg); - Fixed amount of gaining experience when player rejects gratuity in “Postman” quest (q_mail_reciever.fodlg); - Fixed cooldown of “Postman” quest; - Cave mobs – spawn point near the exit grid was removed in the smallest cave; - Fixes of several dialogues in Vault City; - New quest – “Fugitive returning” – when finished, status “Child killer” is removed. Hubbologist in Redding bank offers this quest; - New quest “Farm vermines”. It is offered by Joe in Modoc (mod_joe.fodlg); - Fixed energy barrier in GECK town; - Added computer for breaking of energy barrier inside the town; - Added car lots for GECK town citizens (not more than 2); - Added ability of clearing of citizens list by town leader using the terminal. Rev.14 http://www2.xp-dev.com/sc/change/94227/14 Update for Notepad++ (Syntax_highlighting, autocomplete, function parameters hints) Rev.13 http://www2.xp-dev.com/sc/change/94227/13 First stable version.h3. Your title here...Rev.194 http://www2.xp-dev.com/sc/change/94227/194 Variable __MaxLifeLevelSoftCap was added, it determines hitpoints rise per level. If it is equal to 0, then there’re no limitations, otherwise when character gets level = __MaxLifeLevelSoftCap, he won’t get more hitpoints per level . (For TLA __MaxLifeLevelSoftCap = 36). Dialogue with pay off Redding caravan fails was fixed. Chemist dialogue in SF who sells chitin armor was fixed. Locks for chests on Syd and Nancy’s quest location are generated randomly for each map. Output of errors to log in hostile_location_quest.fos script was switched off. Function of determination access rights when passing Redding gates was fixed (previously invalid permissions were accumulating in persons who have access list). Quest “Drill” script was fixed, now excess records in AnyData are deleted correctly after passing or failing the quest. Item “Chitin armor recipe” was restored, it was deleted by mistake. Rev.193 http://www2.xp-dev.com/sc/change/94227/193 Russian text output into log was fixed. Error appearing on starting single mode with enabled server GUI was fixed. One more fix of client-server network interaction (attempt of fixing hangings while downloading chache). Rev.192 http://www2.xp-dev.com/sc/change/94227/192 Bug with visualisation of other playing movement was fixed. It appeared in 161 revision. Rev.191 http://www2.xp-dev.com/sc/change/94227/191 Operation with network interaction was optimized, the processor will be loaded less when sending large volumes of information (e.g. cache transmitting). Models, which are situated in separate folders, loading was fixed (slashes are replaces by dots). Rev.190 http://www2.xp-dev.com/sc/change/94227/190 Cache loading was fixed. Cache situation was changed on the client’s side and now a separate folder for cache is created for every server. DataFiles.cfg situation was fixed. For critters in Mapper with Cond == 3 (dead) now automatically parameter ST_REPLICATION_TIME is set to -1 (if it is equal to 0) i.e. nonreplicated. And for Cond == 2 (knockout) big cooldown for getting up is set. For “dictionary” class was added method uint keys(string@[]@ keys) const which returns all the keys and their quantity. Now it is checked for presence of palette with the same name with the FRM file which is loading. If there isn’t one, then default is used (like now). Rev.189 http://www2.xp-dev.com/sc/change/94227/189 Extra system for detecting launched client’s windows was added. Bug with impossibility of reading some files when one copy of client/mapper/server is launched. Check for ITEM_GAG on detection of finishing REASON_HEX_BUSY_RING plan (when critter is surrounded by impassable objects or critters) was added. Ground and roof tiles offset was fixed in FOnline geometry. Rev.188 http://www2.xp-dev.com/sc/change/94227/188 Support of graphic formats MOS and BAM from Ininity Engine (Boldur’s Gate, Icewind Dale, Planescape Torment) was added. It is possible to define the number of played cycle or frame. To define cycle’s number in file name parameters (“S”) – define its index and to define the frame add dash and frame’s index. Examples: fileName$5.bam – load fileName.bam with frames for cycle № 5; fileName$1-4.bam - load fileName.bam with frame № 4 with cycle № 1; fileName.bam - load fileName.bam с with frames for cycle № 0. Rev.187 http://www2.xp-dev.com/sc/change/94227/187 Some actions were performed to fix server's hanging up. Rev.186 http://www2.xp-dev.com/sc/change/94227/186 Some actions were performed to fix server's hanging up. Not adding function's name to log was fixed. Levelcap was removed in the scripts. Rev.185 http://www2.xp-dev.com/sc/change/94227/185 NO_LOOT and NO_DROP mode were switched off for the giant bugs. Rev.184 http://www2.xp-dev.com/sc/change/94227/184 In connection with porting the server (*nix and 64bit) the next changes were made: Operating with net was rebuilded. Libevent library is used. http://monkey.org/~provos/libevent/ http://en.wikipedia.org/wiki/Libevent http://ru.wikipedia.org/wiki/Libevent Operating with GUI was remade. FLTK library is used. http://fltk.org/ http://en.wikipedia.org/wiki/FLTK http://ru.wikipedia.org/wiki/FLTK Operating with threads was remade. Pthreads is used http://sources.redhat.com/pthreads-win32/ (Windows port) http://en.wikipedia.org/wiki/Pthreads http://ru.wikipedia.org/wiki/Pthreads Changes are serious and can cause unstable work. Memory leak when loading maps was fixed in server. Loading maps with items in containers/inventories in mapper was fixed. Don’t use mapper of 171-182 revisions for editing old maps. Now parameters values for critters in mapper are applies only if they are not equal to zero. Initially value is taken from defaults (from .fopro), then from the map’s data if !=0. Critter’s names in mapper are now taken only by prototype number without accounting dialogue’s number. Old specification of Log function which was changed in 174 revision was returned to native scripts. Server’s GUI now ‘Courier New’ type, option in config was deleted. Option for changing server’s window size and its elements was added GUI size modifier GUISize=0 E.g. if GUISize=-50 then server’s window and all its elements will be 50% smaller, if GUISize=30 then 30% larger. Log in server window is unrolled as defaults. Also, the information from the log can be copied and scrolling is stopped if it is focused. Client’s crashing when playing items animation was fixed. Paths make_tla.bat were converted to Visual Studio 2008 (9.0). Rev.183 http://www2.xp-dev.com/sc/change/94227/183 Lo Pan’s mercenaries call leader’s name correctly now. Nancy and Sid’s quest location now is deleted after leaving it (previously it wasn’t deleted and hanged in the memory). SF docs were excluded from NoPvP locations. Letters generation in Postman quest was fixed. Holodisk with combat robot’s video recordings can be given to Buster now. Shaneman’s documents now have description in “Diplomatic mission” quest. A dialogue between bar clients in outer Vault City was added (wipe is required). Mini quest “Seduce art” was added in Klamath (wipe is required). Rev.182 http://www2.xp-dev.com/sc/change/94227/182 NPC-travellers will no longer take dead characters to the global map. Atoll was removed from Eli’s destinations. Skill displaying when increasing it through the dialogue was fixed. The mistakes in the newcomer’s dialogues in “Anger” quest were fixed. The mistake in mercenaries script which caused the leaving the employer earlier was fixed. Rev.181 http://www2.xp-dev.com/sc/change/94227/181 Reading nicknames from ignor list file was fixed. Console command for adding a player to the ignor list was added ~ignore PlayerName. Rev.180 http://www2.xp-dev.com/sc/change/94227/180 Mechanism of reputation calculation was switched off due to its incorrect work. Now all the list will be visible, but will work correctly. Rev.179 http://www2.xp-dev.com/sc/change/94227/179 Network protocol bug which caused short hangs up was fixed. Client's script was fixed which could cause null parameter call. Rev.178 http://www2.xp-dev.com/sc/change/94227/178 Superfluous rifles on offer were fixed. Rev.177 http://www2.xp-dev.com/sc/change/94227/177 Game version increment. Rev.176 http://www2.xp-dev.com/sc/change/94227/176 Sequence of handlers calling was fixed MAP_EVENT_OUT_CRITTER, MAP_EVENT_IN_CRITTER now the first one is called initially, then the second On intro_init map static lighting was set. Group moving indication on the global map was fixed (previous update bug). Rev.175 http://www2.xp-dev.com/sc/change/94227/175 Console command ~globalmap was added. It moves player to global map. It works only on noPvP maps for players not in combat mode and with noPvP mode turned on. In caravans and travellers scripts functions of moving to final destination's map were updated. Rev.174 http://www2.xp-dev.com/sc/change/94227/174 Porting game to Linux was started. Also supporting of 64 bit platforms. Client’s native libraries are now transmitted automatically. They are stored in ‘Client/data/cache’. Folder with scripts ‘Client/data/scripts’ is not used anymore and was deleted. To the server’s folder library STLPort (http://www.stlport.org/) was added. Client’s libraries are now compiling with it’s help. It is connected with porting to other platforms. Additional methods of moving were added to critters in server scripts bool Critter::TransitToMap(uint mapId, uint16 hexX, uint16 hexY, uint8 dir, bool withGroup) bool Critter::TransitToMap(uint mapId, int entireNum, bool withGroup) bool withGroup – when moving from global map to local map, all the group will be moved. Regular TransitToMap (without bool withGroup) work as with withGroup == false. Previously they worked as как withGroup == true, what led to moving all the group when replicating, if dead critter was on the global map. 3d critters were switched off. For switching on see PLAYERS_3D in _defines.fos. Constants for operating with game constants were added(see 168 revision, http://www2.xp-dev.com/sc/change/94227/168). Specification for the reserved function Log in native scripts was changed. Now the first returned parameter is function’s name from which it was called. Rev.173 http://www2.xp-dev.com/sc/change/94227/173 Traders were added to Atoll and Redding. Barterground was moved to position 690:760 as it isn’t needed anymore in north-west region due to noPvP mode. Locations “BiX Church” and “Atom’s Church” were moved to special encounters class. Fixed rewards in some quests. Maps fixes. Biscuit on Modoc can be received only once now (as in Fallout 2). Rev.172 http://www2.xp-dev.com/sc/change/94227/172 noPvP mode was activated on some TLA maps. It will be used on the next TLA session. For switching it off on your server set global variable __NoPvpMaps=false; in script config.fos Ability of making a list of ignored players, it works similarly NameColorizing. It needs manual adding nickname of ignored player to IgnoreList.txt For refreshing the list of ignored players in game use console command ~ignorelist. Rev.171 http://www2.xp-dev.com/sc/change/94227/171 Derivative objects system for mapper was updated. When placing base object, all his derivatives are placed automatically. If one object from the group is being selected - all others are being selected too. If the prototype or position of the derivative object is changed, changes will be automatically applied by mapper or server when loading. For the example see cars, at the present time they have one derivative object – their trunk. Now when placing the car, it will be created automatically, also it will be moved with it and if base or derivative object is deleted, all the group will be deleted too. The system of moving selected objects in mapper was upgraded. Now in hexagonal system the selected objects will be moved without being tearing apart. Also the selected objects, when being moved, will stop at the map’s edge, so they won’t mix into a pile. The problem with detecting whether items in container belong to their inventory or container. Previously items were placing on the hex and if you place two containers on the same hex, all the items will stack in one container. Now it is fixed. Item::TrapValue initialization through mapper was fixed. If rewriting is performed on prototypes loading, alert is displayed. It was added for items and critters prototypes. In object’s structure in mapper was deleted field const bool Item_InContainer and added const uint UID, ContainerUID, ParentUID, ParentChildIndex Rev.170 http://www2.xp-dev.com/sc/change/94227/170 Now server doesn't block client's libraries while working. Previously you needed to stop the server to replace client's dll (Server/scripts/fonline_tla_client.dll). Rev.169 http://www2.xp-dev.com/sc/change/94227/169 Combined content of MASTER.DAT + CRITTER.DAT. Size - 201 MB! Rev.168 http://www2.xp-dev.com/sc/change/94227/168 Client and Mapper are no longer bounded with Fallout’s data files - MASTER.DAT and CRITTER.DAT. These files content is combined (excess data is deleted) and packed into fallout.dat (will be uploaded with the next update) and defined in DataFiles.cfg. Global variables string __MasterPath, __CritterPath were deleted. The configurator (FOConfig.exe) is updated accordingly fixes above. Critter’s lighting in the death moment and flat items lighting was fixed. To server/client/mapper scripts the next functions for operating with the constants (*Names.lst) were added: int GetConstantValue(int constCollection, string@+ name) – identifying constant’s value by the name; string@ GetConstantName(int constCollection, int value) - identifying constant’s name by the value; void AddConstant(int constCollection, string@+ name, int value) – adding separate constant to the collection; bool LoadConstants(int constCollection, string@+ fileName, int pathType) – loading/reloading the collection; int constCollection – collection’s number, see Constants collections in _defines.fos, also you can define your own collections; string@+ name – constant’s name; int value - constant’s value; string@+ fileName, int pathType – collection file’s name and folder path. Rev.167 http://www2.xp-dev.com/sc/change/94227/167 Bug with error of name/password in login menu if it exceeds 12 symbols was fixed. Screen centering on the player when loading map in right-angle geometry was fixed. Copying objects in Mapper from smaller map to the bigger one was fixed. Mapper hanging up when Sleep < 0 was fixed. Crashes when loading ART files were fixed. Principe of transparency defining with parameter ‘”t” was changed, now it isn’t equal to 255 – paletteIndex, but to max(R, G, B). Rev.166 http://www2.xp-dev.com/sc/change/94227/166 System of operating with items prototypes was updated (ProtoItem). Ability to add your own fields to proto class was added. New pragma ‘bindfield’ is used for this, e.g.: #pragma bindfield "const int ProtoItem::MyValue -> 400" it means creation of field MyValue of int type with offset 400 (considering thas int is 4 byte, it will occupy bytes 400, 401, 402, 403). Totally for user’s fields 500 bytes are available. Field is equal to zero as defaults, but it is possible to change the value by defining value (in the current case MyValue=111 or MyValue=SkillBigGuns) in proto file (.fopro), number (if it contains only numbers) or path to the file (it is identified by the presence of ‘/’ or ‘\’ symbols). For now fields which are not used by the engine are taken out to scripts, see _defines.fos Item prototypes fields. Changes in structure ProtoItem. All next methods are deleted uint8 GetType() const uint16 GetProtoId() const bool IsGrouped() const bool IsWeared() const bool Container_IsGroundLevel() const List of new fields which are registered in the engine (part of them is renamed, some were deleted) http://pastebin.com/8R4QkP3h The other fields are registered with #pragma bindfield in _defines.fos. Now all items can stack and wear out, for this Boolean fields are added to the prototypes bool ProtoItem::IsStackable bool ProtoItem::IsDeteriorable Item type ITEM_MISC_EX was deleted, it is combined with ITEM_MISC (miscex.fopro is deleted). Vehicles are taken out to separate type ITEM_CAR (car.fopro was added). Also now user can define any type numbers for the items. Former fields uint MiscEx_StartVal0..9 of the start values for Item::Val0..9 were moved to common area named StartValue0..9, and with these values Item::Val0..9 are initialized. Metod bool Item::IsCar() const was deleted, instead of it use GetType()==ITEM_CAR. The next methods are renamed bool Item::IsGrouped() const -> bool Item::IsStackable() const bool Item::IsWeared() const -> bool Item::IsDeteriorable() const The next fields are renamed uint16 Item/ItemCl::BrokenWear -> Item/ItemCl::Deterioration uint16 Item/ItemCl::CarDeteoration -> Item/ItemCl::CarDeterioration uint8 MapperObject::Item_DeteorationFlags -> uint8 MapperObject::Item_BrokenFlags uint8 MapperObject::Item_DeteorationCount -> uint8 MapperObject::Item_BrokenCount uint16 MapperObject::Item_DeteorationValue -> uint16 MapperObject::Item_Deterioration Mechanism of affiliated objects was moved for common use. Previously it was available only for vehicle’s trunk. One object can have up to five derivatives. Numbers of the derivative objects are defined in uint16 ProtoItem::ChildPid_0..4. By creation of base object, derivatives are created automatically. For now Mapper doesn’t create affiliated obkects automatically, but it will be fixed in further. For setting the place of situation, special field ChildLines_0..4 is used (former MiscEx.Car.Bag_0..1, see below by recording format). Also it is possible now to define automatic blocking for any objects, not only for vehicles – field BlockLines (former MiscEx.Car.Blockers). Recording format for Child/BlockLines – XYXYXY..., where X is direction number (0..5/7), Y is the amount of steps (1..9) in this direction (previously for vehicle’s trunk for another recording format - XXXX...). Maximum amount of steps for BlockLines – 50, for ChildLines – 6. For operating with derivative objects use methods Item@+ Item::GetChild(uint childIndex) const (бывшая Item@+ Item::CarGetBag(int numBag)) bool Map::CheckPlaceForItem(uint16 hexX, uint16 hexY, uint16 pid) const (bool Map::CheckPlaceForCar(uint16 hexX, uint16 hexY, uint16 pid) const) Fields renaming affected lots of scripts, be attentive. Old proto format is converted to the new one automatically, but Object Editor (ObjectEditor.exe) still operates only with old format. It will be fixed soon. To replication.fos and entires.fos scripts the influence of right-angled geometry was added. Script main_planes.fos is formatted as a separate module. All pragmas were move to the end of _defines.fos. Drop of FPS when switching on view/attack borders was fixed. Rev.165 http://www2.xp-dev.com/sc/change/94227/165 Fix for the ASCompiler. Rev.164 http://www2.xp-dev.com/sc/change/94227/164 Changed ASCompiler output format to “filename(linenumber) : message”. Such output is recognized by a number of IDEs and allow jumping to the code by a double-click on the output line. Rev.163 http://www2.xp-dev.com/sc/change/94227/163 Tabs management system was added to Mapper. Now one tab can have numerous subtabs. Tabs names and its filling is defined in mappers scripts. But some tabs already have initial filling. Item – items prototypes by defaults (items.lst); Tile – tiles by default, search is performed in ‘art/tiles/’; Crit – critters prototypes by defaults (critters.lst); Fast – displays often used objects, initial state is defined in scripts (InitializeTabs in mapper_main.fos); Ign – Ignore, shows ignored objects which are not shown on the map; Inv, Msg, Map – special tabs which have nothing to do with the mechanism, but it is possible to change its name throug TabSetName (see below). The tab can have subtabs only of one type – tiles, critters or items (displayed in priority order). For items and critters the subtab’s name is chosen by user, for the tiles it is performed automatically. The lowest subtab “all” contains all prototypes (or tiles) on a list above. For activation the menu of tab choosing – perform a double click on it. If positions are numerous then use mouse wheel for navigation (scroll speed: normal – 4, with pressed shift – 8, with pressed ctrl – 20, with pressed alt – 50). For tabs management use scripts, functions Tab* uint TabGetTileDirs(int tab, string@[]+ dirNames, bool[]+ includeSubdirs) uint TabGetItemPids(int tab, string@+ subTab, uint16[]@+ itemPids) uint TabGetCritterPids(int tab, string@+ subTab, uint16[]@+ critterPids) void TabSetTileDirs(int tab, string@[]+ dirNames, bool[]+ includeSubdirs) void TabSetItemPids(int tab, string@+ subTab, uint16[]@+ itemPids) void TabSetCritterPids(int tab, string@+ subTab, uint16[]@+ critterPids) void TabDelete(int tab) void TabSelect(int tab, string@+ subTab) void TabSetName(int tab, string@+ tabName) int tab – tab’s number (see Tabs in _mapper_defines.fos); string@[]@+ dirNames – folder’s names for tiles searching; bool[]@+ includeSubdirs – turn on search in subfolders; string@+ subTab – subtab’s name; uint16[]@+ itemPids – item’s prototype numbers array; uint16[]@+ critterPids - critters’s prototype numbers array; string@+ subName – tab’s name. Global variable was added bool __SplitTilesCollection = true It defines whether tiles should be divided into groups in the folders. The group is defined as a string in the file’s name before the first number (e.g. abc12.png - group abc), if the number is absent, then group is defined as '<other>'. In connection with these changes, the global functions are deleted uint GetFastPrototypes(uint16[]@+ pids) void SetFastPrototypes(uint16[]@+ pids) Other updates. Fixed incorrect work of server/client which caused some bugs. Global variable int __GeometryType was added to _defines.fos for the indication of chosen geometry. See constants in _defines.fos Geometry. Depending on its value, tab with Tactics and Arcanum is added. Ability to work with file names which include spaces is added. When loading ART files, it is possible to flip them vertical or horizontal. Parameters in the file name - ‘v’/‘V’ and ‘h’/‘H’. When loading SPR file, if you define in changing color parameter – layer’s number -1, then the modificator will be applied to all four layers. Rev.162 http://www2.xp-dev.com/sc/change/94227/162 Quest perks “Midnight Child”, “Nosderatu Blood” were added (Modoc, “Night’s tender”). Now new home position is set for NPC-travelers (Devin, Eli) when they enter new location. Female characters now can finish quest of removing childkiller status. Allies HP and resistances were increased in “Dangerous hunt” quest. Also a simple dialogue is added to them. The forged letter is now removed from the inventory when finishing quest “Forgery”. Edvin in Klamath tells with a popup phrase when starting gathering items. A delay was added to the prisoner giving the cues in “Ernst Telman” quest. Ability of intimidating the NPC visitor if it’s a woman was deleted in quest “Wrath”. Barcus now reacts with popup phrases to the futher meetings with the player who have done quest “Amnesty for Joshua”. Upon the receiving lieutenant rank of Vaultcity’s Guard, player is awarded with a black combat armor. In “Diplomatic Courier” quest time (24 hours) which Sheiman takes for the thoughts now is calculated correctly. Upon finishing this quest, player receives +1 reputation in NCR. Sell price of the buggy which player receives upon finishing the quest in NCR was set to zero. Dialogue launch when player uses an antidote in quest “Poisoned Regulator” in Redding was fixed. Players who gained Vaultcity citizenship now can trade with Randal with no restrictions. Reputation calculation in quests “Real Cowboy”, “Hub Bibliography” in NCR was fixed. If player refuses the reward in “Hub Bibliography” quest, he gains +2 reputation (was +1) when he delivers 5 books. Increasing raider’s resistances and skills every new attack on NCR was switched off. Ability of crafting and buying chitin armor was added. Giant beetles drop chitin. Items with ITEM_GAG flag deletion upon player’s death was fixed. Rev.161 http://www2.xp-dev.com/sc/change/94227/161 Ability to customize game geometry was added, either the support of isometric projection with quadrangles was. For customization use global variables bool __MapHexagonal – isometry type: true - hexagonal, false - quadrangular; int __MapHexWidth – hex width; int __MapHexHeight – hex height; int __MapHexLineHeight – hex line height; int __MapTileOffsX/Y – ground tiles offset; int __MapRoofOffsX/Y – roof tiles offset; int __MapRoofSkipSize – amount of hex per one roof tile (necessary for its correct hiding); float __MapCameraAngle – 3d model rendering angle; bool __MapSmoothPath – path smoothing when moving; string __MapDataPrefix – path and prefix for the geometry files. Operational sprites for geometry are situated in art/geometry/. Quadrangular isometry use 8 directions, hexagonal – 6. In script config.fos in function InitializeGeometry(), necessary adjustments for 3 games (Fallout1/2, Fallout Tactics and Arcanum) are added. This function can be called in server, client and mapper scripts, as all three of them need geometry information. Global variables uint __LookDir4, uint __LookSneakDir4 were added for 8-directional geometry. Fixed Tactics SPR files loading. Mode MODE_NO_TALK was added. It affects ability to talk and appearance of the icon in the context menu. Double click on hex, affecting avatar’s moving, was fixed. Creation of descriptions for critters prototypes (FODLG.MSG) with high identifiers was fixed. Image of elephant gun was added in 3d. Rev.160 http://www2.xp-dev.com/sc/change/94227/160 Fixed a bug with server and client communication. Fixed a bug with wrong sprites display. Rev.159 http://www2.xp-dev.com/sc/change/94227/159 Documentation's update, mistakes fixes. Rev.158 http://www2.xp-dev.com/sc/change/94227/158 Script start_server_client.fos was renamed to config.fos and now it isn't simply pasted into function start(), but presented as a separate module with function InitializeGame(). Macros for operating with time were moved from _macros.fos to separate module _time.fos. Slight fix of drugs.fos. Rev.157 http://www2.xp-dev.com/sc/change/94227/157 Errors messages in server log when operating with functions GetPlayerName/GetPlayerId were removed. Also GetPlayerName returns null now, if the player wasn't found. Bugs of reputation calculation were fixed. Rev.156 http://www2.xp-dev.com/sc/change/94227/156 Ability to affect the colors when loading Tactics sprites was added. To make color shift, define necessary values in file name’s parameters (“$”). Format: fileName$[index,r,g,b]animName.spr (can be any amount of shifts […]) where index – body part’s number (0 - miscellaneous, 1 - skin, 2 -hair, 3 - armor); r,g,b – color shift for the each component, can be negative Example: someSprite$[2,50,-30,-20]anim1.spr – load sprite someSprite.spr, with animation anim1 and hair’s color shift in RGB (50,-30,-20). Additional flags for operating with color’s shift were added for Tactics critters (_animation.fos, animation.fos). Use macros ANIM1_COLOR_SKIN(index), ANIM1_COLOR_HAIR(index), ANIM1_COLOR_ARMOR(index) for values defining. Index can take on value from 0 to 15, appropriate to it values of color shift look in array colorOffsets of animation.fos script. For ability testing you can use text function void ColorOffset(Critter& cr, int skin, int hair, int armor) in test.fos. Rev.155 Some native structures were fixed. Rev.154 http://www2.xp-dev.com/sc/change/94227/154 AngleScript is updated to revision 822. Ability of sorting is added to scripts arrays Ascending sort void array::sortAsc() void array::sortAsc(uint index, uint count) Descending sort void array::sortDesc() void array::sortDesc(uint index, uint count) For user’s classes sorting realize opCmp method http://www.angelcode.com/angelscript/sdk/docs/manual/doc_script_class_ops.html Vehicle animations on the global map and item’s animations in Mapper are fixed. Some points in operating with critter’s animations are fixed (animation.fos). Global variable __GmapActive is fixed. Global variable for setting min. offline time after that client will completely exit from the game was added. uint __MinimumOfflineTime = 180000; // 3 minutes Rev.153 http://www2.xp-dev.com/sc/change/94227/153 Additional constants for operating with Chosen's actions were updated (Get/SetChosenActions, for CHOSEN_USE_ITEM). Rev.152 http://www2.xp-dev.com/sc/change/94227/152 Additional constants for operating with Chosen's actions were added (Get/SetChosenActions). Rev.151 http://www2.xp-dev.com/sc/change/94227/151 Bugs with incorrect files's names path detecting were fixed. Rev.150 http://www2.xp-dev.com/sc/change/94227/150 3d models loading was fixed. 3d models rendering to sprites was fixed. Critters animations were fixed (death in 2d and 3d modes). Shift calculation for some models was fixed. SAY_DIALOG/SAY_APPEND mechanics was fixed. (by Atom) Server’s config loading in Mapper was fixed. (by Atom) File HashNames.lst was added to client. Names of files which contain parameters (‘$params’) should be entered in it. If you use such names in the prototypes, Mapper or scripts GetStrHash), then include this name to this list. Format of writing: [any number] [file’s name] [end of string] E.g. 0 art\scenery\BrazureFire$t.ART 0 art\scenery\BrazureFire$t3.ART In further it is possible to detect and transmit such names automatically, but for the present use this system. Roof disappearing if it is situated in odd hex in two axis. Rev.149 http://www2.xp-dev.com/sc/change/94227/149 Documentation was updated. Some fixes in Arroyo (Minoc’s quest about raiders). Usage mode was added for sledgehammer and supersledge (for resources mining). Guard lib was brought into common standard of scripts formatting. Rev.148 http://www2.xp-dev.com/sc/change/94227/148 Two reserved variables were added to HLSL effects float AnimPosProc – current animation’s per cent 0%..100%, [0,1); float AnimPosTime – current animation’s time in seconds. Client’s hanging under certain circumstances was fixed (e.g. receiving item’s data when player in process of moving between maps). Dump generation when closing server application without stopping was switched off. Generation of unnecessary messages to log in function animation_ animation.fos was fixed. Rev.147 http://www2.xp-dev.com/sc/change/94227/147 Parameters for critter’s movement controlling were added. Time for moving in milliseconds: #define ST_WALK_TIME (117) #define ST_RUN_TIME (118) Ability to move #define MODE_NO_WALK (539) #define MODE_NO_RUN (540) If these parameters are equal to zero, then data is taken from CritterTypes.cfg. Loading of some ART files was fixed (Arcanum). Ability of specifying special image processing was added. Palette elements will be transparent depending on its index in the palette (alpha = 255 – index). To chose this loading type - use symbol “t” (or “T”) in file name parameters. E.g. ‘filename$t.art’; also you can combine with palette, e.g. ‘filename$1t.art’. Ignoring of spec.symbol “/r” was additionally added for splitEx function. In functions void DrawSprite(... bool applyOffsets) if applyOffsets == true there were additionally added shifting of width/2 and height of the image. Unnecessary fo3d files were deleted. Palette influence for Arcanum critters was fixed. Rev.146 http://www2.xp-dev.com/sc/change/94227/146 One more fix of incorrect critter displaying. Rev.145 http://www2.xp-dev.com/sc/change/94227/145 Quest “Communicated” was added (Redding). Caravaneers phrases were fixed, now they tell correct departure dates. Quest “Honomer’s bodyguard” was added (San Francisco). Retina scanner in GECK town was fixed. Slight fixes of the hubbolog’s map in San Francisco. Special result function for skill rise calculation through a dialogue was added.(dialog@r_SkillUp) The script for quest locations creating was fixed (hostile_location_quest.fos), allies and enemies scripts now work correctly. Resetting of a quest variable when deleting the location was fixed. Script for realization a dialogue between several npc’s with popping up phrases was added. (npc_dialog.fos) Story line implementation was continued. Maps numeration in the location with mutants was fixed (quest string “Guardian”). Rev.144 http://www2.xp-dev.com/sc/change/94227/144 Critter’s hitpoints regeneration was moved to scripts, you can look realization in function critter_idle main.fos. Global function for critters sampling from the global map was added to server scripts. uint GetGlobalMapCritters(uint16 worldX, uint16 worldY, uint radius, int findType, Critter@[]@+ critters) Additionally to methods bool Map::GetNearEntireCoords(int& entire, uint16& hexX, uint16& hexY) const bool Map::GetEntireCoords(int entire, uint skip, uint16& hexX, uint16& hexY) const were added methods bool Map::GetNearEntireCoords(int& entire, uint16& hexX, uint16& hexY, uint8& dir) const bool Map::GetEntireCoords(int entire, uint skip, uint16& hexX, uint16& hexY, uint8& dir) const which return direction. Global variable which specifies if the password in the client’s login window should be hidden was added bool __HidePassword = true Incorrect critters creation in Mapper was fixed. Displaying of switching critter’s type 3d->2d on the client’s side was fixed. Rev.143 http://www2.xp-dev.com/sc/change/94227/143 Fixed critters loading in Mapper (141 revision's bug). Rev.142 http://www2.xp-dev.com/sc/change/94227/142 Fixed server loading (the previous revision bug). Rev.141 http://www2.xp-dev.com/sc/change/94227/141 Mechanism for identifying critter’s animation file name was added. Now you can operate with critter’s animations from Tactics and Arcanum without any conversions. All data files which you need for enabling one or another critters are cited in CritterTypes.cfg comments. The next critters were added to SDK: Humanoid, Behemoth, MTT, Pacification. They are repacked to the separate archive ftrobots.bos. But all available critters from Tactics and Arcanum are added to CritterTypes.cfg with correctly defined parameters for them (by Tabloid), so you can enable the needed data files and use the critters. All animations are transformed to the general appearance (ANIM2_2D*, ANIM2_3D* -> ANIM2*). The functional for operating with them is moved to scripts. In some places where these values are used, numeric literals are replaced by string constants, which description you can find in DefineNames.lst. Fixes were made in weapons prototypes (weapons.fopro) and fo3d templates for 3d critters from VanBuren (_VBHuman.fo3d, _VBMob.fo3d, _VBWeapon.fo3d). Now three sets of primary and secondary animations are used for critters, for three condition types – alive, knockout, dead const uint Critter/CritterCl::Anim1/2Life/Knockout/Dead (const uint Critter/CritterCl::Anim1/2 were deleted). These values are used for animations as default. Pay attention that Anim1 additionally is summed up with animation of the weapon in the active slot, bit-by-bit OR. It is necessary for assignation certain values on continuing basis (e.g. sitting, lying position). For changing these values the next method is used void Critter::SetAnims(int cond, uint anim1, uint anim2) int cond – defines the position to apply values to (COND_* in _defines.fos), if null it is applied to all three; uint anim1, anim2 – animation values. Deleted const uint8 Critter/CritterCl::CondExt Accordingly all COND_*_* for them are deleted. Now position is differentiated by the animations. In connection with it, the next methods specifications were changed void ToDead(uint anim2, Critter@+ killer) bool ToKnockout(uint anim2begin, uint anim2idle, uint anim2end, uint lostAp, uint16 knockHx, uint16 knockHy) void EventKnockout(uint anim2begin, uint anim2idle, uint anim2end, uint lostAp, uint knockDist) void EventSmthKnockout(Critter& fromCr, uint anim2begin, uint anim2idle, uint anim2end, uint lostAp, uint knockDist) uint anim2begin, anim2idle, anim2end – animations of the knockout begging, staying in it and coming to yourself. Standard macroses are defined for the transfer KNOCKOUT_ANIM2_DEFAULT, KNOCKOUT_ANIM2_STUNNED (in _animation.fos). Also Mapper operates now not with CondExt, but with Anim1/Anim2 for the current Cond. Global variables for client/mapper for defining combat mode animations were added uint __Anim2CombatBegin = ANIM2_BEGIN_COMBAT uint __Anim2CombatIdle = ANIM2_IDLE_COMBAT uint __Anim2CombatEnd = ANIM2_END_COMBAT The next reserved client/mapper functions were added (animation.fos): - string@ critter_animation(int animType, uint crType, uint anim1, uint anim2, uint& pass, uint& flags, int& ox, int& oy) Function which is called when loading necessary animation. Returned value - file’s path and name. int animType – critter’s animation type (new parameter which is set in CritterTypes.cfg); uint crType – critter’s type; uint anim1, anim2 – animation’s indexes; uint& pass – function call’s number, is changed by the user. If animation loading failed and this parameter was changed, then function will be recalled (in certain cases you should try to load different files for the one animation); uint& flags – flags, at the present moment two of them – to take the first or the last frame from the animation ( Anim loading flags in _animation.fos); int& ox, &oy – shifts for the animation, in pixels. - bool critter_animation_substitute(int animType, uint crTypeBase, uint anim1Base, uint anim2Base, uint& crType, uint& anim1, uint& anim2) If animation loading failed (and uint& pass wasn’t changed), then this function is called for animation substitute detection (e.g. left hook can be replaced by the right hook). true is returned if the substitute was found (engine also additionally checks if crType, anim1, anim2 were really changed), false – no substitute, animation won’t be loaded and played. int animType – see above; uint crTypeBase, anim1Base, anim2Base – base critter’s and animation’s type, which were at the start; uint& crType, &anim1, &anim2 - critter’s and the current animation’s type for the substitution - bool critter_animation_fallout(uint crType, uint& anim1, uint& anim2, uint& anim1ex, uint& anim2ex, uint& flags) As Fallout’s animations are still loaded by the engine (additional shifts calculation and animations pasting together is needed), for determining animations conformity this function is called, i.e. instead of critter_animation for fallout’s animations this function is called. true is returned if animation is presented, false – not. Method bool Critter::IsAnim3d() const is deleted, use instead of it the global function int GetCritterAnimType(uint crType) values look in Anim types _animation.fos. Critters actions sounds now are played in the scripts, in animation_2d/3d_process. New mechanism for sound file name identification was made, look PlayAnimSound in animation.fos. Critters prototypes were divided into fallout’s (fallout2.fopro) and TLA's (tla.fopro). Bug with roof’s non-transparency in Mapper was fixed. Name indication of chosen critter or tile prototype in mapper was added. Format fo3d now recognizes named constants DefineNames.fos, namely for modificators Mesh, Subset, Layer, Value, DisableLayer, DisableSubset, Texture, EffDef (для Dword), Anim, AnimSpeed, AnimEqual. Global server variable for determining call frequency was added GLOBAL_PROCESS_MOVE uint __EncounterTime = 5000 Global client variable for determining frequency of foolish trick animation call was added uint __CritterFidgetTime = 50000 is deleted using formula Random(__CritterFidgetTime, __CritterFidgetTime * 2) Item prototype’s parameter was deleted bool ProtoItem::Weapon_RequiresActivation now if animation doesn’t exist, it is just not played. Parameters uint16 MapperObject::Scenery_ToMapX/Y were deleted, in mapper also. Moving between locations is performed by entery points. In weapons prototypes types of action animations were substituted from numeric by string constants (accordance look in DefineNames.lst). Appropriate changes were performed in ObjectEditor. Client functions PlaySound andPlayMusic now return bool, signalizing if file was found or not. Global functions for server/client/mapper which return appropriate values from CritterTypes.fos were added uint GetCritterAlias(uint crType) string@ GetCritterTypeName(uint crType) string@ GetCritterSoundName(uint crType) Mapper’s scripts were moved to server’s scripts folder. Also the whole set of functions for operating with CritterTypes.fos was added to Mapper bool IsCritterCanWalk(uint crType) bool IsCritterCanRun(uint crType) bool IsCritterCanRotate(uint crType) bool IsCritterCanAim(uint crType) bool IsCritterAnim1(uint crType, uint anim1) int GetCritterAnimType(uint crType) uint GetCritterAlias(uint crType) string@ GetCritterTypeName(uint crType) string@ GetCritterSoundName(uint crType) Specifications of client’s reserved functions were changed animation2d_process, animation3d_process parameter bool animateStay was added to the beginning. It indicates if any action is performed now (false) or stand animation (true). Reaction for global map’s interface buttons pressing when the size of map’s area (GmapMap) covers the buttons area was fixed. Bug with incorrect loading/saving maps in which script’s or function’s name consists of spaces was fixed. Bug with potential server crashing when using AI_PLANE_MISC was fixed. Rev.140 http://www2.xp-dev.com/sc/change/94227/140 Some robots from Fallout Tactics (look the next revision). Rev.139 http://www2.xp-dev.com/sc/change/94227/139 The next quests were added in San Francisco: “Introduction into Hubbology”, “Hub’s justice”. Transport to Atoll is available for the players who are doing “Introduction into Hubbology” quest (npc is in the docs area of San Fracisco); Automatic transfer to the command center of GECK city citizens when entering the map was removed. Now citizens can choose spawn point. Quest location “Hubbologists laboratory” was added (author JunoReactor). Rev.138 http://www2.xp-dev.com/sc/change/94227/138 Arroyo: Quest “Evidence of Chosen’s death” was added (Todd Stewart); Two courier quests were added (Cassidy, Todd Stewart); Encounter fixes: Fixed bugs of the 120 revision; Fixed random encounters where normally aggressive npc’s didn’t attack after fighting with the other npc’s; Fixed bug with unlimited experience in Den; Fixed mistakes in NCR quests cooldowns; Slight dialogues fixes. Rev.137 http://www2.xp-dev.com/sc/change/94227/137 Ability to specify the layer of tiles/roof to organize correct query of displaying. Totally there can be 5 layers, from 0 to 4. You can switch between them with pressing shift and pressing appropriate key (from 0 to 4). Indication of the current layer is specified in the map’s supplemental information (in upper right corner). Specification of MapperMap AddTile/AddTileName methods was expanded, also layer parameter was added void AddTile(uint16 hexX, uint16 hexY, int offsX, int offsY, int layer, bool roof, uint picHash) void AddTileName(uint16 hexX, uint16 hexY, int offsX, int offsY, int layer, bool roof, string@+ picName) Functions for hash calculation by file’s name and inverse function were added to the native scripts const char* (*GetNameByHash)(uint hash); // Get name of file by hash uint (* GetHashByName)(const char* name); // Get hash of file name The functional for operating with the chosen’s actions was added to the client’s scripts. For taking or specifying the actions use functions uint GetChosenActions(uint[]@+ actions) void SetChosenActions(uint[]@+ actions) This array consists of blocks of seven variables, the first is the type, the other are the parameters. Values of types and parameters look in _client_defines.fos Chosen actions. Argument with the location was added to the reserved function for checking the entries into this location bool entrance_FuncName(Location& loc, Critter@[]& critters, uint8 entrance) The next events were added for critters CRITTER_EVENT_USE_ITEM_ON_ME bool EventUseItemOnMe(Critter& whoUse, Item& item) CRITTER_EVENT_USE_SKILL_ON_ME bool EventUseSkillOnMe(Critter& whoUse, int skill) In the calls stack it is situated between CRITTER_EVENT_USE_* and the global handler. That is CRITTER_EVENT_USE_ITEM for the player + CRITTER_EVENT_SMTH_USE_ITEM for those who can see the player. CRITTER_EVENT_USE_ITEM_ON_ME The global handler critter_use_item. and CRITTER_EVENT_USE_SKILL for the player + CRITTER_EVENT_SMTH_USE_SKILL for those who can see the player. CRITTER_EVENT_USE_SKILL_ON_ME The global handler critter_use_skill. The supplemental information (current hex, fps, etc.) in Mapper is presented in the upper right corner. Bug of 135 revision with transparent tiles when placing them was fixed. Data connected with unfinished mechanism of textured grid was deleted. Rev.136 http://www2.xp-dev.com/sc/change/94227/136 Maps converted to text format. Rev.135 http://www2.xp-dev.com/sc/change/94227/135 Now only text format is used for maps, it is binary only for loading. All maps are converted to the text format (they will be uploaded with the next revision). Extension of this format is “fomap”. To convert your own maps to the new format – execute in Mapper ““#ConvertMaps”, then you should manually or using Mapper set required values in Time, NoLogOut, ScriptModule, ScriptFunc fields, which values you can see in file Maps.cfg. File Maps.cfg is not used anymore, locations prototype numbers are defined opposite to their name in file Locations.cfg, as in the most cases the one map prototype is used for the one location. According to these changes, the next MapperMap methods are deleted: uint GetTile(uint16 tileX, uint16 tileY, bool roof) const void SetTile(uint16 tileX, uint16 tileY, bool roof, uint picHash) string@ GetTileName(uint16 tileX, uint16 tileY, bool roof) const void SetTileName(uint16 tileX, uint16 tileY, bool roof, string@+ picName) And the next are added: uint GetTilesCount(uint16 hexX, uint16 hexY, bool roof) const void DeleteTile(uint16 hexX, uint16 hexY, bool roof, uint index) uint GetTile(uint16 hexX, uint16 hexY, bool roof, uint index) const void AddTile(uint16 hexX, uint16 hexY, int offsX, int offsY, bool roof, uint picHash) string@ GetTileName(uint16 hexX, uint16 hexY, bool roof, uint index) const void AddTileName(uint16 hexX, uint16 hexY, int offsX, int offsY, bool roof, string@+ picName) Also the next fields are added: const int WorkHexX const int WorkHexY int Time bool NoLogOut string ScriptModule string ScriptFunc The next methods are deleted (as their technology is not good enough for now): string@ GetTerrainName(uint16 tileX, uint16 tileY) cons void SetTerrainName(uint16 tileX, uint16 tileY, string@+ terrainName). Function bool SaveMap(MapperMap@+ map, string& fileName, int pathType, bool text, bool pack) now looks as bool SaveMap(MapperMap@+ map, string& fileName, int pathType). The ability to transmit commands /text /pack when saving by the console is deleted respectively. Several functions for operating with map’s fields were added to mapper script (you can do this procedure simply editing necessary field in the map’s file with text editor): #MapTime value – map’s time in minutes; #MapNoLogOut value –possibility to log out on the map; #MapScriptModule moduleName – script, module’s name; #MapScriptFunc funcName – script, function’s name. Now it is possible to place lots of sprites on one hex. Be attentive, fallout’s tiles have the same size and if you place two tiles on the same hex, you won’t see it (only if you select it , it will be less transparent than the others). Take it into account when you place or copy-paste tiles. Function #ClearTiles can help you with this problem, it deletes superfluous tiles from the hex. So, if you operate with fallout’s tiles and you don’t need several tiles on the same hex, execute this script when you finish work. Also you can place tiles on every hex, not in two. Ability of shifting is added for tiles. To produce tile shift just make the same operations as switching between tiles, but additionally pressing shift. Also you can use the same shift procedure for items. To cancel shift, press Alt with Shift and move objects. Fixed 130 revision’s bugs. Fixed bug with absence of shifting in fofrm with one sprite. Fixed bug with error in loading sprites in scripts (LoadSprite), which caused several other bugs. Remained ini files were formatted. Rev.134 http://www2.xp-dev.com/sc/change/94227/134 Config was uploaded by mistake. Take into accont, don't use config file from 132 and 133 revisions, admin pass is "hh" there. Rev.133 http://www2.xp-dev.com/sc/change/94227/133 Redding maps fixed, quest NPC were added. Rev.132 http://www2.xp-dev.com/sc/change/94227/132 Fixed "Anger" quest, the missing dialogue was restored, now it can be finished. Added quest "Forgery". (VC, Linnet) Rev.131 http://www2.xp-dev.com/sc/change/94227/131 New quests "Anger", "Ernst Telman" were added. (VC, Linnet) Fixed bug in VC guard's AI scripts. Fixed mistakes in quest “Amnesty for Joshua” dialogues. Ability to cancel their service for mercs/companions was added if the owner exits from location to the global map. Rev.130 http://www2.xp-dev.com/sc/change/94227/130 Support of graphics files SPR, TIL, ZAR from Fallout Tactics was added. Support of data files BOS from Fallout Tactics was added (works as ZIP archieve). For loading certain animation from SPR files, state it in the name after “$” sign. E.g. loading CrouchAttackClubSwing animation from file Mutant.spr - “Mutant$CrouchAttackClubSwing.spr”. The first frame of first animation is taken without direction. Also, ability to set certain palette for ART files (graphics files from Arcanum) was added – state palette’s number (from 0 to 3) after “$” sign. E.g. to load dfmbnsba.art file with the second palette - “dfmbnsba$1.art”. First palette is taken without direction (that is 0). Operation with sprites was changed. Now all interface graphics (which is set in ini files) is represented not as one sprite, as continuously played animation. Functional for operation with currently drawn sprites on the map was added to the native client’s and mapper’s scripts. Structures: struct Sprite – displayed sprite; struct SpriteInfo – additional information about the sprite. Functions: Sprite* (*GetDrawingSprites)(uint& count); - currently drawn sprites, if no sprites (on the global, menu), then NULL is returned and count == 0; SpriteInfo* (*GetSpriteInfo)(uint sprId); - getting additional information about certain sprite; uint (*GetSpriteColor)(uint sprId, int x, int y, bool affectZoom); - getting pixel’s colour, with the ability of taking zoom into account; it isn’t available for 3d models yet; format - ARGB; bool (IsSpriteHit)(Sprite sprite, int x, int y, bool checkEgg); - test whether the point on the display matches with the current sprite with taking zoom, transparence and egg of transparence into account (optional). The reserved native global variable GameOpt was renamed to Game. Global variables int __MouseX, __MouseY for current mouse position indication were added. Function void GetMousePosition(int& x, int& y) was deleted. Indication of opened console bool __ConsoleActive was added to client’s scripts. Bug with memory leak when rendering 3d graphics to sprites was fixed. Rev.129 http://www2.xp-dev.com/sc/change/94227/129 Added ability to use robot-guards from Sierra as bodyguards (for those who had completed quest "No-sweat job" in Navarro) Added quest "Amnesty for Joshua" (VC, Amanda) Work of teleport on special encounter "Mad scientist's laboratory" was restored. Rev.128 http://www2.xp-dev.com/sc/change/94227/128 Second stable SDK assembly. For the purpose of decreasing repository's size, assemblies will be stored in another places. Links you can find in text files. Rev.127 http://www2.xp-dev.com/sc/change/94227/127 Quest "No-sweat job" in Navarro. Rev.126 http://www2.xp-dev.com/sc/change/94227/126 Mercenaries and companions mechanism (merc.fos) was updated. Now every companion has term of service. Companions don’t meddle in player’s showdowns with NPC’s. Fixed quest “Dip.Courier”. Now it can be finished. Fixed quest “Dock’s attack”. Now it can be finished after killing 5 giant insects. Added 3 new mercs for Lo Pan. Updates NPC-travellers mechanism (traveller.fos). The first NPC-traveller was added (eli.fos). Functions which cooldowns checkup for NPCs in dialogues were fixed. When character dies, all items with flag ITEM_GAG are deleted. Fixed cooldowns for quests “Hub bibliography”, “Sick Brahmin” and in the dialogue with dr.Klaus for stimpacks and first aid kits delivery. When NPC repairs an item, ammo is ejected. Script for NPC monologues realization was added. (monologue.fos) Rev.125 http://www2.xp-dev.com/sc/change/94227/125 Fixes of password encryption in the client's files. Rev.124 http://www2.xp-dev.com/sc/change/94227/124 Fixed bug with graphics loading in the previous update. Rev.123 http://www2.xp-dev.com/sc/change/94227/123 DAT2.1 (Arcanum) files support was added. ART (Arcanum) graphic format was added. Function for operating with strings splitEx was added. Principle is the same as in split, but empty elements are not included in the result array. Also spaces/tabs/string_hyphenation are deleted from the result elements. Examples: split(“A|B||D”, “|”) -> {“A”, “B”, "", “D”} splitEx(“A|B||D”, “|”) -> {“A”, “B”, “D”} split(“A| B\t\t||D| E|F ”, “|”) -> {“A”, “ B\t\t”, "", “D”, “ E”, “F ”} splitEx(“A| B\t\tC||D| E|F ”, “|”) -> {“A”, “B”, “D”, “E”, “F”} Additional DrawSprite functions for the client and mapper were added. You can transfer true with the last argument and as the result, the shift which is stored in the current file will be added to the sprite’s position. void DrawSprite(uint sprId, int sprIndex, int x, int y, uint color, bool applyOffsets) void DrawSprite(uint sprId, int sprIndex, int x, int y, int w, int h, bool scratch, bool center, uint color, bool applyOffsets) Fixed bugs with incorrect ini settings parsing in the scripts. Rev.122 http://www2.xp-dev.com/sc/change/94227/122 Client scripts updates: For the reserved function void render_iface(uint layer) was added calling with value layer 100 to give the ability of drawing on the global map. Also the next global variables were added for operating with the global map: bool __GmapActive – whether global map is active and all the variables below are correct; bool __GmapWait – whether waiting mode of encounter affirming is active; float __GmapZoom – current zoom, don’t forget it to take into account while drawing a map; int __GmapOffsetX, __GmapOffsetY – map shift from the zero-coordinate (up-left corner); int __GmapGroupX, __GmapGroupY – player’s group coordinates; int __GmapMoveX, __GmapMoveY – destination point’s coordinates; float __GmapSpeedX, __GmapSpeedY – movement speed every 50 ms, without taking relief into account For example, calculating the current pixel group’s position - (x = __GmapGroupX / __GmapZoom + __GmapOffsetX), (y = __GmapGroupY / __GmapZoom + __GmapOffsetY). Fixed bug with hanging when drawing 3d model, occurred in the last update. Fixed missing bracket in English texts. (by Kilgore) Rev.121 http://www2.xp-dev.com/sc/change/94227/121 Added more mouse sensitivity and now you can see mouse’s speed percent in the settings. Updated FOConfig.exe. Added AlwaysRun option. Possible values for option Mouse speed were corrected. Option Sleep now can be set to -1, that means switching it off (maximum performance). Added ability of redirecting keyboard’s symbol codes input. For this, use option KeyboardRemap (in FOnline.cfg). It is performed after space – X Y X Y …, where X is the code which is substituted by Y. Code numbers - http://fonline.pastebin.com/Qy3E0qwj Interface description in default.ini is formatted and commented. (by LoadRunner) Location prototypes updates: Option max_copy was deleted. Option max_players was added. It limits the amount of players who can be on the location simultaneously. Players, who can’t enter location because of exceeding the limit will see message 904 from FOGAME.MSG {904}{}{Location is overcrowded, try to enter later.} Password encryption in server *.client. files was added. Mouse shift when switching between movement modes was fixed. Also, for more accurate work, the hex mask was added – look \Client\data\art\misc\hex_mask.png. Only red colour is taken into account and when it takes on certain value, the shift to certain direction is performed (50 – 5, 100 – 0, 150 – 3, 200 – 2). The mask is optional, you can work without it. Fixed loading/saving tiles in the maps text format. Fixed global map shifting behind screen’s edge. Registration of useless clicks in mapper when switching between windows, now isn’t performed. Fixed the animation of 3d critter standing when situating them on the map. Also now 3d critters don’t play standing animation in the critter’s list. Fixed displaying of critters which have only one direction. Fixed command ~reloadscripts. Now when you mark items for deleting (DeleteItem/DeleteItems), their quantity is saved. So, in the moment when real deleting is performed, server will delete the requested number of items. Now knockout during turn-based fight leads to immediate loosing action points, not after finishing the turn. Also, frequent checks for the necessity of finishing the turn were added at the server - if critter’s dead, critter has negative AP, critter has no more AP. Scripts: Fixed critter’s flags (Critter extra flags, _defines.fos). Fixed special encounter scripts Guardian of Forever, Mad Brahmins. Script trader.fos was formatted. Reserved function was added to client scripts, which is called with attacks void hit_aim(uint8& aim) aim value can be redefined( Hit locations in _defines.fos). Function int Critter::GetScore(uint score) was added to server scripts. Specification Critter::AddScore(int score, int val) was changed to Critter::AddScore(uint score, int val). Function for calculation the size of drawn text was added to client and mapper scripts void GetTextInfo(string& text, int w, int h, int font, int flags, int& tw, int& th, int& lines) string& text – text; int w, h, font, flags – height, width, print, flags; int& tw, int& th, int& lines – total width, height and amount of strings in the current text. Rev.120 http://www2.xp-dev.com/sc/change/94227/120 Unused encounter tables for Fallout 1 and commented original’s scripts were deleted from worldmap_init.fos; Random encounters of “beasts versus beasts” type were enabled, which were presented in the scripts, but were absent in the original. Added some new kinds of non-unique random encounters. Now, if player uses to kill NPC’s of certain group or organizations on random encounters, then they become aggressive. Vault City guard’s automatic search is deactivated. Now you need to activate the dialogue to pass through. Fixes in English dialogues versions. Maps fixes. Rev.119 http://www2.xp-dev.com/sc/change/94227/119 Fixed lots of little mistakes in dialogues; Fixed bugs in some Den and Klamath quests; Maps fixes; Duplicate dialogues with different names were deleted. Rev.118 http://www2.xp-dev.com/sc/change/94227/118 Fixed modificator's argument from Parent-0-7 to Parent0-7. Rev.117 http://www2.xp-dev.com/sc/change/94227/117 Added dialogues to Arroyo doctor and his team. Slight fixes (dialogues, maps). Rev.116 http://www2.xp-dev.com/sc/change/94227/116 Library for importing different 3d models was enabled – Assimp http://assimp.sourceforge.net/ Formats that are supported: http://assimp.sourceforge.net/main_features_formats.html Built-in one is still used for X format, for other ones – this library. If you don’t need the library, you can delete it (file Assimp32.dll), client and mapper are able to work without it. Updated mechanism of linking models and animations, now you can link any animation to any skeleton from any file. fo3d format changes: Modificator ModelAnimation was deleted. Modificators Anim, RenderFrame, RenderFrames were expanded – now file name which consists needed animation is placed before the animation’s name (if you state “ModelFile”, then search is performed in the file of loaded model)/ Specification of indicating parent texture (Texture X Parent) was expanded. Now you can additionally state the mesh number and its part, from which the texture is taken - Texture X ParentY-Z, where X is the texture’s number, Y is mesh number, Z is mesh part number; parameters Y-Z are optional, you may don’t use them at all or you may use them partly (Parent, Parent0, Parent-5). Fixed bug with incorrect script processing when operating with Critter::ShowScreen. Fixed bug with incorrect operating and crashing when using Log function with some special symbols. Added Combat Armor 3d model (by Gray). Rev.115 http://www2.xp-dev.com/sc/change/94227/115 Added special encounter "Warehouse of lost doughnuts" (author - Ponchik). Scripts for some original special encounters (author - Cracker). Remade some prototypes. Windows without glasses in Vault's walls can be shooted through now. Slight fixes. Rev.114 http://www2.xp-dev.com/sc/change/94227/114 Maps for quests from the 113 revision. Rev.113 http://www2.xp-dev.com/sc/change/94227/113 Klamath: quests - "Worker searching", "Husband's alert", "Brahmins vaccination" (author - Ponchik). Slight fixes. Rev.112 http://www2.xp-dev.com/sc/change/94227/112 Finished appearance of random encounter "Ocean Trader". Slight maps, dialogues and graphics fixes. Added buttons for BarterGround, GECK town, Warehouse and Hell for the global map (author - Ponchik). Slight fixes. Rev.111 http://www2.xp-dev.com/sc/change/94227/111 Added additional mechanism for data files loading (dat, zip). It is necessary for loading data files loading before scripts initializing and processing start() function as some date is needed to be used before this (effects, prints and some other resourses). For adding files to loading – create DataFiles.cfg file in which you should list all necessary file names. The program searches for the content from the last to the first data file. This mechanism uses server, client, mapper. If list isn’t found then no alerts will be displayed. If one of the files from the list can’t be found or load error appears, then alert will be shown. Option PatchDatPath was deleted, loading of this file is moved to DataFiles.cfg. Rev.110 http://www2.xp-dev.com/sc/change/94227/110 Fixed model's borders calculating which caused nick or text shift above critter's head. Rev.109 http://www2.xp-dev.com/sc/change/94227/109 Fixed skin setting-up when registration 3d character. Fixed order of loaded packs (dat, zip) scanning while searching and parsing ini files. Addition to 106 revision – for stating specific keys for certain resolutions now are used not separate files with different names, but marks in the main file. At the start of the string write “resolution”, than min. width and height for starting using these options. By default these values are equal to zero. For example: "resolution 1024 768 key = value..." It means, that “key = value ...(and so on till the next keyword ”resolution”)” will be included in the final ini. Found data will be inserted in the main file as screen width grows. Rev.108 http://www2.xp-dev.com/sc/change/94227/108 Actual cash files. Rev.107 http://www2.xp-dev.com/sc/change/94227/107 SDK is switched to 3d players mode. Normal version will be restored after finishing mechanism debugging process. For switching off 3d players models – comment the next strings in Server\scripts\_defines.fos #define PLAYERS_3D // Enable 3d players #define PLAYERS_3D_NO_HEAD // No head slot #define PLAYERS_3D_VAULT_SUITE // Vault suite by default, not naked 3d updates: Fixed and reduced the size of attributes and weapons. Added missing attributes of opened pipboy. In the left hand now is displayed the item, which player has in the second slot. Armor’s models are divided between the current armor items in the such way, that gamer could see the difference. For example combat armor consists of power armor and the helmet, robes are replaced by jail suit and etc. Fixed animation playing during creating the new character in single mode. Added skin change processing in start intro and after Kitty’s haircut. Added skeleton’s skins. Added sound for men and women. Fixed sound name for critters parameter’s loading (CritterTypes.cfg, SoundName). Now characters walk slowly with double click if alwaysrun option is turned on. Rev.106 http://www2.xp-dev.com/sc/change/94227/106 Added ability to make 3d characters available to play for. To enable it (it is disabled as default) - comment certain strings in _defines.fos // #define PLAYERS_3D // Enable 3d players // #define PLAYERS_3D_NO_HEAD // No head slot // #define PLAYERS_3D_VAULT_SUITE // Vault suite by default, not naked Updated mechanism of working with ini files. Now, when searching for the keys, excess spaces and tabulations are skipped (now you can type “ key = value ”, previously was correct only variant “key=value”) Added function bool AppendIfaceIni(string& iniName), which enables additional ini files. If the name includes slashes, than the search is being performed from data root, if not - than from folder data/art/interface/. default.ini is added automatically by the engine, others you can enable in start() client function. Loading is performed sequentially from default.ini to ones enabled by user by turn. Every packed file is checked by the turn of loading, then in the folder. Global variable string __UserInterface was deleted. Fixed bug with incorrect parsing of animation indexes in fo3d file. Fixed bug with incorrect position of the egg of transparence in zoom mode. For better readability the next scripts were formatted: start_server_client.fos client_main.fos In the future this practice will be continued. Rev.105 http://www2.xp-dev.com/sc/change/94227/105 Documentation update - slight fixes. Rev.104 http://www2.xp-dev.com/sc/change/94227/104 Added structure of script array (ScriptArray) to native scripts. Added ability to client's native scripts of calling hex data - Field. Data is stored in Field* GameOptions::ClientMap, uint GameOptions::ClientMapWidth/ClientMapHeight. If map is loaded, than ClientMap != NULL, hex calling - ClientMap[hexY * ClientMapWidth + hexX]. Rev.103 http://www2.xp-dev.com/sc/change/94227/103 Added always run option - can be enabled in client's config file “AlwaysRun”. Disabled as default. Added global variables for AlwaysRun regulating: bool __AlwaysRun (as default - false) - enabling AlwaysRun ability; uint __AlwaysRunMoveDist (as default = 1) - run with click, if distance is equal or more than the value; uint __AlwaysRunUseDist (as default = 5) - run with using smth/dialogue/etc, if distance is equal or more than the value. TLA's mechanics is equal to original - always run with click, always run with using if distance is more than 4 hexes. Added parameter uint Critter::ItemTransferCount to native scripts. It stores the value of transferred items during the last transaction. Rev.102 http://www2.xp-dev.com/sc/change/94227/102 Optimized server operation (script calling) in one tread operation mode, performance increased up to 400%. Fixed bug with crash when calling Critter::Say* methods with parametr SAY_SAY_TITLE. Rev.101 http://www2.xp-dev.com/sc/change/94227/101 Changes in fo3d format, new specification was created - look this theme: http://www.fonline.ru/forum/showthread.php?t=19689 New format added new abilities of working with 3d objects - trasmission of texures, other paremeters, etc. Also added ability to render certain animation to sprites as for one frame, either for the whole animation. But the bug with cutting off the shade situated below the lowest edge of model still presents. Updated old fo3d files, also VanBuren's critters and weapon models were added. Changed effects structure, added effect for normal mapping (3D_NormalMapping.fx). Added transfer of real numbers through scripts, float __EffectValue0..9. Fixed bugs with loading 3ds files - miss of meshes except the first; crash if texture coordinates are not presented. Fixed bug in Mapper with data copying when copy-pasting a large number of objects. Fixed text centering of hexes amount in zoom mode. Rev.100 http://www2.xp-dev.com/sc/change/94227/100 Documentation update. Rev.99 http://www2.xp-dev.com/sc/change/94227/99 Updated documentation file, which was missed in the previous revision. Rev.98 http://www2.xp-dev.com/sc/change/94227/98 Added resourse gathering system; Documentation updating. Rev.97 http://www2.xp-dev.com/sc/change/94227/97 Fixes of "Night is tender" quest, now healing must work properly. Added preview from global map for GECK location. Rev.96 http://www2.xp-dev.com/sc/change/94227/96 Gecks counting on the location now affects its auto moving away and visibility separately; Parameter geck_enabled (Map::GeckEnabled) renamed to geck_visible (Map::GeckVisible). Rev.95 http://www2.xp-dev.com/sc/change/94227/95 Added global server function void SetChosenSendParameter(int index, bool enabled) which can denie transmitting parameters to client. Transmitting of all parameters is enabled by default. Rev.94 http://www2.xp-dev.com/sc/change/94227/94 Fixes of sea encounter maps. Rev.93 http://www2.xp-dev.com/sc/change/94227/93 Added sea encounters; Added posibility of an encounter while travelling on air/water transport; Player always have possibility of cancellation water/air encounter and never gains experience for that; Bug fix in mapper with incorrect editing critter's parameters. Rev.92 http://www2.xp-dev.com/sc/change/94227/92 Fixed displaying rating in pipboy. In mapper additional indication of cut sprites was added to make lines, which are needed for correct interaction, visible. Rev.91 http://www2.xp-dev.com/sc/change/94227/91 Added traffic encryption between server and client. Rev.90 http://www2.xp-dev.com/sc/change/94227/90 Fixed choosing automatically cut sprites in zoom mode. Rev.89 http://www2.xp-dev.com/sc/change/94227/89 Added parametr DrawOrderOffsetHexY for shifting order of drawing lower (Y axis). This is an analogue for recently deleted DrawPosOffsX. Fixed using car trunk. Different slight fixes. Rev.88 http://www2.xp-dev.com/sc/change/94227/88 Fixed exit from Redding; slight fixes. Rev.87 http://www2.xp-dev.com/sc/change/94227/87 Fix for weapon AP cost. Rev.86 http://www2.xp-dev.com/sc/change/94227/86 May be fixed bug with incorrect displaying of some tiles. Fixed bug with unworking elevators. Added restoration of effects when loosing a device (cause crashed e.g. with alt+tab) Rev.85 http://www2.xp-dev.com/sc/change/94227/85 Fixed bug with chat disappearing. Fixed AI bug when combat plans always finished with REASON_CANT_WALK. Rev.84 http://www2.xp-dev.com/sc/change/94227/84 Fix for DT params reading. Rev.83 http://www2.xp-dev.com/sc/change/94227/83 Safety checks for radio commands. Rev.82 http://www2.xp-dev.com/sc/change/94227/82 Fixes of some dialogues; translations of dialogues on Barterground; map fixes; fixes of encounter table; slight fixes. Rev.81 http://www2.xp-dev.com/sc/change/94227/81 Fixed another bug during moving on the global map. Fixed unplanned activating of b/w effect. Rev.80 http://www2.xp-dev.com/sc/change/94227/80 Fixed teleportation bug during moving on the global map. Rev.79 http://www2.xp-dev.com/sc/change/94227/79 Fixed bug with incorrect tear and wear and fuel consumption calculation during moving on the global map by car. Rev.78 http://www2.xp-dev.com/sc/change/94227/78 Fixed brightness output. Fixed outlining activation. Rev.77 http://www2.xp-dev.com/sc/change/94227/77 Added automatic sprite cutting. Main purpose – correct displaying of long walls. Parameter SpriteCut was added to prototypes and mapper (only for scenery) for modification. Cutting values: 0 – switched off, 1 – horizontal (X axis), 2 – vertical (Y axis). Wall blocks should be set manually , for that purpose six blocks with different corner types with visual indication were added. It is necessary for correct calculation of brightness and egg of transparence reaction. Numbers 6800..6805 at the end of Wall and Fast list. Fixed client instability after recent update. Primary indexes array for animations was expanded to the range ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789. For value changing use native means (structure CritterType in fonline.h). Support of effects (HLSL) loading with earlier version of compiler. Automatic attempt of compilation is performed after failure in compilation with the current library. Added data updating for client function GetIniStr in the start function (start) after each call of LoadDataFile. Mapper update: Fixed bug with error in loading tiles with extension not in lower case. Fixed algorithm of sprite displaying calculation (when big sprites were disappearing near the screen edge). Additional visual means for debugging: - Ctrl + Q: Corners type viewing; - Ctrl + W: Viewing the result of sprite cutting, linking them to hexes; - Ctrl + E: Viewing the sequence of sprites drawing. At the time of renewing NPC’s bag, only items which are not in inventory are repaired and reloaded. Added ability to set sprite shift in screen coordinates to prototypes. Fixed bug with double notification of quest state change. Rev.76 http://www2.xp-dev.com/sc/change/94227/76 Added quest “Night is tender” Rev.75 http://www2.xp-dev.com/sc/change/94227/75 Tables for sea encounters, slight fixes. Rev.74 http://www2.xp-dev.com/sc/change/94227/74 Source documentation. Rev.73 http://www2.xp-dev.com/sc/change/94227/73 SPECIAL calculating is moved to native scripts - fonline_tla.dll for server and fonline_tla_client.dll for client (must be situated in data\scripts). The other parameters which are used in the engine are needed generally for drawing GUI, but soon they’ll be moved to scripts too. Native scripts files are moved from data folder to scripts. Added bat-file make_tla.bat for their compilation (installation of MSVS8 is necessary). For example of use new methods for critter classes are added (IsInjured, IsDmgArm...), items (IsHtHAttack, IsGunAttack...) with pragma bindfunc. Example of linking global varieties of standard and native scripts is added (__HitAimEyes, __HitAimHead..., these global varieties are moved to scripts). Callback functions are added (to GameOptions) for item usage cost determination - GetUseApCost. For attack max range determination - - GetAttackDistantion. It further such functions will force out usage of critter parameters in the engine. These functions are binded at the stage of connecting of library to the engine (DllMainEx). For operating with the engine added the next functions (to GameOptions): CritterChangeParameter – for correct change of critter parameter, this function should be called firstly, then you can change the value. CritterTypes – index of CritterType structures where data from CritterTypes.cfg is stored. Added method to client’s critters for detection whether now is time of its move in the turn-based mode bool CritterCl::IsTurnBasedTurn() const Some logics of operating with turn-based mode is moved to the scripts - turn_based_process main.fos. Some recommended specifications for the reserved functions are changed - templates.fos. Min. time of dialogue or barter with NPC now is regulated by the global varieties __DlgTalkMinTime (now default 100 seconds) и __DlgBarterMinTime (now default 50 seconds). Range for all prototypes (maps, locations, items) is expanded to 30000. Fixed bug with incorrect drawing of minimap in the pipboy. Fixed bug with incorrect calculating of healing rate while registration. Fixes of Zerg’s special encounter. Rev.72 http://www2.xp-dev.com/sc/change/94227/72 Data library for script compilation (updated on 27 October) Rev.71 http://www2.xp-dev.com/sc/change/94227/71 Added Zerg special encounter. Fixed bug with incorrect names in Fixboy. Added function LoadDataFile to server scripts, analogue of client/mapper. Fixed mistiming of player movement on global map. Deleted function Critter::SendQuestVar, now alert about changing of local variable is automatic. Changed function specification void ShowScreen(int screenType, uint param, string& funcName) to void ShowScreen(int screenType, uint param, string@+ funcName), now can transmit both empty string or null. Rev.70 http://www2.xp-dev.com/sc/change/94227/70 Documentation is updated. Deleted incorrect splash-picture. Added urgent files for scripts autoaddition in Notepad++. Rev.69 http://www2.xp-dev.com/sc/change/94227/69 Added ability to use your own shaders for game graphics drawing. High Level Shader Language is used for this. Effects folder is situated in data\effects. After the first compilation they are cashed in the folder data\cache (in futher other different data will be cashed there). You can read specifications on the game engine effects in data\effects\ReadMe.txt. Added ability to link any effect to sprite or model in .fofrm and .fo3d (“effect=effect_name.fx”). For default effect changing, function void SetEffect(int effectType, int effectSubtype, string@+ effectName) was implemented into the client scripts. int effectType, effectSubtype – effect types look in _client_defines.fos (Subtype for fonts used font type); string@+ effectName – the name of the effect file (with extension) is in the folder data\effects. Added changing of detailization of game objects for demonstration. For activation press Alt+W, for return press Alt+Q. Added client function for map redrawing void RefreshMap(bool onlyTiles, bool onlyRoof, bool onlyLight) if all three parameters are false, than everything will be redrawed. Also these three parameters are incompatible. Fixed bug in mapper with impossibility of viewing 3d critters in prototypes table. At present time they can’t be ranged. Added ability to play sounds/music from different folders. void RefreshMap(bool onlyTiles, bool onlyRoof, bool onlyLight) If there isn’t slashes (‘/’,‘\’) in path name than search is performed in the folder sfx/music. If there are slashes, than in the root (“data/mysounds/mysound.ogg”). Rev.68 http://www2.xp-dev.com/sc/change/94227/68 Fixed bug in the ObjectEditor when damage type is saved incorrectly. Rev.67 http://www2.xp-dev.com/sc/change/94227/67 Fixed crashing when calling CritterCl::[Param/Stat/Perk/etc]Base in client scripts; Fixed error with recording Anydata of zero length (by Atom). Rev.66 http://www2.xp-dev.com/sc/change/94227/66 Fixed incorrect weapon prototype; errors in checking for special encounters; added decraft of the sand sack to fixboy; other little fixes. Rev.65 http://www2.xp-dev.com/sc/change/94227/65 Redding: finished map according to the last concept; - Garbage was returned to static locations; - Ammo craft on benches (beta-version); - Destruction of the sack using skill repair now gives use empty sack. - Entering Den message was moved to texts from script. Rev.64 http://www2.xp-dev.com/sc/change/94227/64 AngelScript updated to 732 revision. Added new methods for arrays: void T[]::insertAt(uint, const T&) – element inserting in specified position in the array; void T[]::removeAt(uint) – deleting the element by index; void T[]::insertFirst(const T&) – element inserting to the beginning of the array; void T[]::removeFirst() – deleting the first element; void T[]::insertLast(const T&) – element inserting to the end of the array; void T[]::removeLast() – deleting the last element; void T[]::grow(uint) – add elements (the sames as a.resize(length()+X)); void T[]::reduce(uint) – delete elements (the same as a.resize(length()-X)); T& T[]::first() – call of the first element of the array (the same as a[0]); T& T[]::last() – call of the last element of the array (the same as a[a.length()-1]). Also deleted all functions ArrayPushBack as the built-in array functional was expanded. All the scripts were fixed accordingly. Rev.63 http://www2.xp-dev.com/sc/change/94227/63 Added ability to start the server as a service. For registration/start use key “-service” (shortcut FOServerService.exe.lnk). For deleting use keys “-service -delete” (shortcut FOServerServiceDelete.exe.lnk). Added ability to log using function OutputDebugString. The log can be caught (even remotely) using program DebugView http://technet.microsoft.com/en-us/sysinternals/bb896647.aspx For switching it on in server and client configs option LoggingDebugOutput is added. Server/client/mapper will work normally now with incorrect active folders. At start you set the current folder of executable. Fixed bug with absence of replacement “x” by “ч” in built-in punto switcher. Fixed crash in turn based mode and incorrect work of Map::GetCritter(uint critterId). Rev.62 http://www2.xp-dev.com/sc/change/94227/62 Fixed bug with updating vehicle data on the global map. Fixed bug with system hanging while looking items quantity in game info. Fixed bug with the incorrect login/disconnect. Fixed bug with incorrect creating non-stacking items on the map in the number of >1. Fixed bug with incorrect critters gathering when path tracing (by Atom). CRITTER_EVENT_TALK now performed before checking NPC for settings which could restrict speaking with it. Added new mechanism for script garbage gathering (by Atom). For config file simplification, the next options were removed: ASGarbageTime, VarsGarbageTime. Deleted transfer of a group of critters into global map processing global_process, CRITTER_EVENT_GLOBAL_PROCESS. Also instead of transferring a group into global map processing global_invite, CRITTER_EVENT_GLOBAL_INVITE, now only the leader is transferred. Instead of picking group use Critter@[]@ Critter::GetGlobalGroup(). Because of that, specification methods were changed: bool Critter::EventGlobalProcess(int type, Critter@[]& group, ...) bool Critter::EventGlobalInvite(Critter@[]& group, ...) for bool Critter::EventGlobalProcess(int type, Critter& cr, ...) bool Critter::EventGlobalInvite(Critter& leader, ...) Reserved functions of critter event CRITTER_EVENT_GLOBAL_PROCESS, CRITTER_EVENT_GLOBAL_INVITE bool _FuncName(Critter& cr, int type, Critter@[]& group, ...) bool _FuncName(Critter& leader, Critter@[]& group, ...) for bool _FuncName(Critter& cr, int type, ...) bool _FuncName(Critter& leader, ...) Fixed bug with incorrect cooldown for hijacking, now it is equal for a normal lock. Added checking for unopenable door to the lock break script. Rev.61 http://www2.xp-dev.com/sc/change/94227/61 Fixed bug with incorrect reappraisal of item flags in Mapper. Fixed bug when player isn't notified about moved item. Rev.60 http://www2.xp-dev.com/sc/change/94227/60 Fixed bug with incorrect displaying of the rain on roofs. Rev.59 http://www2.xp-dev.com/sc/change/94227/59 Mapper's fix for correct operating with new folder and print's names. Rev.58 http://www2.xp-dev.com/sc/change/94227/58 For editing use program Bitmap Font Generator v1.12. http://www.angelcode.com/products/bmfont/ Print should have the next attributes - OEM RUSSIAN, Padding 1 (in all directions), Binary, all symbols should be placed on the one texture. All prints are moved in the separate folder “Client\data\fonts\”. For the example print FONT_COURIER_NEW_SMALL is added. Look _client_defines.fos, client_main.fos, CourierNewSmall.bmfc, CourierNewSmall.fnt, CourierNewSmall_0.png. Added function in client’s scripts of activating the clock which shows you the time signal comes to server and returns (ping). You can use it for restriction of input while waiting for server’s answer. Fixed crushing when looking players statistics on server. Fixed crushing of Dialogue Editor (by Atom). Rev.57 http://www2.xp-dev.com/sc/change/94227/57 Expanded mechanism of operating with ingame radio. Added flag ITEM_RADIO for radio. (in _defines.fos). Radio messages are now also sent to radios which are on the ground . For their identification engine sends them with color 0xFFFFFFFE (in map_message in client_main.fos). Realization is in script radio.fos (interface, mechanics), call from main.fos. Interface data is taken from default.ini (Radio*). You can edit it with using item or using science skill on it. Radio data is situated in general fields of several item types. That’s why it isn’t a good idea to use this flag with Doors, Keys, Cars, Weapons, Armors, Holodiscs. Transmitting and receiving functions are separated. For managing the next flags and range types are used (_defines.fos): Restriction of transmitting/receiving is stored in Item/ItemCl::RadioFlags, used by the engine: RADIO_DISABLE_SEND, RADIO_DISABLE_RECV. Restriction of switching radio state in в Item/ItemCl::RadioFlags: RADIO_DISABLE_SHIFT_SEND, RADIO_DISABLE_SHIFT_RECV - restriction of switching transmit/receive; RADIO_DISABLE_SHIFT_BC_SEND, RADIO_DISABLE_SHIFT_BC_RECV - restriction of changing distance range; RADIO_DISABLE_SHIFT_CHANNEL – restriction of channel switching. Range types are stored in Item/ItemCl::RadioBroadcastSend/RadioBroadcastRecv, are used by the engine: RADIO_BROADCAST_WORLD – works all over the world; RADIO_BROADCAST_MAP – works within the limits of the current map; RADIO_BROADCAST_LOCATION - works within the limits of the current location; RADIO_BROADCAST_ZONE(x) - works within the limits of “x” zones on the global map; RADIO_BROADCAST_FORCE_ALL – works everywhere regardless of the adjustments of transmitting or receiving radio/ Added support of these flags to the object editor (both engine and script ones). Added scripts uint16 ProtoItem::RadioChannel, uint16 ProtoItem::RadioFlags, uint8 ProtoItem::RadioBroadcastSend, uint8 ProtoItem::RadioBroadcastRecv. For holodisc marking added flag ITEM_HOLODISK (in _defines.fos). Holodisc data is situated in general fields of several item types. That’s why it isn’t a good idea to use this flag with Doors, Keys, Cars, Weapons, Armors, Holodiscs. Added support of this flag in object editor. Added script uint ProtoItem::HolodiskNum. Added ability to use built-in cartridge indicator for other purposes. Added the next parameters: uint8 ProtoItem::IndicatorStart – initial value, - Item/ItemCl::Indicator; uint8 ProtoItem::IndicatorMax – maximum available value (for correct calculation of the strip position); uint8 Item/ItemCl::Indicator – current value. Mechanism is considered activated if maximum value in the prototype isn’t equal to zero. Added support of editing of initial and maximum values in the object editor. Method Item::GetMapPosition for the items which are in the global map returns their coordinates. Fixed bug with system hanging while looking online statistics. Added storing up to 20 ip addresses for one account (fonline.h). Item prototype’s fields, which are equal to zero, now cannot be saved. All prototypes are resaved. Continued working on multithreading in game logics. Added ignoring of non-initialized maps or locations while loading save (NPC’s would be moved to global map, items - deleted). Fixed bug in the dialogue on BiX location. Updated abilities of GUI scripting. In script _defines.fos notes “Used in engine” are replaced by “Hardcoded”; point is the same - to show that this data is used by engine also. Corrected some specifications in template.fos of reserved functions. Rev.56 http://www2.xp-dev.com/sc/change/94227/56 Changes in craft: some new recipe's (new weapon, etc.), added workbenches in some town/military bases. Rev.55 http://www2.xp-dev.com/sc/change/94227/55 - Updated Redding maps; - Deleted unused graphics; - Added second entrance to NCR; - Some changes in NPC's inventories on encounters. Rev.54 http://www2.xp-dev.com/sc/change/94227/54 - Slight fixes in Hartman's and Shrim's dialogues (Vault City); - Fixed problem with immediate sending off caravans/patrols Ahe9mPDq; - Changed content of the quest variable for the quest "Third trial. Drill." - Restored functions for triggers t_DialogNpc and scenery s_TransitToMap. Rev.53 http://www2.xp-dev.com/sc/change/94227/53 Fixes of KotW location. Quest for oil can can be done by everybody in Arroyo now. Rev.52 http://www2.xp-dev.com/sc/change/94227/52 Fixes of Brok and Xander Church location (by VaultTec) Rev.51 http://www2.xp-dev.com/sc/change/94227/51 Fixed names loading (*Names.lst) with the dialogue editor. Changed extention of its config file. Rev.50 http://www2.xp-dev.com/sc/change/94227/50 Fixed bug with duplicating of time events. Rev.49 http://www2.xp-dev.com/sc/change/94227/49 Slight optimization of multi-threading. Rev.48 http://www2.xp-dev.com/sc/change/94227/48 Fixed error in loading of games variables values. Fixed loading of saves games in single player mode. Rev.47 http://www2.xp-dev.com/sc/change/94227/47 Time events changes. - function specification void EraseTimeEvent(uint num) changed to bool EraseTimeEvent(uint num) Return value shows whether deleting is done or the event isn't found. - Deleted the next functions: uint CreateTimeEvent(uint beginSecond, string& funcName, Critter& cr, bool save) uint CreateTimeEvent(uint beginSecond, string& funcName, Item& item, bool save) uint CreateTimeEvent(uint beginSecond, string& funcName, Critter@[]+ critters, Item[]@+ items, bool save) For migration just put the identificator to the critter or item. Added the next functions for operating with event's values: bool GetTimeEvent(uint num, uint& duration, uint[]@+ values) bool GetTimeEvent(uint num, uint& duration, int[]@+ values) bool SetTimeEvent(uint num, uint duration, uint[]@+ values) bool SetTimeEvent(uint num, uint duration, int[]@+ values) Parametr "duration" - time till the event is done in seconds. Return value means that operation is completed, error means that event wasn't found. These functions are thread-safe, 2 thread can't operate with the events simultaneously. Function GetTimeEvent blocks using (changing) of the event until the script is finished or until SetTimeEvent is called, which unblocks the event. GetTimeEvent writes value to the end of the array, SetTimeEvent rewrites it completely. When null is transmitted to values SetTimeEvent values are not changed. - Event function specification can be of two types now: uint e_FuncName(uint[]@ values) uint e_FuncName(int[]@ values) Fixed bug with crashing while loading 3ds file without texture coordinates. Rev.46 http://www2.xp-dev.com/sc/change/94227/46 Added next fuctional for operating with files (class "file"): - for data reading uint8 file::readUint8() uint16 file::readUint16() uint32 file::readUint32() uint64 file::readUint64() In the case of error or the end of file it returns 0. uint file::readData(uint count, uint8[]& data) If data == 0 then program read all data till the end of the file beginning from the current position. Read data is added to the end of the array. The return value shows the real amount of read bytes. - For data recording bool file::writeUint8(uint8 data) bool file::writeUint16(uint16 data) bool file::writeUint32(uint32 data) bool file::writeUint64(uint64 data) bool file::writeData(uint8[]& data, uint count) If count == 0 it records all data from an array. In the case of error it returns false. Fixed bug with incorrect output of zoom value on minimap. Rev.45 http://www2.xp-dev.com/sc/change/94227/45 Extended range of game variables: - local variable of location (LLVAR_); - local variable of map (LMVAR_); - local variable of item (LIVAR_). When using them in dialogue values are taken from: for location - current critter's location; for map - current critter's map; for item - current item in the main slot. For operating with scripts use function GetLocalVar with transmitting of needed operator. Server will delete unused variables of all types automatically. Deleted server function uint DeleteVars(uint id). Dialog editor was adapted to the last updates of game variables. Added ability to define named value (DefineNames.lst) as a value for conditions and results. Added missed translations. Translations of commit history you can find here: http://www.xp-dev.com/forum/topic/3220 Rev.44 http://www2.xp-dev.com/sc/change/94227/44 Updated format of time output in dialogue with repairer-npc; Added script for realization of npc-travellers on global map.(traveller.fos and Davine's script in sf_common.fos); Added npc-traveller explosives-seller Davine. Can be hired in GECK town; Added trade mode "cash only" MODE_BARTER_ONLY_CASH; Fixed bugs in maps structure on maps with holodiscs. Rev.43 http://www2.xp-dev.com/sc/change/94227/43 Added setting in config which defines whether to bind logic threads to the core or let OS do it. In default it is enabled (1) 1. If zero then operating system automatically manage threads between cores, else affinity thread per core LogicThreadSetAffinity=1 Continued work on multi-threading of game logics. Rev.42 http://www2.xp-dev.com/sc/change/94227/42 Fixed crashing under certain conditions; Fixed cycle counting per second. Rev.41 http://www2.xp-dev.com/sc/change/94227/41 Fixed bug connected with the last update. Rev.40 http://www2.xp-dev.com/sc/change/94227/40 Multi-threading of game logics is now supported. You can read about this in details on the forum; Fixed path of recording/reading ban files; Added seconds on the globalmap clock; Decreased permissible length of text listener of channels and maps from 5 to 2 symbols; Deleted global server function void DeleteNpcForce(Critter& npc); Changed specification of method from uint Location::GetMaps(Map@[]& maps) const to uint Location::GetMaps(Map@[]@+ maps) const Now you can know the amount of maps on the location without recording them into array; Added basic server command ~log (~37). It is intended for text listening of server log. Minimum access: administrator. For adding to text listening you should transmit arguement "+", for disconnecting "-"; Fixed basic creating locations command ~addloc (~16); Upgraded basic command of looking player's id using his name ~id (~4); Changed specifications of global functions void critter_attack(Critter& cr, Critter& target, ProtoItem& weapon, ProtoItem@ ammo, uint8 aim) -> void critter_attack(Critter& cr, Critter& target, ProtoItem& weapon, uint8 weaponMode, ProtoItem@ ammo) int to_hit(CritterCl& chosen, CritterCl& target, ProtoItem& weapon, int hitLocation) -> int to_hit(CritterCl& chosen, CritterCl& target, ProtoItem& weapon, uint8 weaponMode); Added variables for weapons which state their active mode const uint8 Item::Mode const uint8 ItemCl::Mode 4 high-order bits - sight (look Hit locations in _defines.fos), 4 low-order bits - mode (0 – primary, 1 – secondary, 2 – third); Added macroses for convenience _WeaponModeUse, _WeaponModeAim, _WeaponModeMake в _macros.fos; Added returnable value of the current mode in method GetSlotProto (urgent for weapons) ProtoItem@+ Critter/CritterCl::GetSlotProto(int slot, uint8& mode) const; Renamed parametr #define ST_RATE_ITEM (102) to #define ST_HANDS_ITEM_AND_MODE (102) value stored in it: XXXX00YY, where XXXX pid - unarmed blow, and YY - mode. Changed way of the dialogue redirecting. You should use returnable value of result function or say-mode instead of uint __ForceDialog; Added specifications of functions: uint r_FuncName(...), uint dlg_FuncName(...) which are detected by server automatically; Fixed bug with moving pushed players only in one direction; Object pointers (derivatives arrays or class members)Location, Map, Critter, Item, GameVar can't be saved in global varities now. For scripts migration save their identificators (Location::Id, Map::Id, Critter::Id, Item::Id), addresing to the objects with (GetLocation, GetMap, GetCritter, GetItem). Weapons prototypes don't save curret mode of fire (in connection with multi-threading). Changed specifications of class members ProtoItem const uint8 Weapon_Skill, const uint8 Weapon_DmgType, const uint8 Weapon_Anim2, const uint16 Weapon_DmgMin, const uint16 Weapon_DmgMax, const uint16 Weapon_MaxDist, const uint16 Weapon_Effect, const uint16 Weapon_Round, const uint8 Weapon_ApCost, const uint8 Weapon_SoundId, const bool Weapon_Remove, const bool Weapon_Aim, const uint8 Weapon_CurrentUse, void Weapon_SetUse(uint8 use) const to const uint16 Weapon_Skill_F, const uint16 Weapon_Skill_S, const uint16 Weapon_Skill_T, const uint16 Weapon_DmgType_F, const uint16 Weapon_DmgType_S, const uint16 Weapon_DmgType_T, const uint16 Weapon_Anim2_F, const uint16 Weapon_Anim2_S, const uint16 Weapon_Anim2_T, const uint16 Weapon_DmgMin_F, const uint16 Weapon_DmgMin_S, const uint16 Weapon_DmgMin_T, const uint16 Weapon_DmgMax_F, const uint16 Weapon_DmgMax_S, const uint16 Weapon_DmgMax_T, const uint16 Weapon_MaxDist_F, const uint16 Weapon_MaxDist_S, const uint16 Weapon_MaxDist_T, const uint16 Weapon_Effect_F, const uint16 Weapon_Effect_S, const uint16 Weapon_Effect_T, const uint16 Weapon_Round_F, const uint16 Weapon_Round_S, const uint16 Weapon_Round_T, const uint16 Weapon_ApCost_F, const uint16 Weapon_ApCost_S, const uint16 Weapon_ApCost_T, const uint8 Weapon_SoundId_F, const uint8 Weapon_SoundId_S, const uint8 Weapon_SoundId_T, const bool Weapon_Remove_F, const bool Weapon_Remove_S, const bool Weapon_Remove_T, const bool Weapon_Aim_F, const bool Weapon_Aim_S, const bool Weapon_Aim_T Added special macros for convenience (Weapon in _macros.fos) _WeaponIsPrimaryAviable, _WeaponIsSecondaryAviable, _WeaponIsThirdAviable, _WeaponSkill, _WeaponDmgType, _WeaponAnim2, _WeaponDmgMin, _WeaponDmgMax, _WeaponMaxDist, _WeaponEffect, _WeaponRound, _WeaponApCost, _WeaponSoundId, _WeaponRemove, _WeaponAim, _WeaponModeUse, _WeaponModeAim, _WeaponModeMake Mapper updates: string@ MapperObject::PicMap/PicInv now return prototype's picturename if other isn't set up; Added const uint16 MapperMap::Width, const uint16 MapperMap::Height for storing current map sizes; Fixed function GetMapFileNames(...). Rev.39 http://www2.xp-dev.com/sc/change/94227/39 Slight fixes of quests in Den, Klamath Improved closed location in Redding Rev.38 http://www2.xp-dev.com/sc/change/94227/38 Slight fixes of quests from string "Guard"; Added services for guardsmen: doc. Troy can heal player; give stimpacks; Valery repairs items; Added universal repairing script for npc (repairer.fos). E.g. in the dialogue vc_valery.foldg 3 new special encounters with holodiscs; Several deleted functions from stdlib are returned. Rev.37 http://www2.xp-dev.com/sc/change/94227/37 Fix of calculating amount of dead NPC on location when necessity of attack is being determinated. Fix of amount loss allies counter when finishing the quest. Output of messages to log is disabled in quest “The drill”. Fix of limit of times amount quest “Dangerous hunt” can be done. Descriptions of deleted maps were returned, which made server restart impossible without saves clearing. Rev.36 http://www2.xp-dev.com/sc/change/94227/36 Fix of Hartman’s dialog. The wrong requirement was deleted. Rev.35 http://www2.xp-dev.com/sc/change/94227/35 New quests from string “Guard” in Vaultcity - Vaultcity guard. Third trial. Drill. - Easy walk. - Go there, don’t know where. - Dangerous hunt. - Diplomatic courier. Fix of caravan’s and patrol’s departure time. Relative departure time was substituted for absolute. Added ability of caravan’s instant departure from the dialog. Fix of items that were generated in encounters 0 in number. (It was impossible to throw out them) Fix of quest “Hub bibliography”. Player need 7 books to gain reputation instead of 6. Rev.34 http://www2.xp-dev.com/sc/change/94227/34 - Maps fixes - Fixed reaction of BG guards on explosives activation Rev.33 http://www2.xp-dev.com/sc/change/94227/33 - Graphics fixes - Non-used files were deleted - Original map of BG was returned Rev.32 http://www2.xp-dev.com/sc/change/94227/32 Private car parking in geck town is disabled till the problem with car boot is solved. Rev.31 http://www2.xp-dev.com/sc/change/94227/31 Added first quests of string “Guardsman”, VaultCity. (Clearing of server saves is needed) Added template for making quests-combats with npc. (fighter_quest.fos, e.g. “Guard. First trial.”) Added ability to take quest “Hub bibliography” again if player failed to finish it at previous time. Fixed incorrect condition in Dappo’s dialogue in quest “Lot of defective rifles”. Added verification of addressee in “Postman” quest, now player can’t bring letter to any npc of type stated in the letter. Rev.30 http://www2.xp-dev.com/sc/change/94227/30 Deleted not used MSG files - FOSCRIPT.MSG. Rev.29 http://www2.xp-dev.com/sc/change/94227/29 Updates of way of making records into log. Added ability to look the name of the thread which made a record. Option in config – LoggingThread. You can also turn on output in the server application using “Logging with thread”. Changed format of time output. Now it is not “time in ms”, but “hours:minutes:seconds:milliseconds”. Rev.28 http://www2.xp-dev.com/sc/change/94227/28 Fix and formatting. Rev.27 http://www2.xp-dev.com/sc/change/94227/27 Fixed mistakes in calculating karma in quest "Returning of the fugitive". Rev.26 http://www2.xp-dev.com/sc/change/94227/26 Changes on Church of Brok and Xander location: - fixed Preacher, Scientist, repairer Alechandro, Cook, Mickey dialogs; - quests work correctly now; - repairer Alechandro identifies items correctly; - ability to record the information about Church was added (after completing Preacher's quest). Rev.25 http://www2.xp-dev.com/sc/change/94227/25 Activating time of dynamite was fixed. Rev.24 http://www2.xp-dev.com/sc/change/94227/24 New algorithm of generating of pseudorandom variables was added (Mersenne twister). Previously was standart C algorythm srand/rand. Rev.23 http://www2.xp-dev.com/sc/change/94227/23 Energy barrier on the entrance of GECK town was improved. Rev.22 http://www2.xp-dev.com/sc/change/94227/22 Fixed client crashing on start. For preventing this bug in future the control system of versions of cashed scripts in the client has been added. Rev.21 http://www2.xp-dev.com/sc/change/94227/21 Fixed problem when it was impossible to add players to GECK town after removing them with option "Clear list". Rev.20 http://www2.xp-dev.com/sc/change/94227/20 Fixed cooldown of the Postman quest. Rev.19 http://www2.xp-dev.com/sc/change/94227/19 Wrongly deleted dialogs are returned. Rev.18 http://www2.xp-dev.com/sc/change/94227/18 Fixes Deleted not used files. Fixed errors when player removes child killer karma additional times. Fixed error with incorrect name of script of map_v15_village map. Added output of message of increasing trade skill when finishing “Farm vermins” quest to the log. Weakened the giant wasp in the quest in Modoc. Rev.17 http://www2.xp-dev.com/sc/change/94227/17 AngelScript was updated to rev.684, v. 2.19.2 Added global variables to the client: bool __ShowTile, __ShowRoof, __ShowItem, __ShowScen, __ShowWall, __ShowCrit, __ShowFast, __ShowPlayerNames, __ShowNpcNames, __ShowCritId. Deleted limit of min. time of using Map::SetLoopTime (it was 1 second). Fixed registration of the global variables of string type (pragma globalvar). Fixed using reserved global variables string type. Added global variables to mapper: string __ClientPath, __ServerPath. Deleted constant modificators in client from string CritterlCl::Name, CritterlCl::Lexems. Added variable CritterlCl::NameOnHead, which if is not empty, outputted above critter’s head. Rev.16 http://www2.xp-dev.com/sc/change/94227/16 Fixed reclearing of child killer status. Rev.15 http://www2.xp-dev.com/sc/change/94227/15 Fixes: - Fixed names of Giant Wasps and bugs in kills statistic; - Reduced requirements of amount of killed mobs and intelligence in Broken Hills quests (bh_marcus.fodlg, bh_super.fodlg); - Reduced requirement of intelligence for “Fresh blood” quest (vc_doctor_troy.foldg); - Fixed possibility of gaining experience multiple times in “Cabbage” quest in Modoc (mod_farmer_q.fodlg); - Player receives reputation in NCR for quest “True cowboy” even if only one Brahmin is brought (ncr_felix.fodlg); - Michael’s miniquest in NCR can be done by every player only once (ncr_michael.fodlg); - Added requirement of 16 level for “buggy” quest (ncr_ratch.fodlg); - Fixed amount of gaining experience when player rejects gratuity in “Postman” quest (q_mail_reciever.fodlg); - Fixed cooldown of “Postman” quest; - Cave mobs – spawn point near the exit grid was removed in the smallest cave; - Fixes of several dialogues in Vault City; - New quest – “Fugitive returning” – when finished, status “Child killer” is removed. Hubbologist in Redding bank offers this quest; - New quest “Farm vermines”. It is offered by Joe in Modoc (mod_joe.fodlg); - Fixed energy barrier in GECK town; - Added computer for breaking of energy barrier inside the town; - Added car lots for GECK town citizens (not more than 2); - Added ability of clearing of citizens list by town leader using the terminal. Rev.14 http://www2.xp-dev.com/sc/change/94227/14 Update for Notepad++ (Syntax_highlighting, autocomplete, function parameters hints) Rev.13 http://www2.xp-dev.com/sc/change/94227/13 First stable version.h3. Your title here...

SidleJinks picture

Description: Rev.190 http://www2.xp-dev.com/sc/change/94227/190 Rev.189 http://www2.xp-dev.com/sc/change/94227/189 Extra system for detecting launched client’s windows was added. Bug with impossibility of reading some files when one copy of client/mapper/server is launched. Check for ITEM_GAG on detection of finishing REASON_HEX_BUSY_RING plan (when critter is surrounded by impassable objects or critters) was added. Ground and roof tiles offset was fixed in FOnline geometry. Rev.188 http://www2.xp-dev.com/sc/change/94227/188 Support of graphic formats MOS and BAM from Ininity Engine (Boldur’s Gate, Icewind Dale, Planescape Torment) was added. It is possible to define the number of played cycle or frame. To define cycle’s number in file name parameters (“S”) – define its index and to define the frame add dash and frame’s index. Examples: fileName$5.bam – load fileName.bam with frames for cycle № 5; fileName$1-4.bam - load fileName.bam with frame № 4 with cycle № 1; fileName.bam - load fileName.bam с with frames for cycle № 0. Rev.187 http://www2.xp-dev.com/sc/change/94227/187 Some actions were performed to fix server's hanging up. Rev.186 http://www2.xp-dev.com/sc/change/94227/186 Some actions were performed to fix server's hanging up. Not adding function's name to log was fixed. Levelcap was removed in the scripts. Rev.185 http://www2.xp-dev.com/sc/change/94227/185 NO_LOOT and NO_DROP mode were switched off for the giant bugs. Rev.184 http://www2.xp-dev.com/sc/change/94227/184 In connection with porting the server (*nix and 64bit) the next changes were made: Operating with net was rebuilded. Libevent library is used. http://monkey.org/~provos/libevent/ http://en.wikipedia.org/wiki/Libevent http://ru.wikipedia.org/wiki/Libevent Operating with GUI was remade. FLTK library is used. http://fltk.org/ http://en.wikipedia.org/wiki/FLTK http://ru.wikipedia.org/wiki/FLTK Operating with threads was remade. Pthreads is used http://sources.redhat.com/pthreads-win32/ (Windows port) http://en.wikipedia.org/wiki/Pthreads http://ru.wikipedia.org/wiki/Pthreads Changes are serious and can cause unstable work. Memory leak when loading maps was fixed in server. Loading maps with items in containers/inventories in mapper was fixed. Don’t use mapper of 171-182 revisions for editing old maps. Now parameters values for critters in mapper are applies only if they are not equal to zero. Initially value is taken from defaults (from .fopro), then from the map’s data if !=0. Critter’s names in mapper are now taken only by prototype number without accounting dialogue’s number. Old specification of Log function which was changed in 174 revision was returned to native scripts. Server’s GUI now ‘Courier New’ type, option in config was deleted. Option for changing server’s window size and its elements was added GUI size modifier GUISize=0 E.g. if GUISize=-50 then server’s window and all its elements will be 50% smaller, if GUISize=30 then 30% larger. Log in server window is unrolled as defaults. Also, the information from the log can be copied and scrolling is stopped if it is focused. Client’s crashing when playing items animation was fixed. Paths make_tla.bat were converted to Visual Studio 2008 (9.0). Rev.183 http://www2.xp-dev.com/sc/change/94227/183 Lo Pan’s mercenaries call leader’s name correctly now. Nancy and Sid’s quest location now is deleted after leaving it (previously it wasn’t deleted and hanged in the memory). SF docs were excluded from NoPvP locations. Letters generation in Postman quest was fixed. Holodisk with combat robot’s video recordings can be given to Buster now. Shaneman’s documents now have description in “Diplomatic mission” quest. A dialogue between bar clients in outer Vault City was added (wipe is required). Mini quest “Seduce art” was added in Klamath (wipe is required). Rev.182 http://www2.xp-dev.com/sc/change/94227/182 NPC-travellers will no longer take dead characters to the global map. Atoll was removed from Eli’s destinations. Skill displaying when increasing it through the dialogue was fixed. The mistakes in the newcomer’s dialogues in “Anger” quest were fixed. The mistake in mercenaries script which caused the leaving the employer earlier was fixed. Rev.181 http://www2.xp-dev.com/sc/change/94227/181 Reading nicknames from ignor list file was fixed. Console command for adding a player to the ignor list was added ~ignore PlayerName. Rev.180 http://www2.xp-dev.com/sc/change/94227/180 Mechanism of reputation calculation was switched off due to its incorrect work. Now all the list will be visible, but will work correctly. Rev.179 http://www2.xp-dev.com/sc/change/94227/179 Network protocol bug which caused short hangs up was fixed. Client's script was fixed which could cause null parameter call. Rev.178 http://www2.xp-dev.com/sc/change/94227/178 Superfluous rifles on offer were fixed. Rev.177 http://www2.xp-dev.com/sc/change/94227/177 Game version increment. Rev.176 http://www2.xp-dev.com/sc/change/94227/176 Sequence of handlers calling was fixed MAP_EVENT_OUT_CRITTER, MAP_EVENT_IN_CRITTER now the first one is called initially, then the second On intro_init map static lighting was set. Group moving indication on the global map was fixed (previous update bug). Rev.175 http://www2.xp-dev.com/sc/change/94227/175 Console command ~globalmap was added. It moves player to global map. It works only on noPvP maps for players not in combat mode and with noPvP mode turned on. In caravans and travellers scripts functions of moving to final destination's map were updated. Rev.174 http://www2.xp-dev.com/sc/change/94227/174 Porting game to Linux was started. Also supporting of 64 bit platforms. Client’s native libraries are now transmitted automatically. They are stored in ‘Client/data/cache’. Folder with scripts ‘Client/data/scripts’ is not used anymore and was deleted. To the server’s folder library STLPort (http://www.stlport.org/) was added. Client’s libraries are now compiling with it’s help. It is connected with porting to other platforms. Additional methods of moving were added to critters in server scripts bool Critter::TransitToMap(uint mapId, uint16 hexX, uint16 hexY, uint8 dir, bool withGroup) bool Critter::TransitToMap(uint mapId, int entireNum, bool withGroup) bool withGroup – when moving from global map to local map, all the group will be moved. Regular TransitToMap (without bool withGroup) work as with withGroup == false. Previously they worked as как withGroup == true, what led to moving all the group when replicating, if dead critter was on the global map. 3d critters were switched off. For switching on see PLAYERS_3D in _defines.fos. Constants for operating with game constants were added(see 168 revision, http://www2.xp-dev.com/sc/change/94227/168). Specification for the reserved function Log in native scripts was changed. Now the first returned parameter is function’s name from which it was called. Rev.173 http://www2.xp-dev.com/sc/change/94227/173 Traders were added to Atoll and Redding. Barterground was moved to position 690:760 as it isn’t needed anymore in north-west region due to noPvP mode. Locations “BiX Church” and “Atom’s Church” were moved to special encounters class. Fixed rewards in some quests. Maps fixes. Biscuit on Modoc can be received only once now (as in Fallout 2). Rev.172 http://www2.xp-dev.com/sc/change/94227/172 noPvP mode was activated on some TLA maps. It will be used on the next TLA session. For switching it off on your server set global variable __NoPvpMaps=false; in script config.fos Ability of making a list of ignored players, it works similarly NameColorizing. It needs manual adding nickname of ignored player to IgnoreList.txt For refreshing the list of ignored players in game use console command ~ignorelist. Rev.171 http://www2.xp-dev.com/sc/change/94227/171 Derivative objects system for mapper was updated. When placing base object, all his derivatives are placed automatically. If one object from the group is being selected - all others are being selected too. If the prototype or position of the derivative object is changed, changes will be automatically applied by mapper or server when loading. For the example see cars, at the present time they have one derivative object – their trunk. Now when placing the car, it will be created automatically, also it will be moved with it and if base or derivative object is deleted, all the group will be deleted too. The system of moving selected objects in mapper was upgraded. Now in hexagonal system the selected objects will be moved without being tearing apart. Also the selected objects, when being moved, will stop at the map’s edge, so they won’t mix into a pile. The problem with detecting whether items in container belong to their inventory or container. Previously items were placing on the hex and if you place two containers on the same hex, all the items will stack in one container. Now it is fixed. Item::TrapValue initialization through mapper was fixed. If rewriting is performed on prototypes loading, alert is displayed. It was added for items and critters prototypes. In object’s structure in mapper was deleted field const bool Item_InContainer and added const uint UID, ContainerUID, ParentUID, ParentChildIndex Rev.170 http://www2.xp-dev.com/sc/change/94227/170 Now server doesn't block client's libraries while working. Previously you needed to stop the server to replace client's dll (Server/scripts/fonline_tla_client.dll). Rev.169 http://www2.xp-dev.com/sc/change/94227/169 Combined content of MASTER.DAT + CRITTER.DAT. Size - 201 MB! Rev.168 http://www2.xp-dev.com/sc/change/94227/168 Client and Mapper are no longer bounded with Fallout’s data files - MASTER.DAT and CRITTER.DAT. These files content is combined (excess data is deleted) and packed into fallout.dat (will be uploaded with the next update) and defined in DataFiles.cfg. Global variables string __MasterPath, __CritterPath were deleted. The configurator (FOConfig.exe) is updated accordingly fixes above. Critter’s lighting in the death moment and flat items lighting was fixed. To server/client/mapper scripts the next functions for operating with the constants (*Names.lst) were added: int GetConstantValue(int constCollection, string@+ name) – identifying constant’s value by the name; string@ GetConstantName(int constCollection, int value) - identifying constant’s name by the value; void AddConstant(int constCollection, string@+ name, int value) – adding separate constant to the collection; bool LoadConstants(int constCollection, string@+ fileName, int pathType) – loading/reloading the collection; int constCollection – collection’s number, see Constants collections in _defines.fos, also you can define your own collections; string@+ name – constant’s name; int value - constant’s value; string@+ fileName, int pathType – collection file’s name and folder path. Rev.167 http://www2.xp-dev.com/sc/change/94227/167 Bug with error of name/password in login menu if it exceeds 12 symbols was fixed. Screen centering on the player when loading map in right-angle geometry was fixed. Copying objects in Mapper from smaller map to the bigger one was fixed. Mapper hanging up when Sleep < 0 was fixed. Crashes when loading ART files were fixed. Principe of transparency defining with parameter ‘”t” was changed, now it isn’t equal to 255 – paletteIndex, but to max(R, G, B). Rev.166 http://www2.xp-dev.com/sc/change/94227/166 System of operating with items prototypes was updated (ProtoItem). Ability to add your own fields to proto class was added. New pragma ‘bindfield’ is used for this, e.g.: #pragma bindfield "const int ProtoItem::MyValue -> 400" it means creation of field MyValue of int type with offset 400 (considering thas int is 4 byte, it will occupy bytes 400, 401, 402, 403). Totally for user’s fields 500 bytes are available. Field is equal to zero as defaults, but it is possible to change the value by defining value (in the current case MyValue=111 or MyValue=SkillBigGuns) in proto file (.fopro), number (if it contains only numbers) or path to the file (it is identified by the presence of ‘/’ or ‘\’ symbols). For now fields which are not used by the engine are taken out to scripts, see _defines.fos Item prototypes fields. Changes in structure ProtoItem. All next methods are deleted uint8 GetType() const uint16 GetProtoId() const bool IsGrouped() const bool IsWeared() const bool Container_IsGroundLevel() const List of new fields which are registered in the engine (part of them is renamed, some were deleted) http://pastebin.com/8R4QkP3h The other fields are registered with #pragma bindfield in _defines.fos. Now all items can stack and wear out, for this Boolean fields are added to the prototypes bool ProtoItem::IsStackable bool ProtoItem::IsDeteriorable Item type ITEM_MISC_EX was deleted, it is combined with ITEM_MISC (miscex.fopro is deleted). Vehicles are taken out to separate type ITEM_CAR (car.fopro was added). Also now user can define any type numbers for the items. Former fields uint MiscEx_StartVal0..9 of the start values for Item::Val0..9 were moved to common area named StartValue0..9, and with these values Item::Val0..9 are initialized. Metod bool Item::IsCar() const was deleted, instead of it use GetType()==ITEM_CAR. The next methods are renamed bool Item::IsGrouped() const -> bool Item::IsStackable() const bool Item::IsWeared() const -> bool Item::IsDeteriorable() const The next fields are renamed uint16 Item/ItemCl::BrokenWear -> Item/ItemCl::Deterioration uint16 Item/ItemCl::CarDeteoration -> Item/ItemCl::CarDeterioration uint8 MapperObject::Item_DeteorationFlags -> uint8 MapperObject::Item_BrokenFlags uint8 MapperObject::Item_DeteorationCount -> uint8 MapperObject::Item_BrokenCount uint16 MapperObject::Item_DeteorationValue -> uint16 MapperObject::Item_Deterioration Mechanism of affiliated objects was moved for common use. Previously it was available only for vehicle’s trunk. One object can have up to five derivatives. Numbers of the derivative objects are defined in uint16 ProtoItem::ChildPid_0..4. By creation of base object, derivatives are created automatically. For now Mapper doesn’t create affiliated obkects automatically, but it will be fixed in further. For setting the place of situation, special field ChildLines_0..4 is used (former MiscEx.Car.Bag_0..1, see below by recording format). Also it is possible now to define automatic blocking for any objects, not only for vehicles – field BlockLines (former MiscEx.Car.Blockers). Recording format for Child/BlockLines – XYXYXY..., where X is direction number (0..5/7), Y is the amount of steps (1..9) in this direction (previously for vehicle’s trunk for another recording format - XXXX...). Maximum amount of steps for BlockLines – 50, for ChildLines – 6. For operating with derivative objects use methods Item@+ Item::GetChild(uint childIndex) const (бывшая Item@+ Item::CarGetBag(int numBag)) bool Map::CheckPlaceForItem(uint16 hexX, uint16 hexY, uint16 pid) const (bool Map::CheckPlaceForCar(uint16 hexX, uint16 hexY, uint16 pid) const) Fields renaming affected lots of scripts, be attentive. Old proto format is converted to the new one automatically, but Object Editor (ObjectEditor.exe) still operates only with old format. It will be fixed soon. To replication.fos and entires.fos scripts the influence of right-angled geometry was added. Script main_planes.fos is formatted as a separate module. All pragmas were move to the end of _defines.fos. Drop of FPS when switching on view/attack borders was fixed. Rev.165 http://www2.xp-dev.com/sc/change/94227/165 Fix for the ASCompiler. Rev.164 http://www2.xp-dev.com/sc/change/94227/164 Changed ASCompiler output format to “filename(linenumber) : message”. Such output is recognized by a number of IDEs and allow jumping to the code by a double-click on the output line. Rev.163 http://www2.xp-dev.com/sc/change/94227/163 Tabs management system was added to Mapper. Now one tab can have numerous subtabs. Tabs names and its filling is defined in mappers scripts. But some tabs already have initial filling. Item – items prototypes by defaults (items.lst); Tile – tiles by default, search is performed in ‘art/tiles/’; Crit – critters prototypes by defaults (critters.lst); Fast – displays often used objects, initial state is defined in scripts (InitializeTabs in mapper_main.fos); Ign – Ignore, shows ignored objects which are not shown on the map; Inv, Msg, Map – special tabs which have nothing to do with the mechanism, but it is possible to change its name throug TabSetName (see below). The tab can have subtabs only of one type – tiles, critters or items (displayed in priority order). For items and critters the subtab’s name is chosen by user, for the tiles it is performed automatically. The lowest subtab “all” contains all prototypes (or tiles) on a list above. For activation the menu of tab choosing – perform a double click on it. If positions are numerous then use mouse wheel for navigation (scroll speed: normal – 4, with pressed shift – 8, with pressed ctrl – 20, with pressed alt – 50). For tabs management use scripts, functions Tab* uint TabGetTileDirs(int tab, string@[]+ dirNames, bool[]+ includeSubdirs) uint TabGetItemPids(int tab, string@+ subTab, uint16[]@+ itemPids) uint TabGetCritterPids(int tab, string@+ subTab, uint16[]@+ critterPids) void TabSetTileDirs(int tab, string@[]+ dirNames, bool[]+ includeSubdirs) void TabSetItemPids(int tab, string@+ subTab, uint16[]@+ itemPids) void TabSetCritterPids(int tab, string@+ subTab, uint16[]@+ critterPids) void TabDelete(int tab) void TabSelect(int tab, string@+ subTab) void TabSetName(int tab, string@+ tabName) int tab – tab’s number (see Tabs in _mapper_defines.fos); string@[]@+ dirNames – folder’s names for tiles searching; bool[]@+ includeSubdirs – turn on search in subfolders; string@+ subTab – subtab’s name; uint16[]@+ itemPids – item’s prototype numbers array; uint16[]@+ critterPids - critters’s prototype numbers array; string@+ subName – tab’s name. Global variable was added bool __SplitTilesCollection = true It defines whether tiles should be divided into groups in the folders. The group is defined as a string in the file’s name before the first number (e.g. abc12.png - group abc), if the number is absent, then group is defined as '<other>'. In connection with these changes, the global functions are deleted uint GetFastPrototypes(uint16[]@+ pids) void SetFastPrototypes(uint16[]@+ pids) Other updates. Fixed incorrect work of server/client which caused some bugs. Global variable int __GeometryType was added to _defines.fos for the indication of chosen geometry. See constants in _defines.fos Geometry. Depending on its value, tab with Tactics and Arcanum is added. Ability to work with file names which include spaces is added. When loading ART files, it is possible to flip them vertical or horizontal. Parameters in the file name - ‘v’/‘V’ and ‘h’/‘H’. When loading SPR file, if you define in changing color parameter – layer’s number -1, then the modificator will be applied to all four layers. Rev.162 http://www2.xp-dev.com/sc/change/94227/162 Quest perks “Midnight Child”, “Nosderatu Blood” were added (Modoc, “Night’s tender”). Now new home position is set for NPC-travelers (Devin, Eli) when they enter new location. Female characters now can finish quest of removing childkiller status. Allies HP and resistances were increased in “Dangerous hunt” quest. Also a simple dialogue is added to them. The forged letter is now removed from the inventory when finishing quest “Forgery”. Edvin in Klamath tells with a popup phrase when starting gathering items. A delay was added to the prisoner giving the cues in “Ernst Telman” quest. Ability of intimidating the NPC visitor if it’s a woman was deleted in quest “Wrath”. Barcus now reacts with popup phrases to the futher meetings with the player who have done quest “Amnesty for Joshua”. Upon the receiving lieutenant rank of Vaultcity’s Guard, player is awarded with a black combat armor. In “Diplomatic Courier” quest time (24 hours) which Sheiman takes for the thoughts now is calculated correctly. Upon finishing this quest, player receives +1 reputation in NCR. Sell price of the buggy which player receives upon finishing the quest in NCR was set to zero. Dialogue launch when player uses an antidote in quest “Poisoned Regulator” in Redding was fixed. Players who gained Vaultcity citizenship now can trade with Randal with no restrictions. Reputation calculation in quests “Real Cowboy”, “Hub Bibliography” in NCR was fixed. If player refuses the reward in “Hub Bibliography” quest, he gains +2 reputation (was +1) when he delivers 5 books. Increasing raider’s resistances and skills every new attack on NCR was switched off. Ability of crafting and buying chitin armor was added. Giant beetles drop chitin. Items with ITEM_GAG flag deletion upon player’s death was fixed. Rev.161 http://www2.xp-dev.com/sc/change/94227/161 Ability to customize game geometry was added, either the support of isometric projection with quadrangles was. For customization use global variables bool __MapHexagonal – isometry type: true - hexagonal, false - quadrangular; int __MapHexWidth – hex width; int __MapHexHeight – hex height; int __MapHexLineHeight – hex line height; int __MapTileOffsX/Y – ground tiles offset; int __MapRoofOffsX/Y – roof tiles offset; int __MapRoofSkipSize – amount of hex per one roof tile (necessary for its correct hiding); float __MapCameraAngle – 3d model rendering angle; bool __MapSmoothPath – path smoothing when moving; string __MapDataPrefix – path and prefix for the geometry files. Operational sprites for geometry are situated in art/geometry/. Quadrangular isometry use 8 directions, hexagonal – 6. In script config.fos in function InitializeGeometry(), necessary adjustments for 3 games (Fallout1/2, Fallout Tactics and Arcanum) are added. This function can be called in server, client and mapper scripts, as all three of them need geometry information. Global variables uint __LookDir4, uint __LookSneakDir4 were added for 8-directional geometry. Fixed Tactics SPR files loading. Mode MODE_NO_TALK was added. It affects ability to talk and appearance of the icon in the context menu. Double click on hex, affecting avatar’s moving, was fixed. Creation of descriptions for critters prototypes (FODLG.MSG) with high identifiers was fixed. Image of elephant gun was added in 3d. Rev.160 http://www2.xp-dev.com/sc/change/94227/160 Fixed a bug with server and client communication. Fixed a bug with wrong sprites display. Rev.159 http://www2.xp-dev.com/sc/change/94227/159 Documentation's update, mistakes fixes. Rev.158 http://www2.xp-dev.com/sc/change/94227/158 Script start_server_client.fos was renamed to config.fos and now it isn't simply pasted into function start(), but presented as a separate module with function InitializeGame(). Macros for operating with time were moved from _macros.fos to separate module _time.fos. Slight fix of drugs.fos. Rev.157 http://www2.xp-dev.com/sc/change/94227/157 Errors messages in server log when operating with functions GetPlayerName/GetPlayerId were removed. Also GetPlayerName returns null now, if the player wasn't found. Bugs of reputation calculation were fixed. Rev.156 http://www2.xp-dev.com/sc/change/94227/156 Ability to affect the colors when loading Tactics sprites was added. To make color shift, define necessary values in file name’s parameters (“$”). Format: fileName$[index,r,g,b]animName.spr (can be any amount of shifts […]) where index – body part’s number (0 - miscellaneous, 1 - skin, 2 -hair, 3 - armor); r,g,b – color shift for the each component, can be negative Example: someSprite$[2,50,-30,-20]anim1.spr – load sprite someSprite.spr, with animation anim1 and hair’s color shift in RGB (50,-30,-20). Additional flags for operating with color’s shift were added for Tactics critters (_animation.fos, animation.fos). Use macros ANIM1_COLOR_SKIN(index), ANIM1_COLOR_HAIR(index), ANIM1_COLOR_ARMOR(index) for values defining. Index can take on value from 0 to 15, appropriate to it values of color shift look in array colorOffsets of animation.fos script. For ability testing you can use text function void ColorOffset(Critter& cr, int skin, int hair, int armor) in test.fos. Rev.155 Some native structures were fixed. Rev.154 http://www2.xp-dev.com/sc/change/94227/154 AngleScript is updated to revision 822. Ability of sorting is added to scripts arrays Ascending sort void array::sortAsc() void array::sortAsc(uint index, uint count) Descending sort void array::sortDesc() void array::sortDesc(uint index, uint count) For user’s classes sorting realize opCmp method http://www.angelcode.com/angelscript/sdk/docs/manual/doc_script_class_ops.html Vehicle animations on the global map and item’s animations in Mapper are fixed. Some points in operating with critter’s animations are fixed (animation.fos). Global variable __GmapActive is fixed. Global variable for setting min. offline time after that client will completely exit from the game was added. uint __MinimumOfflineTime = 180000; // 3 minutes Rev.153 http://www2.xp-dev.com/sc/change/94227/153 Additional constants for operating with Chosen's actions were updated (Get/SetChosenActions, for CHOSEN_USE_ITEM). Rev.152 http://www2.xp-dev.com/sc/change/94227/152 Additional constants for operating with Chosen's actions were added (Get/SetChosenActions). Rev.151 http://www2.xp-dev.com/sc/change/94227/151 Bugs with incorrect files's names path detecting were fixed. Rev.150 http://www2.xp-dev.com/sc/change/94227/150 3d models loading was fixed. 3d models rendering to sprites was fixed. Critters animations were fixed (death in 2d and 3d modes). Shift calculation for some models was fixed. SAY_DIALOG/SAY_APPEND mechanics was fixed. (by Atom) Server’s config loading in Mapper was fixed. (by Atom) File HashNames.lst was added to client. Names of files which contain parameters (‘$params’) should be entered in it. If you use such names in the prototypes, Mapper or scripts GetStrHash), then include this name to this list. Format of writing: [any number] [file’s name] [end of string] E.g. 0 art\scenery\BrazureFire$t.ART 0 art\scenery\BrazureFire$t3.ART In further it is possible to detect and transmit such names automatically, but for the present use this system. Roof disappearing if it is situated in odd hex in two axis. Rev.149 http://www2.xp-dev.com/sc/change/94227/149 Documentation was updated. Some fixes in Arroyo (Minoc’s quest about raiders). Usage mode was added for sledgehammer and supersledge (for resources mining). Guard lib was brought into common standard of scripts formatting. Rev.148 http://www2.xp-dev.com/sc/change/94227/148 Two reserved variables were added to HLSL effects float AnimPosProc – current animation’s per cent 0%..100%, [0,1); float AnimPosTime – current animation’s time in seconds. Client’s hanging under certain circumstances was fixed (e.g. receiving item’s data when player in process of moving between maps). Dump generation when closing server application without stopping was switched off. Generation of unnecessary messages to log in function animation_ animation.fos was fixed. Rev.147 http://www2.xp-dev.com/sc/change/94227/147 Parameters for critter’s movement controlling were added. Time for moving in milliseconds: #define ST_WALK_TIME (117) #define ST_RUN_TIME (118) Ability to move #define MODE_NO_WALK (539) #define MODE_NO_RUN (540) If these parameters are equal to zero, then data is taken from CritterTypes.cfg. Loading of some ART files was fixed (Arcanum). Ability of specifying special image processing was added. Palette elements will be transparent depending on its index in the palette (alpha = 255 – index). To chose this loading type - use symbol “t” (or “T”) in file name parameters. E.g. ‘filename$t.art’; also you can combine with palette, e.g. ‘filename$1t.art’. Ignoring of spec.symbol “/r” was additionally added for splitEx function. In functions void DrawSprite(... bool applyOffsets) if applyOffsets == true there were additionally added shifting of width/2 and height of the image. Unnecessary fo3d files were deleted. Palette influence for Arcanum critters was fixed. Rev.146 http://www2.xp-dev.com/sc/change/94227/146 One more fix of incorrect critter displaying. Rev.145 http://www2.xp-dev.com/sc/change/94227/145 Quest “Communicated” was added (Redding). Caravaneers phrases were fixed, now they tell correct departure dates. Quest “Honomer’s bodyguard” was added (San Francisco). Retina scanner in GECK town was fixed. Slight fixes of the hubbolog’s map in San Francisco. Special result function for skill rise calculation through a dialogue was added.(dialog@r_SkillUp) The script for quest locations creating was fixed (hostile_location_quest.fos), allies and enemies scripts now work correctly. Resetting of a quest variable when deleting the location was fixed. Script for realization a dialogue between several npc’s with popping up phrases was added. (npc_dialog.fos) Story line implementation was continued. Maps numeration in the location with mutants was fixed (quest string “Guardian”). Rev.144 http://www2.xp-dev.com/sc/change/94227/144 Critter’s hitpoints regeneration was moved to scripts, you can look realization in function critter_idle main.fos. Global function for critters sampling from the global map was added to server scripts. uint GetGlobalMapCritters(uint16 worldX, uint16 worldY, uint radius, int findType, Critter@[]@+ critters) Additionally to methods bool Map::GetNearEntireCoords(int& entire, uint16& hexX, uint16& hexY) const bool Map::GetEntireCoords(int entire, uint skip, uint16& hexX, uint16& hexY) const were added methods bool Map::GetNearEntireCoords(int& entire, uint16& hexX, uint16& hexY, uint8& dir) const bool Map::GetEntireCoords(int entire, uint skip, uint16& hexX, uint16& hexY, uint8& dir) const which return direction. Global variable which specifies if the password in the client’s login window should be hidden was added bool __HidePassword = true Incorrect critters creation in Mapper was fixed. Displaying of switching critter’s type 3d->2d on the client’s side was fixed. Rev.143 http://www2.xp-dev.com/sc/change/94227/143 Fixed critters loading in Mapper (141 revision's bug). Rev.142 http://www2.xp-dev.com/sc/change/94227/142 Fixed server loading (the previous revision bug). Rev.141 http://www2.xp-dev.com/sc/change/94227/141 Mechanism for identifying critter’s animation file name was added. Now you can operate with critter’s animations from Tactics and Arcanum without any conversions. All data files which you need for enabling one or another critters are cited in CritterTypes.cfg comments. The next critters were added to SDK: Humanoid, Behemoth, MTT, Pacification. They are repacked to the separate archive ftrobots.bos. But all available critters from Tactics and Arcanum are added to CritterTypes.cfg with correctly defined parameters for them (by Tabloid), so you can enable the needed data files and use the critters. All animations are transformed to the general appearance (ANIM2_2D*, ANIM2_3D* -> ANIM2*). The functional for operating with them is moved to scripts. In some places where these values are used, numeric literals are replaced by string constants, which description you can find in DefineNames.lst. Fixes were made in weapons prototypes (weapons.fopro) and fo3d templates for 3d critters from VanBuren (_VBHuman.fo3d, _VBMob.fo3d, _VBWeapon.fo3d). Now three sets of primary and secondary animations are used for critters, for three condition types – alive, knockout, dead const uint Critter/CritterCl::Anim1/2Life/Knockout/Dead (const uint Critter/CritterCl::Anim1/2 were deleted). These values are used for animations as default. Pay attention that Anim1 additionally is summed up with animation of the weapon in the active slot, bit-by-bit OR. It is necessary for assignation certain values on continuing basis (e.g. sitting, lying position). For changing these values the next method is used void Critter::SetAnims(int cond, uint anim1, uint anim2) int cond – defines the position to apply values to (COND_* in _defines.fos), if null it is applied to all three; uint anim1, anim2 – animation values. Deleted const uint8 Critter/CritterCl::CondExt Accordingly all COND_*_* for them are deleted. Now position is differentiated by the animations. In connection with it, the next methods specifications were changed void ToDead(uint anim2, Critter@+ killer) bool ToKnockout(uint anim2begin, uint anim2idle, uint anim2end, uint lostAp, uint16 knockHx, uint16 knockHy) void EventKnockout(uint anim2begin, uint anim2idle, uint anim2end, uint lostAp, uint knockDist) void EventSmthKnockout(Critter& fromCr, uint anim2begin, uint anim2idle, uint anim2end, uint lostAp, uint knockDist) uint anim2begin, anim2idle, anim2end – animations of the knockout begging, staying in it and coming to yourself. Standard macroses are defined for the transfer KNOCKOUT_ANIM2_DEFAULT, KNOCKOUT_ANIM2_STUNNED (in _animation.fos). Also Mapper operates now not with CondExt, but with Anim1/Anim2 for the current Cond. Global variables for client/mapper for defining combat mode animations were added uint __Anim2CombatBegin = ANIM2_BEGIN_COMBAT uint __Anim2CombatIdle = ANIM2_IDLE_COMBAT uint __Anim2CombatEnd = ANIM2_END_COMBAT The next reserved client/mapper functions were added (animation.fos): - string@ critter_animation(int animType, uint crType, uint anim1, uint anim2, uint& pass, uint& flags, int& ox, int& oy) Function which is called when loading necessary animation. Returned value - file’s path and name. int animType – critter’s animation type (new parameter which is set in CritterTypes.cfg); uint crType – critter’s type; uint anim1, anim2 – animation’s indexes; uint& pass – function call’s number, is changed by the user. If animation loading failed and this parameter was changed, then function will be recalled (in certain cases you should try to load different files for the one animation); uint& flags – flags, at the present moment two of them – to take the first or the last frame from the animation ( Anim loading flags in _animation.fos); int& ox, &oy – shifts for the animation, in pixels. - bool critter_animation_substitute(int animType, uint crTypeBase, uint anim1Base, uint anim2Base, uint& crType, uint& anim1, uint& anim2) If animation loading failed (and uint& pass wasn’t changed), then this function is called for animation substitute detection (e.g. left hook can be replaced by the right hook). true is returned if the substitute was found (engine also additionally checks if crType, anim1, anim2 were really changed), false – no substitute, animation won’t be loaded and played. int animType – see above; uint crTypeBase, anim1Base, anim2Base – base critter’s and animation’s type, which were at the start; uint& crType, &anim1, &anim2 - critter’s and the current animation’s type for the substitution - bool critter_animation_fallout(uint crType, uint& anim1, uint& anim2, uint& anim1ex, uint& anim2ex, uint& flags) As Fallout’s animations are still loaded by the engine (additional shifts calculation and animations pasting together is needed), for determining animations conformity this function is called, i.e. instead of critter_animation for fallout’s animations this function is called. true is returned if animation is presented, false – not. Method bool Critter::IsAnim3d() const is deleted, use instead of it the global function int GetCritterAnimType(uint crType) values look in Anim types _animation.fos. Critters actions sounds now are played in the scripts, in animation_2d/3d_process. New mechanism for sound file name identification was made, look PlayAnimSound in animation.fos. Critters prototypes were divided into fallout’s (fallout2.fopro) and TLA's (tla.fopro). Bug with roof’s non-transparency in Mapper was fixed. Name indication of chosen critter or tile prototype in mapper was added. Format fo3d now recognizes named constants DefineNames.fos, namely for modificators Mesh, Subset, Layer, Value, DisableLayer, DisableSubset, Texture, EffDef (для Dword), Anim, AnimSpeed, AnimEqual. Global server variable for determining call frequency was added GLOBAL_PROCESS_MOVE uint __EncounterTime = 5000 Global client variable for determining frequency of foolish trick animation call was added uint __CritterFidgetTime = 50000 is deleted using formula Random(__CritterFidgetTime, __CritterFidgetTime * 2) Item prototype’s parameter was deleted bool ProtoItem::Weapon_RequiresActivation now if animation doesn’t exist, it is just not played. Parameters uint16 MapperObject::Scenery_ToMapX/Y were deleted, in mapper also. Moving between locations is performed by entery points. In weapons prototypes types of action animations were substituted from numeric by string constants (accordance look in DefineNames.lst). Appropriate changes were performed in ObjectEditor. Client functions PlaySound andPlayMusic now return bool, signalizing if file was found or not. Global functions for server/client/mapper which return appropriate values from CritterTypes.fos were added uint GetCritterAlias(uint crType) string@ GetCritterTypeName(uint crType) string@ GetCritterSoundName(uint crType) Mapper’s scripts were moved to server’s scripts folder. Also the whole set of functions for operating with CritterTypes.fos was added to Mapper bool IsCritterCanWalk(uint crType) bool IsCritterCanRun(uint crType) bool IsCritterCanRotate(uint crType) bool IsCritterCanAim(uint crType) bool IsCritterAnim1(uint crType, uint anim1) int GetCritterAnimType(uint crType) uint GetCritterAlias(uint crType) string@ GetCritterTypeName(uint crType) string@ GetCritterSoundName(uint crType) Specifications of client’s reserved functions were changed animation2d_process, animation3d_process parameter bool animateStay was added to the beginning. It indicates if any action is performed now (false) or stand animation (true). Reaction for global map’s interface buttons pressing when the size of map’s area (GmapMap) covers the buttons area was fixed. Bug with incorrect loading/saving maps in which script’s or function’s name consists of spaces was fixed. Bug with potential server crashing when using AI_PLANE_MISC was fixed. Rev.140 http://www2.xp-dev.com/sc/change/94227/140 Some robots from Fallout Tactics (look the next revision). Rev.139 http://www2.xp-dev.com/sc/change/94227/139 The next quests were added in San Francisco: “Introduction into Hubbology”, “Hub’s justice”. Transport to Atoll is available for the players who are doing “Introduction into Hubbology” quest (npc is in the docs area of San Fracisco); Automatic transfer to the command center of GECK city citizens when entering the map was removed. Now citizens can choose spawn point. Quest location “Hubbologists laboratory” was added (author JunoReactor). Rev.138 http://www2.xp-dev.com/sc/change/94227/138 Arroyo: Quest “Evidence of Chosen’s death” was added (Todd Stewart); Two courier quests were added (Cassidy, Todd Stewart); Encounter fixes: Fixed bugs of the 120 revision; Fixed random encounters where normally aggressive npc’s didn’t attack after fighting with the other npc’s; Fixed bug with unlimited experience in Den; Fixed mistakes in NCR quests cooldowns; Slight dialogues fixes. Rev.137 http://www2.xp-dev.com/sc/change/94227/137 Ability to specify the layer of tiles/roof to organize correct query of displaying. Totally there can be 5 layers, from 0 to 4. You can switch between them with pressing shift and pressing appropriate key (from 0 to 4). Indication of the current layer is specified in the map’s supplemental information (in upper right corner). Specification of MapperMap AddTile/AddTileName methods was expanded, also layer parameter was added void AddTile(uint16 hexX, uint16 hexY, int offsX, int offsY, int layer, bool roof, uint picHash) void AddTileName(uint16 hexX, uint16 hexY, int offsX, int offsY, int layer, bool roof, string@+ picName) Functions for hash calculation by file’s name and inverse function were added to the native scripts const char* (*GetNameByHash)(uint hash); // Get name of file by hash uint (* GetHashByName)(const char* name); // Get hash of file name The functional for operating with the chosen’s actions was added to the client’s scripts. For taking or specifying the actions use functions uint GetChosenActions(uint[]@+ actions) void SetChosenActions(uint[]@+ actions) This array consists of blocks of seven variables, the first is the type, the other are the parameters. Values of types and parameters look in _client_defines.fos Chosen actions. Argument with the location was added to the reserved function for checking the entries into this location bool entrance_FuncName(Location& loc, Critter@[]& critters, uint8 entrance) The next events were added for critters CRITTER_EVENT_USE_ITEM_ON_ME bool EventUseItemOnMe(Critter& whoUse, Item& item) CRITTER_EVENT_USE_SKILL_ON_ME bool EventUseSkillOnMe(Critter& whoUse, int skill) In the calls stack it is situated between CRITTER_EVENT_USE_* and the global handler. That is CRITTER_EVENT_USE_ITEM for the player + CRITTER_EVENT_SMTH_USE_ITEM for those who can see the player. CRITTER_EVENT_USE_ITEM_ON_ME The global handler critter_use_item. and CRITTER_EVENT_USE_SKILL for the player + CRITTER_EVENT_SMTH_USE_SKILL for those who can see the player. CRITTER_EVENT_USE_SKILL_ON_ME The global handler critter_use_skill. The supplemental information (current hex, fps, etc.) in Mapper is presented in the upper right corner. Bug of 135 revision with transparent tiles when placing them was fixed. Data connected with unfinished mechanism of textured grid was deleted. Rev.136 http://www2.xp-dev.com/sc/change/94227/136 Maps converted to text format. Rev.135 http://www2.xp-dev.com/sc/change/94227/135 Now only text format is used for maps, it is binary only for loading. All maps are converted to the text format (they will be uploaded with the next revision). Extension of this format is “fomap”. To convert your own maps to the new format – execute in Mapper ““#ConvertMaps”, then you should manually or using Mapper set required values in Time, NoLogOut, ScriptModule, ScriptFunc fields, which values you can see in file Maps.cfg. File Maps.cfg is not used anymore, locations prototype numbers are defined opposite to their name in file Locations.cfg, as in the most cases the one map prototype is used for the one location. According to these changes, the next MapperMap methods are deleted: uint GetTile(uint16 tileX, uint16 tileY, bool roof) const void SetTile(uint16 tileX, uint16 tileY, bool roof, uint picHash) string@ GetTileName(uint16 tileX, uint16 tileY, bool roof) const void SetTileName(uint16 tileX, uint16 tileY, bool roof, string@+ picName) And the next are added: uint GetTilesCount(uint16 hexX, uint16 hexY, bool roof) const void DeleteTile(uint16 hexX, uint16 hexY, bool roof, uint index) uint GetTile(uint16 hexX, uint16 hexY, bool roof, uint index) const void AddTile(uint16 hexX, uint16 hexY, int offsX, int offsY, bool roof, uint picHash) string@ GetTileName(uint16 hexX, uint16 hexY, bool roof, uint index) const void AddTileName(uint16 hexX, uint16 hexY, int offsX, int offsY, bool roof, string@+ picName) Also the next fields are added: const int WorkHexX const int WorkHexY int Time bool NoLogOut string ScriptModule string ScriptFunc The next methods are deleted (as their technology is not good enough for now): string@ GetTerrainName(uint16 tileX, uint16 tileY) cons void SetTerrainName(uint16 tileX, uint16 tileY, string@+ terrainName). Function bool SaveMap(MapperMap@+ map, string& fileName, int pathType, bool text, bool pack) now looks as bool SaveMap(MapperMap@+ map, string& fileName, int pathType). The ability to transmit commands /text /pack when saving by the console is deleted respectively. Several functions for operating with map’s fields were added to mapper script (you can do this procedure simply editing necessary field in the map’s file with text editor): #MapTime value – map’s time in minutes; #MapNoLogOut value –possibility to log out on the map; #MapScriptModule moduleName – script, module’s name; #MapScriptFunc funcName – script, function’s name. Now it is possible to place lots of sprites on one hex. Be attentive, fallout’s tiles have the same size and if you place two tiles on the same hex, you won’t see it (only if you select it , it will be less transparent than the others). Take it into account when you place or copy-paste tiles. Function #ClearTiles can help you with this problem, it deletes superfluous tiles from the hex. So, if you operate with fallout’s tiles and you don’t need several tiles on the same hex, execute this script when you finish work. Also you can place tiles on every hex, not in two. Ability of shifting is added for tiles. To produce tile shift just make the same operations as switching between tiles, but additionally pressing shift. Also you can use the same shift procedure for items. To cancel shift, press Alt with Shift and move objects. Fixed 130 revision’s bugs. Fixed bug with absence of shifting in fofrm with one sprite. Fixed bug with error in loading sprites in scripts (LoadSprite), which caused several other bugs. Remained ini files were formatted. Rev.134 http://www2.xp-dev.com/sc/change/94227/134 Config was uploaded by mistake. Take into accont, don't use config file from 132 and 133 revisions, admin pass is "hh" there. Rev.133 http://www2.xp-dev.com/sc/change/94227/133 Redding maps fixed, quest NPC were added. Rev.132 http://www2.xp-dev.com/sc/change/94227/132 Fixed "Anger" quest, the missing dialogue was restored, now it can be finished. Added quest "Forgery". (VC, Linnet) Rev.131 http://www2.xp-dev.com/sc/change/94227/131 New quests "Anger", "Ernst Telman" were added. (VC, Linnet) Fixed bug in VC guard's AI scripts. Fixed mistakes in quest “Amnesty for Joshua” dialogues. Ability to cancel their service for mercs/companions was added if the owner exits from location to the global map. Rev.130 http://www2.xp-dev.com/sc/change/94227/130 Support of graphics files SPR, TIL, ZAR from Fallout Tactics was added. Support of data files BOS from Fallout Tactics was added (works as ZIP archieve). For loading certain animation from SPR files, state it in the name after “$” sign. E.g. loading CrouchAttackClubSwing animation from file Mutant.spr - “Mutant$CrouchAttackClubSwing.spr”. The first frame of first animation is taken without direction. Also, ability to set certain palette for ART files (graphics files from Arcanum) was added – state palette’s number (from 0 to 3) after “$” sign. E.g. to load dfmbnsba.art file with the second palette - “dfmbnsba$1.art”. First palette is taken without direction (that is 0). Operation with sprites was changed. Now all interface graphics (which is set in ini files) is represented not as one sprite, as continuously played animation. Functional for operation with currently drawn sprites on the map was added to the native client’s and mapper’s scripts. Structures: struct Sprite – displayed sprite; struct SpriteInfo – additional information about the sprite. Functions: Sprite* (*GetDrawingSprites)(uint& count); - currently drawn sprites, if no sprites (on the global, menu), then NULL is returned and count == 0; SpriteInfo* (*GetSpriteInfo)(uint sprId); - getting additional information about certain sprite; uint (*GetSpriteColor)(uint sprId, int x, int y, bool affectZoom); - getting pixel’s colour, with the ability of taking zoom into account; it isn’t available for 3d models yet; format - ARGB; bool (IsSpriteHit)(Sprite sprite, int x, int y, bool checkEgg); - test whether the point on the display matches with the current sprite with taking zoom, transparence and egg of transparence into account (optional). The reserved native global variable GameOpt was renamed to Game. Global variables int __MouseX, __MouseY for current mouse position indication were added. Function void GetMousePosition(int& x, int& y) was deleted. Indication of opened console bool __ConsoleActive was added to client’s scripts. Bug with memory leak when rendering 3d graphics to sprites was fixed. Rev.129 http://www2.xp-dev.com/sc/change/94227/129 Added ability to use robot-guards from Sierra as bodyguards (for those who had completed quest "No-sweat job" in Navarro) Added quest "Amnesty for Joshua" (VC, Amanda) Work of teleport on special encounter "Mad scientist's laboratory" was restored. Rev.128 http://www2.xp-dev.com/sc/change/94227/128 Second stable SDK assembly. For the purpose of decreasing repository's size, assemblies will be stored in another places. Links you can find in text files. Rev.127 http://www2.xp-dev.com/sc/change/94227/127 Quest "No-sweat job" in Navarro. Rev.126 http://www2.xp-dev.com/sc/change/94227/126 Mercenaries and companions mechanism (merc.fos) was updated. Now every companion has term of service. Companions don’t meddle in player’s showdowns with NPC’s. Fixed quest “Dip.Courier”. Now it can be finished. Fixed quest “Dock’s attack”. Now it can be finished after killing 5 giant insects. Added 3 new mercs for Lo Pan. Updates NPC-travellers mechanism (traveller.fos). The first NPC-traveller was added (eli.fos). Functions which cooldowns checkup for NPCs in dialogues were fixed. When character dies, all items with flag ITEM_GAG are deleted. Fixed cooldowns for quests “Hub bibliography”, “Sick Brahmin” and in the dialogue with dr.Klaus for stimpacks and first aid kits delivery. When NPC repairs an item, ammo is ejected. Script for NPC monologues realization was added. (monologue.fos) Rev.125 http://www2.xp-dev.com/sc/change/94227/125 Fixes of password encryption in the client's files. Rev.124 http://www2.xp-dev.com/sc/change/94227/124 Fixed bug with graphics loading in the previous update. Rev.123 http://www2.xp-dev.com/sc/change/94227/123 DAT2.1 (Arcanum) files support was added. ART (Arcanum) graphic format was added. Function for operating with strings splitEx was added. Principle is the same as in split, but empty elements are not included in the result array. Also spaces/tabs/string_hyphenation are deleted from the result elements. Examples: split(“A|B||D”, “|”) -> {“A”, “B”, "", “D”} splitEx(“A|B||D”, “|”) -> {“A”, “B”, “D”} split(“A| B\t\t||D| E|F ”, “|”) -> {“A”, “ B\t\t”, "", “D”, “ E”, “F ”} splitEx(“A| B\t\tC||D| E|F ”, “|”) -> {“A”, “B”, “D”, “E”, “F”} Additional DrawSprite functions for the client and mapper were added. You can transfer true with the last argument and as the result, the shift which is stored in the current file will be added to the sprite’s position. void DrawSprite(uint sprId, int sprIndex, int x, int y, uint color, bool applyOffsets) void DrawSprite(uint sprId, int sprIndex, int x, int y, int w, int h, bool scratch, bool center, uint color, bool applyOffsets) Fixed bugs with incorrect ini settings parsing in the scripts. Rev.122 http://www2.xp-dev.com/sc/change/94227/122 Client scripts updates: For the reserved function void render_iface(uint layer) was added calling with value layer 100 to give the ability of drawing on the global map. Also the next global variables were added for operating with the global map: bool __GmapActive – whether global map is active and all the variables below are correct; bool __GmapWait – whether waiting mode of encounter affirming is active; float __GmapZoom – current zoom, don’t forget it to take into account while drawing a map; int __GmapOffsetX, __GmapOffsetY – map shift from the zero-coordinate (up-left corner); int __GmapGroupX, __GmapGroupY – player’s group coordinates; int __GmapMoveX, __GmapMoveY – destination point’s coordinates; float __GmapSpeedX, __GmapSpeedY – movement speed every 50 ms, without taking relief into account For example, calculating the current pixel group’s position - (x = __GmapGroupX / __GmapZoom + __GmapOffsetX), (y = __GmapGroupY / __GmapZoom + __GmapOffsetY). Fixed bug with hanging when drawing 3d model, occurred in the last update. Fixed missing bracket in English texts. (by Kilgore) Rev.121 http://www2.xp-dev.com/sc/change/94227/121 Added more mouse sensitivity and now you can see mouse’s speed percent in the settings. Updated FOConfig.exe. Added AlwaysRun option. Possible values for option Mouse speed were corrected. Option Sleep now can be set to -1, that means switching it off (maximum performance). Added ability of redirecting keyboard’s symbol codes input. For this, use option KeyboardRemap (in FOnline.cfg). It is performed after space – X Y X Y …, where X is the code which is substituted by Y. Code numbers - http://fonline.pastebin.com/Qy3E0qwj Interface description in default.ini is formatted and commented. (by LoadRunner) Location prototypes updates: Option max_copy was deleted. Option max_players was added. It limits the amount of players who can be on the location simultaneously. Players, who can’t enter location because of exceeding the limit will see message 904 from FOGAME.MSG {904}{}{Location is overcrowded, try to enter later.} Password encryption in server *.client. files was added. Mouse shift when switching between movement modes was fixed. Also, for more accurate work, the hex mask was added – look \Client\data\art\misc\hex_mask.png. Only red colour is taken into account and when it takes on certain value, the shift to certain direction is performed (50 – 5, 100 – 0, 150 – 3, 200 – 2). The mask is optional, you can work without it. Fixed loading/saving tiles in the maps text format. Fixed global map shifting behind screen’s edge. Registration of useless clicks in mapper when switching between windows, now isn’t performed. Fixed the animation of 3d critter standing when situating them on the map. Also now 3d critters don’t play standing animation in the critter’s list. Fixed displaying of critters which have only one direction. Fixed command ~reloadscripts. Now when you mark items for deleting (DeleteItem/DeleteItems), their quantity is saved. So, in the moment when real deleting is performed, server will delete the requested number of items. Now knockout during turn-based fight leads to immediate loosing action points, not after finishing the turn. Also, frequent checks for the necessity of finishing the turn were added at the server - if critter’s dead, critter has negative AP, critter has no more AP. Scripts: Fixed critter’s flags (Critter extra flags, _defines.fos). Fixed special encounter scripts Guardian of Forever, Mad Brahmins. Script trader.fos was formatted. Reserved function was added to client scripts, which is called with attacks void hit_aim(uint8& aim) aim value can be redefined( Hit locations in _defines.fos). Function int Critter::GetScore(uint score) was added to server scripts. Specification Critter::AddScore(int score, int val) was changed to Critter::AddScore(uint score, int val). Function for calculation the size of drawn text was added to client and mapper scripts void GetTextInfo(string& text, int w, int h, int font, int flags, int& tw, int& th, int& lines) string& text – text; int w, h, font, flags – height, width, print, flags; int& tw, int& th, int& lines – total width, height and amount of strings in the current text. Rev.120 http://www2.xp-dev.com/sc/change/94227/120 Unused encounter tables for Fallout 1 and commented original’s scripts were deleted from worldmap_init.fos; Random encounters of “beasts versus beasts” type were enabled, which were presented in the scripts, but were absent in the original. Added some new kinds of non-unique random encounters. Now, if player uses to kill NPC’s of certain group or organizations on random encounters, then they become aggressive. Vault City guard’s automatic search is deactivated. Now you need to activate the dialogue to pass through. Fixes in English dialogues versions. Maps fixes. Rev.119 http://www2.xp-dev.com/sc/change/94227/119 Fixed lots of little mistakes in dialogues; Fixed bugs in some Den and Klamath quests; Maps fixes; Duplicate dialogues with different names were deleted. Rev.118 http://www2.xp-dev.com/sc/change/94227/118 Fixed modificator's argument from Parent-0-7 to Parent0-7. Rev.117 http://www2.xp-dev.com/sc/change/94227/117 Added dialogues to Arroyo doctor and his team. Slight fixes (dialogues, maps). Rev.116 http://www2.xp-dev.com/sc/change/94227/116 Library for importing different 3d models was enabled – Assimp http://assimp.sourceforge.net/ Formats that are supported: http://assimp.sourceforge.net/main_features_formats.html Built-in one is still used for X format, for other ones – this library. If you don’t need the library, you can delete it (file Assimp32.dll), client and mapper are able to work without it. Updated mechanism of linking models and animations, now you can link any animation to any skeleton from any file. fo3d format changes: Modificator ModelAnimation was deleted. Modificators Anim, RenderFrame, RenderFrames were expanded – now file name which consists needed animation is placed before the animation’s name (if you state “ModelFile”, then search is performed in the file of loaded model)/ Specification of indicating parent texture (Texture X Parent) was expanded. Now you can additionally state the mesh number and its part, from which the texture is taken - Texture X ParentY-Z, where X is the texture’s number, Y is mesh number, Z is mesh part number; parameters Y-Z are optional, you may don’t use them at all or you may use them partly (Parent, Parent0, Parent-5). Fixed bug with incorrect script processing when operating with Critter::ShowScreen. Fixed bug with incorrect operating and crashing when using Log function with some special symbols. Added Combat Armor 3d model (by Gray). Rev.115 http://www2.xp-dev.com/sc/change/94227/115 Added special encounter "Warehouse of lost doughnuts" (author - Ponchik). Scripts for some original special encounters (author - Cracker). Remade some prototypes. Windows without glasses in Vault's walls can be shooted through now. Slight fixes. Rev.114 http://www2.xp-dev.com/sc/change/94227/114 Maps for quests from the 113 revision. Rev.113 http://www2.xp-dev.com/sc/change/94227/113 Klamath: quests - "Worker searching", "Husband's alert", "Brahmins vaccination" (author - Ponchik). Slight fixes. Rev.112 http://www2.xp-dev.com/sc/change/94227/112 Finished appearance of random encounter "Ocean Trader". Slight maps, dialogues and graphics fixes. Added buttons for BarterGround, GECK town, Warehouse and Hell for the global map (author - Ponchik). Slight fixes. Rev.111 http://www2.xp-dev.com/sc/change/94227/111 Added additional mechanism for data files loading (dat, zip). It is necessary for loading data files loading before scripts initializing and processing start() function as some date is needed to be used before this (effects, prints and some other resourses). For adding files to loading – create DataFiles.cfg file in which you should list all necessary file names. The program searches for the content from the last to the first data file. This mechanism uses server, client, mapper. If list isn’t found then no alerts will be displayed. If one of the files from the list can’t be found or load error appears, then alert will be shown. Option PatchDatPath was deleted, loading of this file is moved to DataFiles.cfg. Rev.110 http://www2.xp-dev.com/sc/change/94227/110 Fixed model's borders calculating which caused nick or text shift above critter's head. Rev.109 http://www2.xp-dev.com/sc/change/94227/109 Fixed skin setting-up when registration 3d character. Fixed order of loaded packs (dat, zip) scanning while searching and parsing ini files. Addition to 106 revision – for stating specific keys for certain resolutions now are used not separate files with different names, but marks in the main file. At the start of the string write “resolution”, than min. width and height for starting using these options. By default these values are equal to zero. For example: "resolution 1024 768 key = value..." It means, that “key = value ...(and so on till the next keyword ”resolution”)” will be included in the final ini. Found data will be inserted in the main file as screen width grows. Rev.108 http://www2.xp-dev.com/sc/change/94227/108 Actual cash files. Rev.107 http://www2.xp-dev.com/sc/change/94227/107 SDK is switched to 3d players mode. Normal version will be restored after finishing mechanism debugging process. For switching off 3d players models – comment the next strings in Server\scripts\_defines.fos #define PLAYERS_3D // Enable 3d players #define PLAYERS_3D_NO_HEAD // No head slot #define PLAYERS_3D_VAULT_SUITE // Vault suite by default, not naked 3d updates: Fixed and reduced the size of attributes and weapons. Added missing attributes of opened pipboy. In the left hand now is displayed the item, which player has in the second slot. Armor’s models are divided between the current armor items in the such way, that gamer could see the difference. For example combat armor consists of power armor and the helmet, robes are replaced by jail suit and etc. Fixed animation playing during creating the new character in single mode. Added skin change processing in start intro and after Kitty’s haircut. Added skeleton’s skins. Added sound for men and women. Fixed sound name for critters parameter’s loading (CritterTypes.cfg, SoundName). Now characters walk slowly with double click if alwaysrun option is turned on. Rev.106 http://www2.xp-dev.com/sc/change/94227/106 Added ability to make 3d characters available to play for. To enable it (it is disabled as default) - comment certain strings in _defines.fos // #define PLAYERS_3D // Enable 3d players // #define PLAYERS_3D_NO_HEAD // No head slot // #define PLAYERS_3D_VAULT_SUITE // Vault suite by default, not naked Updated mechanism of working with ini files. Now, when searching for the keys, excess spaces and tabulations are skipped (now you can type “ key = value ”, previously was correct only variant “key=value”) Added function bool AppendIfaceIni(string& iniName), which enables additional ini files. If the name includes slashes, than the search is being performed from data root, if not - than from folder data/art/interface/. default.ini is added automatically by the engine, others you can enable in start() client function. Loading is performed sequentially from default.ini to ones enabled by user by turn. Every packed file is checked by the turn of loading, then in the folder. Global variable string __UserInterface was deleted. Fixed bug with incorrect parsing of animation indexes in fo3d file. Fixed bug with incorrect position of the egg of transparence in zoom mode. For better readability the next scripts were formatted: start_server_client.fos client_main.fos In the future this practice will be continued. Rev.105 http://www2.xp-dev.com/sc/change/94227/105 Documentation update - slight fixes. Rev.104 http://www2.xp-dev.com/sc/change/94227/104 Added structure of script array (ScriptArray) to native scripts. Added ability to client's native scripts of calling hex data - Field. Data is stored in Field* GameOptions::ClientMap, uint GameOptions::ClientMapWidth/ClientMapHeight. If map is loaded, than ClientMap != NULL, hex calling - ClientMap[hexY * ClientMapWidth + hexX]. Rev.103 http://www2.xp-dev.com/sc/change/94227/103 Added always run option - can be enabled in client's config file “AlwaysRun”. Disabled as default. Added global variables for AlwaysRun regulating: bool __AlwaysRun (as default - false) - enabling AlwaysRun ability; uint __AlwaysRunMoveDist (as default = 1) - run with click, if distance is equal or more than the value; uint __AlwaysRunUseDist (as default = 5) - run with using smth/dialogue/etc, if distance is equal or more than the value. TLA's mechanics is equal to original - always run with click, always run with using if distance is more than 4 hexes. Added parameter uint Critter::ItemTransferCount to native scripts. It stores the value of transferred items during the last transaction. Rev.102 http://www2.xp-dev.com/sc/change/94227/102 Optimized server operation (script calling) in one tread operation mode, performance increased up to 400%. Fixed bug with crash when calling Critter::Say* methods with parametr SAY_SAY_TITLE. Rev.101 http://www2.xp-dev.com/sc/change/94227/101 Changes in fo3d format, new specification was created - look this theme: http://www.fonline.ru/forum/showthread.php?t=19689 New format added new abilities of working with 3d objects - trasmission of texures, other paremeters, etc. Also added ability to render certain animation to sprites as for one frame, either for the whole animation. But the bug with cutting off the shade situated below the lowest edge of model still presents. Updated old fo3d files, also VanBuren's critters and weapon models were added. Changed effects structure, added effect for normal mapping (3D_NormalMapping.fx). Added transfer of real numbers through scripts, float __EffectValue0..9. Fixed bugs with loading 3ds files - miss of meshes except the first; crash if texture coordinates are not presented. Fixed bug in Mapper with data copying when copy-pasting a large number of objects. Fixed text centering of hexes amount in zoom mode. Rev.100 http://www2.xp-dev.com/sc/change/94227/100 Documentation update. Rev.99 http://www2.xp-dev.com/sc/change/94227/99 Updated documentation file, which was missed in the previous revision. Rev.98 http://www2.xp-dev.com/sc/change/94227/98 Added resourse gathering system; Documentation updating. Rev.97 http://www2.xp-dev.com/sc/change/94227/97 Fixes of "Night is tender" quest, now healing must work properly. Added preview from global map for GECK location. Rev.96 http://www2.xp-dev.com/sc/change/94227/96 Gecks counting on the location now affects its auto moving away and visibility separately; Parameter geck_enabled (Map::GeckEnabled) renamed to geck_visible (Map::GeckVisible). Rev.95 http://www2.xp-dev.com/sc/change/94227/95 Added global server function void SetChosenSendParameter(int index, bool enabled) which can denie transmitting parameters to client. Transmitting of all parameters is enabled by default. Rev.94 http://www2.xp-dev.com/sc/change/94227/94 Fixes of sea encounter maps. Rev.93 http://www2.xp-dev.com/sc/change/94227/93 Added sea encounters; Added posibility of an encounter while travelling on air/water transport; Player always have possibility of cancellation water/air encounter and never gains experience for that; Bug fix in mapper with incorrect editing critter's parameters. Rev.92 http://www2.xp-dev.com/sc/change/94227/92 Fixed displaying rating in pipboy. In mapper additional indication of cut sprites was added to make lines, which are needed for correct interaction, visible. Rev.91 http://www2.xp-dev.com/sc/change/94227/91 Added traffic encryption between server and client. Rev.90 http://www2.xp-dev.com/sc/change/94227/90 Fixed choosing automatically cut sprites in zoom mode. Rev.89 http://www2.xp-dev.com/sc/change/94227/89 Added parametr DrawOrderOffsetHexY for shifting order of drawing lower (Y axis). This is an analogue for recently deleted DrawPosOffsX. Fixed using car trunk. Different slight fixes. Rev.88 http://www2.xp-dev.com/sc/change/94227/88 Fixed exit from Redding; slight fixes. Rev.87 http://www2.xp-dev.com/sc/change/94227/87 Fix for weapon AP cost. Rev.86 http://www2.xp-dev.com/sc/change/94227/86 May be fixed bug with incorrect displaying of some tiles. Fixed bug with unworking elevators. Added restoration of effects when loosing a device (cause crashed e.g. with alt+tab) Rev.85 http://www2.xp-dev.com/sc/change/94227/85 Fixed bug with chat disappearing. Fixed AI bug when combat plans always finished with REASON_CANT_WALK. Rev.84 http://www2.xp-dev.com/sc/change/94227/84 Fix for DT params reading. Rev.83 http://www2.xp-dev.com/sc/change/94227/83 Safety checks for radio commands. Rev.82 http://www2.xp-dev.com/sc/change/94227/82 Fixes of some dialogues; translations of dialogues on Barterground; map fixes; fixes of encounter table; slight fixes. Rev.81 http://www2.xp-dev.com/sc/change/94227/81 Fixed another bug during moving on the global map. Fixed unplanned activating of b/w effect. Rev.80 http://www2.xp-dev.com/sc/change/94227/80 Fixed teleportation bug during moving on the global map. Rev.79 http://www2.xp-dev.com/sc/change/94227/79 Fixed bug with incorrect tear and wear and fuel consumption calculation during moving on the global map by car. Rev.78 http://www2.xp-dev.com/sc/change/94227/78 Fixed brightness output. Fixed outlining activation. Rev.77 http://www2.xp-dev.com/sc/change/94227/77 Added automatic sprite cutting. Main purpose – correct displaying of long walls. Parameter SpriteCut was added to prototypes and mapper (only for scenery) for modification. Cutting values: 0 – switched off, 1 – horizontal (X axis), 2 – vertical (Y axis). Wall blocks should be set manually , for that purpose six blocks with different corner types with visual indication were added. It is necessary for correct calculation of brightness and egg of transparence reaction. Numbers 6800..6805 at the end of Wall and Fast list. Fixed client instability after recent update. Primary indexes array for animations was expanded to the range ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789. For value changing use native means (structure CritterType in fonline.h). Support of effects (HLSL) loading with earlier version of compiler. Automatic attempt of compilation is performed after failure in compilation with the current library. Added data updating for client function GetIniStr in the start function (start) after each call of LoadDataFile. Mapper update: Fixed bug with error in loading tiles with extension not in lower case. Fixed algorithm of sprite displaying calculation (when big sprites were disappearing near the screen edge). Additional visual means for debugging: - Ctrl + Q: Corners type viewing; - Ctrl + W: Viewing the result of sprite cutting, linking them to hexes; - Ctrl + E: Viewing the sequence of sprites drawing. At the time of renewing NPC’s bag, only items which are not in inventory are repaired and reloaded. Added ability to set sprite shift in screen coordinates to prototypes. Fixed bug with double notification of quest state change. Rev.76 http://www2.xp-dev.com/sc/change/94227/76 Added quest “Night is tender” Rev.75 http://www2.xp-dev.com/sc/change/94227/75 Tables for sea encounters, slight fixes. Rev.74 http://www2.xp-dev.com/sc/change/94227/74 Source documentation. Rev.73 http://www2.xp-dev.com/sc/change/94227/73 SPECIAL calculating is moved to native scripts - fonline_tla.dll for server and fonline_tla_client.dll for client (must be situated in data\scripts). The other parameters which are used in the engine are needed generally for drawing GUI, but soon they’ll be moved to scripts too. Native scripts files are moved from data folder to scripts. Added bat-file make_tla.bat for their compilation (installation of MSVS8 is necessary). For example of use new methods for critter classes are added (IsInjured, IsDmgArm...), items (IsHtHAttack, IsGunAttack...) with pragma bindfunc. Example of linking global varieties of standard and native scripts is added (__HitAimEyes, __HitAimHead..., these global varieties are moved to scripts). Callback functions are added (to GameOptions) for item usage cost determination - GetUseApCost. For attack max range determination - - GetAttackDistantion. It further such functions will force out usage of critter parameters in the engine. These functions are binded at the stage of connecting of library to the engine (DllMainEx). For operating with the engine added the next functions (to GameOptions): CritterChangeParameter – for correct change of critter parameter, this function should be called firstly, then you can change the value. CritterTypes – index of CritterType structures where data from CritterTypes.cfg is stored. Added method to client’s critters for detection whether now is time of its move in the turn-based mode bool CritterCl::IsTurnBasedTurn() const Some logics of operating with turn-based mode is moved to the scripts - turn_based_process main.fos. Some recommended specifications for the reserved functions are changed - templates.fos. Min. time of dialogue or barter with NPC now is regulated by the global varieties __DlgTalkMinTime (now default 100 seconds) и __DlgBarterMinTime (now default 50 seconds). Range for all prototypes (maps, locations, items) is expanded to 30000. Fixed bug with incorrect drawing of minimap in the pipboy. Fixed bug with incorrect calculating of healing rate while registration. Fixes of Zerg’s special encounter. Rev.72 http://www2.xp-dev.com/sc/change/94227/72 Data library for script compilation (updated on 27 October) Rev.71 http://www2.xp-dev.com/sc/change/94227/71 Added Zerg special encounter. Fixed bug with incorrect names in Fixboy. Added function LoadDataFile to server scripts, analogue of client/mapper. Fixed mistiming of player movement on global map. Deleted function Critter::SendQuestVar, now alert about changing of local variable is automatic. Changed function specification void ShowScreen(int screenType, uint param, string& funcName) to void ShowScreen(int screenType, uint param, string@+ funcName), now can transmit both empty string or null. Rev.70 http://www2.xp-dev.com/sc/change/94227/70 Documentation is updated. Deleted incorrect splash-picture. Added urgent files for scripts autoaddition in Notepad++. Rev.69 http://www2.xp-dev.com/sc/change/94227/69 Added ability to use your own shaders for game graphics drawing. High Level Shader Language is used for this. Effects folder is situated in data\effects. After the first compilation they are cashed in the folder data\cache (in futher other different data will be cashed there). You can read specifications on the game engine effects in data\effects\ReadMe.txt. Added ability to link any effect to sprite or model in .fofrm and .fo3d (“effect=effect_name.fx”). For default effect changing, function void SetEffect(int effectType, int effectSubtype, string@+ effectName) was implemented into the client scripts. int effectType, effectSubtype – effect types look in _client_defines.fos (Subtype for fonts used font type); string@+ effectName – the name of the effect file (with extension) is in the folder data\effects. Added changing of detailization of game objects for demonstration. For activation press Alt+W, for return press Alt+Q. Added client function for map redrawing void RefreshMap(bool onlyTiles, bool onlyRoof, bool onlyLight) if all three parameters are false, than everything will be redrawed. Also these three parameters are incompatible. Fixed bug in mapper with impossibility of viewing 3d critters in prototypes table. At present time they can’t be ranged. Added ability to play sounds/music from different folders. void RefreshMap(bool onlyTiles, bool onlyRoof, bool onlyLight) If there isn’t slashes (‘/’,‘\’) in path name than search is performed in the folder sfx/music. If there are slashes, than in the root (“data/mysounds/mysound.ogg”). Rev.68 http://www2.xp-dev.com/sc/change/94227/68 Fixed bug in the ObjectEditor when damage type is saved incorrectly. Rev.67 http://www2.xp-dev.com/sc/change/94227/67 Fixed crashing when calling CritterCl::[Param/Stat/Perk/etc]Base in client scripts; Fixed error with recording Anydata of zero length (by Atom). Rev.66 http://www2.xp-dev.com/sc/change/94227/66 Fixed incorrect weapon prototype; errors in checking for special encounters; added decraft of the sand sack to fixboy; other little fixes. Rev.65 http://www2.xp-dev.com/sc/change/94227/65 Redding: finished map according to the last concept; - Garbage was returned to static locations; - Ammo craft on benches (beta-version); - Destruction of the sack using skill repair now gives use empty sack. - Entering Den message was moved to texts from script. Rev.64 http://www2.xp-dev.com/sc/change/94227/64 AngelScript updated to 732 revision. Added new methods for arrays: void T[]::insertAt(uint, const T&) – element inserting in specified position in the array; void T[]::removeAt(uint) – deleting the element by index; void T[]::insertFirst(const T&) – element inserting to the beginning of the array; void T[]::removeFirst() – deleting the first element; void T[]::insertLast(const T&) – element inserting to the end of the array; void T[]::removeLast() – deleting the last element; void T[]::grow(uint) – add elements (the sames as a.resize(length()+X)); void T[]::reduce(uint) – delete elements (the same as a.resize(length()-X)); T& T[]::first() – call of the first element of the array (the same as a[0]); T& T[]::last() – call of the last element of the array (the same as a[a.length()-1]). Also deleted all functions ArrayPushBack as the built-in array functional was expanded. All the scripts were fixed accordingly. Rev.63 http://www2.xp-dev.com/sc/change/94227/63 Added ability to start the server as a service. For registration/start use key “-service” (shortcut FOServerService.exe.lnk). For deleting use keys “-service -delete” (shortcut FOServerServiceDelete.exe.lnk). Added ability to log using function OutputDebugString. The log can be caught (even remotely) using program DebugView http://technet.microsoft.com/en-us/sysinternals/bb896647.aspx For switching it on in server and client configs option LoggingDebugOutput is added. Server/client/mapper will work normally now with incorrect active folders. At start you set the current folder of executable. Fixed bug with absence of replacement “x” by “ч” in built-in punto switcher. Fixed crash in turn based mode and incorrect work of Map::GetCritter(uint critterId). Rev.62 http://www2.xp-dev.com/sc/change/94227/62 Fixed bug with updating vehicle data on the global map. Fixed bug with system hanging while looking items quantity in game info. Fixed bug with the incorrect login/disconnect. Fixed bug with incorrect creating non-stacking items on the map in the number of >1. Fixed bug with incorrect critters gathering when path tracing (by Atom). CRITTER_EVENT_TALK now performed before checking NPC for settings which could restrict speaking with it. Added new mechanism for script garbage gathering (by Atom). For config file simplification, the next options were removed: ASGarbageTime, VarsGarbageTime. Deleted transfer of a group of critters into global map processing global_process, CRITTER_EVENT_GLOBAL_PROCESS. Also instead of transferring a group into global map processing global_invite, CRITTER_EVENT_GLOBAL_INVITE, now only the leader is transferred. Instead of picking group use Critter@[]@ Critter::GetGlobalGroup(). Because of that, specification methods were changed: bool Critter::EventGlobalProcess(int type, Critter@[]& group, ...) bool Critter::EventGlobalInvite(Critter@[]& group, ...) for bool Critter::EventGlobalProcess(int type, Critter& cr, ...) bool Critter::EventGlobalInvite(Critter& leader, ...) Reserved functions of critter event CRITTER_EVENT_GLOBAL_PROCESS, CRITTER_EVENT_GLOBAL_INVITE bool _FuncName(Critter& cr, int type, Critter@[]& group, ...) bool _FuncName(Critter& leader, Critter@[]& group, ...) for bool _FuncName(Critter& cr, int type, ...) bool _FuncName(Critter& leader, ...) Fixed bug with incorrect cooldown for hijacking, now it is equal for a normal lock. Added checking for unopenable door to the lock break script. Rev.61 http://www2.xp-dev.com/sc/change/94227/61 Fixed bug with incorrect reappraisal of item flags in Mapper. Fixed bug when player isn't notified about moved item. Rev.60 http://www2.xp-dev.com/sc/change/94227/60 Fixed bug with incorrect displaying of the rain on roofs. Rev.59 http://www2.xp-dev.com/sc/change/94227/59 Mapper's fix for correct operating with new folder and print's names. Rev.58 http://www2.xp-dev.com/sc/change/94227/58 For editing use program Bitmap Font Generator v1.12. http://www.angelcode.com/products/bmfont/ Print should have the next attributes - OEM RUSSIAN, Padding 1 (in all directions), Binary, all symbols should be placed on the one texture. All prints are moved in the separate folder “Client\data\fonts\”. For the example print FONT_COURIER_NEW_SMALL is added. Look _client_defines.fos, client_main.fos, CourierNewSmall.bmfc, CourierNewSmall.fnt, CourierNewSmall_0.png. Added function in client’s scripts of activating the clock which shows you the time signal comes to server and returns (ping). You can use it for restriction of input while waiting for server’s answer. Fixed crushing when looking players statistics on server. Fixed crushing of Dialogue Editor (by Atom). Rev.57 http://www2.xp-dev.com/sc/change/94227/57 Expanded mechanism of operating with ingame radio. Added flag ITEM_RADIO for radio. (in _defines.fos). Radio messages are now also sent to radios which are on the ground . For their identification engine sends them with color 0xFFFFFFFE (in map_message in client_main.fos). Realization is in script radio.fos (interface, mechanics), call from main.fos. Interface data is taken from default.ini (Radio*). You can edit it with using item or using science skill on it. Radio data is situated in general fields of several item types. That’s why it isn’t a good idea to use this flag with Doors, Keys, Cars, Weapons, Armors, Holodiscs. Transmitting and receiving functions are separated. For managing the next flags and range types are used (_defines.fos): Restriction of transmitting/receiving is stored in Item/ItemCl::RadioFlags, used by the engine: RADIO_DISABLE_SEND, RADIO_DISABLE_RECV. Restriction of switching radio state in в Item/ItemCl::RadioFlags: RADIO_DISABLE_SHIFT_SEND, RADIO_DISABLE_SHIFT_RECV - restriction of switching transmit/receive; RADIO_DISABLE_SHIFT_BC_SEND, RADIO_DISABLE_SHIFT_BC_RECV - restriction of changing distance range; RADIO_DISABLE_SHIFT_CHANNEL – restriction of channel switching. Range types are stored in Item/ItemCl::RadioBroadcastSend/RadioBroadcastRecv, are used by the engine: RADIO_BROADCAST_WORLD – works all over the world; RADIO_BROADCAST_MAP – works within the limits of the current map; RADIO_BROADCAST_LOCATION - works within the limits of the current location; RADIO_BROADCAST_ZONE(x) - works within the limits of “x” zones on the global map; RADIO_BROADCAST_FORCE_ALL – works everywhere regardless of the adjustments of transmitting or receiving radio/ Added support of these flags to the object editor (both engine and script ones). Added scripts uint16 ProtoItem::RadioChannel, uint16 ProtoItem::RadioFlags, uint8 ProtoItem::RadioBroadcastSend, uint8 ProtoItem::RadioBroadcastRecv. For holodisc marking added flag ITEM_HOLODISK (in _defines.fos). Holodisc data is situated in general fields of several item types. That’s why it isn’t a good idea to use this flag with Doors, Keys, Cars, Weapons, Armors, Holodiscs. Added support of this flag in object editor. Added script uint ProtoItem::HolodiskNum. Added ability to use built-in cartridge indicator for other purposes. Added the next parameters: uint8 ProtoItem::IndicatorStart – initial value, - Item/ItemCl::Indicator; uint8 ProtoItem::IndicatorMax – maximum available value (for correct calculation of the strip position); uint8 Item/ItemCl::Indicator – current value. Mechanism is considered activated if maximum value in the prototype isn’t equal to zero. Added support of editing of initial and maximum values in the object editor. Method Item::GetMapPosition for the items which are in the global map returns their coordinates. Fixed bug with system hanging while looking online statistics. Added storing up to 20 ip addresses for one account (fonline.h). Item prototype’s fields, which are equal to zero, now cannot be saved. All prototypes are resaved. Continued working on multithreading in game logics. Added ignoring of non-initialized maps or locations while loading save (NPC’s would be moved to global map, items - deleted). Fixed bug in the dialogue on BiX location. Updated abilities of GUI scripting. In script _defines.fos notes “Used in engine” are replaced by “Hardcoded”; point is the same - to show that this data is used by engine also. Corrected some specifications in template.fos of reserved functions. Rev.56 http://www2.xp-dev.com/sc/change/94227/56 Changes in craft: some new recipe's (new weapon, etc.), added workbenches in some town/military bases. Rev.55 http://www2.xp-dev.com/sc/change/94227/55 - Updated Redding maps; - Deleted unused graphics; - Added second entrance to NCR; - Some changes in NPC's inventories on encounters. Rev.54 http://www2.xp-dev.com/sc/change/94227/54 - Slight fixes in Hartman's and Shrim's dialogues (Vault City); - Fixed problem with immediate sending off caravans/patrols Ahe9mPDq; - Changed content of the quest variable for the quest "Third trial. Drill." - Restored functions for triggers t_DialogNpc and scenery s_TransitToMap. Rev.53 http://www2.xp-dev.com/sc/change/94227/53 Fixes of KotW location. Quest for oil can can be done by everybody in Arroyo now. Rev.52 http://www2.xp-dev.com/sc/change/94227/52 Fixes of Brok and Xander Church location (by VaultTec) Rev.51 http://www2.xp-dev.com/sc/change/94227/51 Fixed names loading (*Names.lst) with the dialogue editor. Changed extention of its config file. Rev.50 http://www2.xp-dev.com/sc/change/94227/50 Fixed bug with duplicating of time events. Rev.49 http://www2.xp-dev.com/sc/change/94227/49 Slight optimization of multi-threading. Rev.48 http://www2.xp-dev.com/sc/change/94227/48 Fixed error in loading of games variables values. Fixed loading of saves games in single player mode. Rev.47 http://www2.xp-dev.com/sc/change/94227/47 Time events changes. - function specification void EraseTimeEvent(uint num) changed to bool EraseTimeEvent(uint num) Return value shows whether deleting is done or the event isn't found. - Deleted the next functions: uint CreateTimeEvent(uint beginSecond, string& funcName, Critter& cr, bool save) uint CreateTimeEvent(uint beginSecond, string& funcName, Item& item, bool save) uint CreateTimeEvent(uint beginSecond, string& funcName, Critter@[]+ critters, Item[]@+ items, bool save) For migration just put the identificator to the critter or item. Added the next functions for operating with event's values: bool GetTimeEvent(uint num, uint& duration, uint[]@+ values) bool GetTimeEvent(uint num, uint& duration, int[]@+ values) bool SetTimeEvent(uint num, uint duration, uint[]@+ values) bool SetTimeEvent(uint num, uint duration, int[]@+ values) Parametr "duration" - time till the event is done in seconds. Return value means that operation is completed, error means that event wasn't found. These functions are thread-safe, 2 thread can't operate with the events simultaneously. Function GetTimeEvent blocks using (changing) of the event until the script is finished or until SetTimeEvent is called, which unblocks the event. GetTimeEvent writes value to the end of the array, SetTimeEvent rewrites it completely. When null is transmitted to values SetTimeEvent values are not changed. - Event function specification can be of two types now: uint e_FuncName(uint[]@ values) uint e_FuncName(int[]@ values) Fixed bug with crashing while loading 3ds file without texture coordinates. Rev.46 http://www2.xp-dev.com/sc/change/94227/46 Added next fuctional for operating with files (class "file"): - for data reading uint8 file::readUint8() uint16 file::readUint16() uint32 file::readUint32() uint64 file::readUint64() In the case of error or the end of file it returns 0. uint file::readData(uint count, uint8[]& data) If data == 0 then program read all data till the end of the file beginning from the current position. Read data is added to the end of the array. The return value shows the real amount of read bytes. - For data recording bool file::writeUint8(uint8 data) bool file::writeUint16(uint16 data) bool file::writeUint32(uint32 data) bool file::writeUint64(uint64 data) bool file::writeData(uint8[]& data, uint count) If count == 0 it records all data from an array. In the case of error it returns false. Fixed bug with incorrect output of zoom value on minimap. Rev.45 http://www2.xp-dev.com/sc/change/94227/45 Extended range of game variables: - local variable of location (LLVAR_); - local variable of map (LMVAR_); - local variable of item (LIVAR_). When using them in dialogue values are taken from: for location - current critter's location; for map - current critter's map; for item - current item in the main slot. For operating with scripts use function GetLocalVar with transmitting of needed operator. Server will delete unused variables of all types automatically. Deleted server function uint DeleteVars(uint id). Dialog editor was adapted to the last updates of game variables. Added ability to define named value (DefineNames.lst) as a value for conditions and results. Added missed translations. Translations of commit history you can find here: http://www.xp-dev.com/forum/topic/3220 Rev.44 http://www2.xp-dev.com/sc/change/94227/44 Updated format of time output in dialogue with repairer-npc; Added script for realization of npc-travellers on global map.(traveller.fos and Davine's script in sf_common.fos); Added npc-traveller explosives-seller Davine. Can be hired in GECK town; Added trade mode "cash only" MODE_BARTER_ONLY_CASH; Fixed bugs in maps structure on maps with holodiscs. Rev.43 http://www2.xp-dev.com/sc/change/94227/43 Added setting in config which defines whether to bind logic threads to the core or let OS do it. In default it is enabled (1) 1. If zero then operating system automatically manage threads between cores, else affinity thread per core LogicThreadSetAffinity=1 Continued work on multi-threading of game logics. Rev.42 http://www2.xp-dev.com/sc/change/94227/42 Fixed crashing under certain conditions; Fixed cycle counting per second. Rev.41 http://www2.xp-dev.com/sc/change/94227/41 Fixed bug connected with the last update. Rev.40 http://www2.xp-dev.com/sc/change/94227/40 Multi-threading of game logics is now supported. You can read about this in details on the forum; Fixed path of recording/reading ban files; Added seconds on the globalmap clock; Decreased permissible length of text listener of channels and maps from 5 to 2 symbols; Deleted global server function void DeleteNpcForce(Critter& npc); Changed specification of method from uint Location::GetMaps(Map@[]& maps) const to uint Location::GetMaps(Map@[]@+ maps) const Now you can know the amount of maps on the location without recording them into array; Added basic server command ~log (~37). It is intended for text listening of server log. Minimum access: administrator. For adding to text listening you should transmit arguement "+", for disconnecting "-"; Fixed basic creating locations command ~addloc (~16); Upgraded basic command of looking player's id using his name ~id (~4); Changed specifications of global functions void critter_attack(Critter& cr, Critter& target, ProtoItem& weapon, ProtoItem@ ammo, uint8 aim) -> void critter_attack(Critter& cr, Critter& target, ProtoItem& weapon, uint8 weaponMode, ProtoItem@ ammo) int to_hit(CritterCl& chosen, CritterCl& target, ProtoItem& weapon, int hitLocation) -> int to_hit(CritterCl& chosen, CritterCl& target, ProtoItem& weapon, uint8 weaponMode); Added variables for weapons which state their active mode const uint8 Item::Mode const uint8 ItemCl::Mode 4 high-order bits - sight (look Hit locations in _defines.fos), 4 low-order bits - mode (0 – primary, 1 – secondary, 2 – third); Added macroses for convenience _WeaponModeUse, _WeaponModeAim, _WeaponModeMake в _macros.fos; Added returnable value of the current mode in method GetSlotProto (urgent for weapons) ProtoItem@+ Critter/CritterCl::GetSlotProto(int slot, uint8& mode) const; Renamed parametr #define ST_RATE_ITEM (102) to #define ST_HANDS_ITEM_AND_MODE (102) value stored in it: XXXX00YY, where XXXX pid - unarmed blow, and YY - mode. Changed way of the dialogue redirecting. You should use returnable value of result function or say-mode instead of uint __ForceDialog; Added specifications of functions: uint r_FuncName(...), uint dlg_FuncName(...) which are detected by server automatically; Fixed bug with moving pushed players only in one direction; Object pointers (derivatives arrays or class members)Location, Map, Critter, Item, GameVar can't be saved in global varities now. For scripts migration save their identificators (Location::Id, Map::Id, Critter::Id, Item::Id), addresing to the objects with (GetLocation, GetMap, GetCritter, GetItem). Weapons prototypes don't save curret mode of fire (in connection with multi-threading). Changed specifications of class members ProtoItem const uint8 Weapon_Skill, const uint8 Weapon_DmgType, const uint8 Weapon_Anim2, const uint16 Weapon_DmgMin, const uint16 Weapon_DmgMax, const uint16 Weapon_MaxDist, const uint16 Weapon_Effect, const uint16 Weapon_Round, const uint8 Weapon_ApCost, const uint8 Weapon_SoundId, const bool Weapon_Remove, const bool Weapon_Aim, const uint8 Weapon_CurrentUse, void Weapon_SetUse(uint8 use) const to const uint16 Weapon_Skill_F, const uint16 Weapon_Skill_S, const uint16 Weapon_Skill_T, const uint16 Weapon_DmgType_F, const uint16 Weapon_DmgType_S, const uint16 Weapon_DmgType_T, const uint16 Weapon_Anim2_F, const uint16 Weapon_Anim2_S, const uint16 Weapon_Anim2_T, const uint16 Weapon_DmgMin_F, const uint16 Weapon_DmgMin_S, const uint16 Weapon_DmgMin_T, const uint16 Weapon_DmgMax_F, const uint16 Weapon_DmgMax_S, const uint16 Weapon_DmgMax_T, const uint16 Weapon_MaxDist_F, const uint16 Weapon_MaxDist_S, const uint16 Weapon_MaxDist_T, const uint16 Weapon_Effect_F, const uint16 Weapon_Effect_S, const uint16 Weapon_Effect_T, const uint16 Weapon_Round_F, const uint16 Weapon_Round_S, const uint16 Weapon_Round_T, const uint16 Weapon_ApCost_F, const uint16 Weapon_ApCost_S, const uint16 Weapon_ApCost_T, const uint8 Weapon_SoundId_F, const uint8 Weapon_SoundId_S, const uint8 Weapon_SoundId_T, const bool Weapon_Remove_F, const bool Weapon_Remove_S, const bool Weapon_Remove_T, const bool Weapon_Aim_F, const bool Weapon_Aim_S, const bool Weapon_Aim_T Added special macros for convenience (Weapon in _macros.fos) _WeaponIsPrimaryAviable, _WeaponIsSecondaryAviable, _WeaponIsThirdAviable, _WeaponSkill, _WeaponDmgType, _WeaponAnim2, _WeaponDmgMin, _WeaponDmgMax, _WeaponMaxDist, _WeaponEffect, _WeaponRound, _WeaponApCost, _WeaponSoundId, _WeaponRemove, _WeaponAim, _WeaponModeUse, _WeaponModeAim, _WeaponModeMake Mapper updates: string@ MapperObject::PicMap/PicInv now return prototype's picturename if other isn't set up; Added const uint16 MapperMap::Width, const uint16 MapperMap::Height for storing current map sizes; Fixed function GetMapFileNames(...). Rev.39 http://www2.xp-dev.com/sc/change/94227/39 Slight fixes of quests in Den, Klamath Improved closed location in Redding Rev.38 http://www2.xp-dev.com/sc/change/94227/38 Slight fixes of quests from string "Guard"; Added services for guardsmen: doc. Troy can heal player; give stimpacks; Valery repairs items; Added universal repairing script for npc (repairer.fos). E.g. in the dialogue vc_valery.foldg 3 new special encounters with holodiscs; Several deleted functions from stdlib are returned. Rev.37 http://www2.xp-dev.com/sc/change/94227/37 Fix of calculating amount of dead NPC on location when necessity of attack is being determinated. Fix of amount loss allies counter when finishing the quest. Output of messages to log is disabled in quest “The drill”. Fix of limit of times amount quest “Dangerous hunt” can be done. Descriptions of deleted maps were returned, which made server restart impossible without saves clearing. Rev.36 http://www2.xp-dev.com/sc/change/94227/36 Fix of Hartman’s dialog. The wrong requirement was deleted. Rev.35 http://www2.xp-dev.com/sc/change/94227/35 New quests from string “Guard” in Vaultcity - Vaultcity guard. Third trial. Drill. - Easy walk. - Go there, don’t know where. - Dangerous hunt. - Diplomatic courier. Fix of caravan’s and patrol’s departure time. Relative departure time was substituted for absolute. Added ability of caravan’s instant departure from the dialog. Fix of items that were generated in encounters 0 in number. (It was impossible to throw out them) Fix of quest “Hub bibliography”. Player need 7 books to gain reputation instead of 6. Rev.34 http://www2.xp-dev.com/sc/change/94227/34 - Maps fixes - Fixed reaction of BG guards on explosives activation Rev.33 http://www2.xp-dev.com/sc/change/94227/33 - Graphics fixes - Non-used files were deleted - Original map of BG was returned Rev.32 http://www2.xp-dev.com/sc/change/94227/32 Private car parking in geck town is disabled till the problem with car boot is solved. Rev.31 http://www2.xp-dev.com/sc/change/94227/31 Added first quests of string “Guardsman”, VaultCity. (Clearing of server saves is needed) Added template for making quests-combats with npc. (fighter_quest.fos, e.g. “Guard. First trial.”) Added ability to take quest “Hub bibliography” again if player failed to finish it at previous time. Fixed incorrect condition in Dappo’s dialogue in quest “Lot of defective rifles”. Added verification of addressee in “Postman” quest, now player can’t bring letter to any npc of type stated in the letter. Rev.30 http://www2.xp-dev.com/sc/change/94227/30 Deleted not used MSG files - FOSCRIPT.MSG. Rev.29 http://www2.xp-dev.com/sc/change/94227/29 Updates of way of making records into log. Added ability to look the name of the thread which made a record. Option in config – LoggingThread. You can also turn on output in the server application using “Logging with thread”. Changed format of time output. Now it is not “time in ms”, but “hours:minutes:seconds:milliseconds”. Rev.28 http://www2.xp-dev.com/sc/change/94227/28 Fix and formatting. Rev.27 http://www2.xp-dev.com/sc/change/94227/27 Fixed mistakes in calculating karma in quest "Returning of the fugitive". Rev.26 http://www2.xp-dev.com/sc/change/94227/26 Changes on Church of Brok and Xander location: - fixed Preacher, Scientist, repairer Alechandro, Cook, Mickey dialogs; - quests work correctly now; - repairer Alechandro identifies items correctly; - ability to record the information about Church was added (after completing Preacher's quest). Rev.25 http://www2.xp-dev.com/sc/change/94227/25 Activating time of dynamite was fixed. Rev.24 http://www2.xp-dev.com/sc/change/94227/24 New algorithm of generating of pseudorandom variables was added (Mersenne twister). Previously was standart C algorythm srand/rand. Rev.23 http://www2.xp-dev.com/sc/change/94227/23 Energy barrier on the entrance of GECK town was improved. Rev.22 http://www2.xp-dev.com/sc/change/94227/22 Fixed client crashing on start. For preventing this bug in future the control system of versions of cashed scripts in the client has been added. Rev.21 http://www2.xp-dev.com/sc/change/94227/21 Fixed problem when it was impossible to add players to GECK town after removing them with option "Clear list". Rev.20 http://www2.xp-dev.com/sc/change/94227/20 Fixed cooldown of the Postman quest. Rev.19 http://www2.xp-dev.com/sc/change/94227/19 Wrongly deleted dialogs are returned. Rev.18 http://www2.xp-dev.com/sc/change/94227/18 Fixes Deleted not used files. Fixed errors when player removes child killer karma additional times. Fixed error with incorrect name of script of map_v15_village map. Added output of message of increasing trade skill when finishing “Farm vermins” quest to the log. Weakened the giant wasp in the quest in Modoc. Rev.17 http://www2.xp-dev.com/sc/change/94227/17 AngelScript was updated to rev.684, v. 2.19.2 Added global variables to the client: bool __ShowTile, __ShowRoof, __ShowItem, __ShowScen, __ShowWall, __ShowCrit, __ShowFast, __ShowPlayerNames, __ShowNpcNames, __ShowCritId. Deleted limit of min. time of using Map::SetLoopTime (it was 1 second). Fixed registration of the global variables of string type (pragma globalvar). Fixed using reserved global variables string type. Added global variables to mapper: string __ClientPath, __ServerPath. Deleted constant modificators in client from string CritterlCl::Name, CritterlCl::Lexems. Added variable CritterlCl::NameOnHead, which if is not empty, outputted above critter’s head. Rev.16 http://www2.xp-dev.com/sc/change/94227/16 Fixed reclearing of child killer status. Rev.15 http://www2.xp-dev.com/sc/change/94227/15 Fixes: - Fixed names of Giant Wasps and bugs in kills statistic; - Reduced requirements of amount of killed mobs and intelligence in Broken Hills quests (bh_marcus.fodlg, bh_super.fodlg); - Reduced requirement of intelligence for “Fresh blood” quest (vc_doctor_troy.foldg); - Fixed possibility of gaining experience multiple times in “Cabbage” quest in Modoc (mod_farmer_q.fodlg); - Player receives reputation in NCR for quest “True cowboy” even if only one Brahmin is brought (ncr_felix.fodlg); - Michael’s miniquest in NCR can be done by every player only once (ncr_michael.fodlg); - Added requirement of 16 level for “buggy” quest (ncr_ratch.fodlg); - Fixed amount of gaining experience when player rejects gratuity in “Postman” quest (q_mail_reciever.fodlg); - Fixed cooldown of “Postman” quest; - Cave mobs – spawn point near the exit grid was removed in the smallest cave; - Fixes of several dialogues in Vault City; - New quest – “Fugitive returning” – when finished, status “Child killer” is removed. Hubbologist in Redding bank offers this quest; - New quest “Farm vermines”. It is offered by Joe in Modoc (mod_joe.fodlg); - Fixed energy barrier in GECK town; - Added computer for breaking of energy barrier inside the town; - Added car lots for GECK town citizens (not more than 2); - Added ability of clearing of citizens list by town leader using the terminal. Rev.14 http://www2.xp-dev.com/sc/change/94227/14 Update for Notepad++ (Syntax_highlighting, autocomplete, function parameters hints) Rev.13 http://www2.xp-dev.com/sc/change/94227/13 First stable version.h3. Your title here...Rev.193 http://www2.xp-dev.com/sc/change/94227/193 Russian text output into log was fixed. Error appearing on starting single mode with enabled server GUI was fixed. One more fix of client-server network interaction (attempt of fixing hangings while downloading chache). Rev.192 http://www2.xp-dev.com/sc/change/94227/192 Bug with visualisation of other playing movement was fixed. It appeared in 161 revision. Rev.191 http://www2.xp-dev.com/sc/change/94227/191 Operation with network interaction was optimized, the processor will be loaded less when sending large volumes of information (e.g. cache transmitting). Models, which are situated in separate folders, loading was fixed (slashes are replaces by dots). Rev.190 http://www2.xp-dev.com/sc/change/94227/190 Cache loading was fixed. Cache situation was changed on the client’s side and now a separate folder for cache is created for every server. DataFiles.cfg situation was fixed. For critters in Mapper with Cond == 3 (dead) now automatically parameter ST_REPLICATION_TIME is set to -1 (if it is equal to 0) i.e. nonreplicated. And for Cond == 2 (knockout) big cooldown for getting up is set. For “dictionary” class was added method uint keys(string@[]@ keys) const which returns all the keys and their quantity. Now it is checked for presence of palette with the same name with the FRM file which is loading. If there isn’t one, then default is used (like now). Rev.189 http://www2.xp-dev.com/sc/change/94227/189 Extra system for detecting launched client’s windows was added. Bug with impossibility of reading some files when one copy of client/mapper/server is launched. Check for ITEM_GAG on detection of finishing REASON_HEX_BUSY_RING plan (when critter is surrounded by impassable objects or critters) was added. Ground and roof tiles offset was fixed in FOnline geometry. Rev.188 http://www2.xp-dev.com/sc/change/94227/188 Support of graphic formats MOS and BAM from Ininity Engine (Boldur’s Gate, Icewind Dale, Planescape Torment) was added. It is possible to define the number of played cycle or frame. To define cycle’s number in file name parameters (“S”) – define its index and to define the frame add dash and frame’s index. Examples: fileName$5.bam – load fileName.bam with frames for cycle № 5; fileName$1-4.bam - load fileName.bam with frame № 4 with cycle № 1; fileName.bam - load fileName.bam с with frames for cycle № 0. Rev.187 http://www2.xp-dev.com/sc/change/94227/187 Some actions were performed to fix server's hanging up. Rev.186 http://www2.xp-dev.com/sc/change/94227/186 Some actions were performed to fix server's hanging up. Not adding function's name to log was fixed. Levelcap was removed in the scripts. Rev.185 http://www2.xp-dev.com/sc/change/94227/185 NO_LOOT and NO_DROP mode were switched off for the giant bugs. Rev.184 http://www2.xp-dev.com/sc/change/94227/184 In connection with porting the server (*nix and 64bit) the next changes were made: Operating with net was rebuilded. Libevent library is used. http://monkey.org/~provos/libevent/ http://en.wikipedia.org/wiki/Libevent http://ru.wikipedia.org/wiki/Libevent Operating with GUI was remade. FLTK library is used. http://fltk.org/ http://en.wikipedia.org/wiki/FLTK http://ru.wikipedia.org/wiki/FLTK Operating with threads was remade. Pthreads is used http://sources.redhat.com/pthreads-win32/ (Windows port) http://en.wikipedia.org/wiki/Pthreads http://ru.wikipedia.org/wiki/Pthreads Changes are serious and can cause unstable work. Memory leak when loading maps was fixed in server. Loading maps with items in containers/inventories in mapper was fixed. Don’t use mapper of 171-182 revisions for editing old maps. Now parameters values for critters in mapper are applies only if they are not equal to zero. Initially value is taken from defaults (from .fopro), then from the map’s data if !=0. Critter’s names in mapper are now taken only by prototype number without accounting dialogue’s number. Old specification of Log function which was changed in 174 revision was returned to native scripts. Server’s GUI now ‘Courier New’ type, option in config was deleted. Option for changing server’s window size and its elements was added GUI size modifier GUISize=0 E.g. if GUISize=-50 then server’s window and all its elements will be 50% smaller, if GUISize=30 then 30% larger. Log in server window is unrolled as defaults. Also, the information from the log can be copied and scrolling is stopped if it is focused. Client’s crashing when playing items animation was fixed. Paths make_tla.bat were converted to Visual Studio 2008 (9.0). Rev.183 http://www2.xp-dev.com/sc/change/94227/183 Lo Pan’s mercenaries call leader’s name correctly now. Nancy and Sid’s quest location now is deleted after leaving it (previously it wasn’t deleted and hanged in the memory). SF docs were excluded from NoPvP locations. Letters generation in Postman quest was fixed. Holodisk with combat robot’s video recordings can be given to Buster now. Shaneman’s documents now have description in “Diplomatic mission” quest. A dialogue between bar clients in outer Vault City was added (wipe is required). Mini quest “Seduce art” was added in Klamath (wipe is required). Rev.182 http://www2.xp-dev.com/sc/change/94227/182 NPC-travellers will no longer take dead characters to the global map. Atoll was removed from Eli’s destinations. Skill displaying when increasing it through the dialogue was fixed. The mistakes in the newcomer’s dialogues in “Anger” quest were fixed. The mistake in mercenaries script which caused the leaving the employer earlier was fixed. Rev.181 http://www2.xp-dev.com/sc/change/94227/181 Reading nicknames from ignor list file was fixed. Console command for adding a player to the ignor list was added ~ignore PlayerName. Rev.180 http://www2.xp-dev.com/sc/change/94227/180 Mechanism of reputation calculation was switched off due to its incorrect work. Now all the list will be visible, but will work correctly. Rev.179 http://www2.xp-dev.com/sc/change/94227/179 Network protocol bug which caused short hangs up was fixed. Client's script was fixed which could cause null parameter call. Rev.178 http://www2.xp-dev.com/sc/change/94227/178 Superfluous rifles on offer were fixed. Rev.177 http://www2.xp-dev.com/sc/change/94227/177 Game version increment. Rev.176 http://www2.xp-dev.com/sc/change/94227/176 Sequence of handlers calling was fixed MAP_EVENT_OUT_CRITTER, MAP_EVENT_IN_CRITTER now the first one is called initially, then the second On intro_init map static lighting was set. Group moving indication on the global map was fixed (previous update bug). Rev.175 http://www2.xp-dev.com/sc/change/94227/175 Console command ~globalmap was added. It moves player to global map. It works only on noPvP maps for players not in combat mode and with noPvP mode turned on. In caravans and travellers scripts functions of moving to final destination's map were updated. Rev.174 http://www2.xp-dev.com/sc/change/94227/174 Porting game to Linux was started. Also supporting of 64 bit platforms. Client’s native libraries are now transmitted automatically. They are stored in ‘Client/data/cache’. Folder with scripts ‘Client/data/scripts’ is not used anymore and was deleted. To the server’s folder library STLPort (http://www.stlport.org/) was added. Client’s libraries are now compiling with it’s help. It is connected with porting to other platforms. Additional methods of moving were added to critters in server scripts bool Critter::TransitToMap(uint mapId, uint16 hexX, uint16 hexY, uint8 dir, bool withGroup) bool Critter::TransitToMap(uint mapId, int entireNum, bool withGroup) bool withGroup – when moving from global map to local map, all the group will be moved. Regular TransitToMap (without bool withGroup) work as with withGroup == false. Previously they worked as как withGroup == true, what led to moving all the group when replicating, if dead critter was on the global map. 3d critters were switched off. For switching on see PLAYERS_3D in _defines.fos. Constants for operating with game constants were added(see 168 revision, http://www2.xp-dev.com/sc/change/94227/168). Specification for the reserved function Log in native scripts was changed. Now the first returned parameter is function’s name from which it was called. Rev.173 http://www2.xp-dev.com/sc/change/94227/173 Traders were added to Atoll and Redding. Barterground was moved to position 690:760 as it isn’t needed anymore in north-west region due to noPvP mode. Locations “BiX Church” and “Atom’s Church” were moved to special encounters class. Fixed rewards in some quests. Maps fixes. Biscuit on Modoc can be received only once now (as in Fallout 2). Rev.172 http://www2.xp-dev.com/sc/change/94227/172 noPvP mode was activated on some TLA maps. It will be used on the next TLA session. For switching it off on your server set global variable __NoPvpMaps=false; in script config.fos Ability of making a list of ignored players, it works similarly NameColorizing. It needs manual adding nickname of ignored player to IgnoreList.txt For refreshing the list of ignored players in game use console command ~ignorelist. Rev.171 http://www2.xp-dev.com/sc/change/94227/171 Derivative objects system for mapper was updated. When placing base object, all his derivatives are placed automatically. If one object from the group is being selected - all others are being selected too. If the prototype or position of the derivative object is changed, changes will be automatically applied by mapper or server when loading. For the example see cars, at the present time they have one derivative object – their trunk. Now when placing the car, it will be created automatically, also it will be moved with it and if base or derivative object is deleted, all the group will be deleted too. The system of moving selected objects in mapper was upgraded. Now in hexagonal system the selected objects will be moved without being tearing apart. Also the selected objects, when being moved, will stop at the map’s edge, so they won’t mix into a pile. The problem with detecting whether items in container belong to their inventory or container. Previously items were placing on the hex and if you place two containers on the same hex, all the items will stack in one container. Now it is fixed. Item::TrapValue initialization through mapper was fixed. If rewriting is performed on prototypes loading, alert is displayed. It was added for items and critters prototypes. In object’s structure in mapper was deleted field const bool Item_InContainer and added const uint UID, ContainerUID, ParentUID, ParentChildIndex Rev.170 http://www2.xp-dev.com/sc/change/94227/170 Now server doesn't block client's libraries while working. Previously you needed to stop the server to replace client's dll (Server/scripts/fonline_tla_client.dll). Rev.169 http://www2.xp-dev.com/sc/change/94227/169 Combined content of MASTER.DAT + CRITTER.DAT. Size - 201 MB! Rev.168 http://www2.xp-dev.com/sc/change/94227/168 Client and Mapper are no longer bounded with Fallout’s data files - MASTER.DAT and CRITTER.DAT. These files content is combined (excess data is deleted) and packed into fallout.dat (will be uploaded with the next update) and defined in DataFiles.cfg. Global variables string __MasterPath, __CritterPath were deleted. The configurator (FOConfig.exe) is updated accordingly fixes above. Critter’s lighting in the death moment and flat items lighting was fixed. To server/client/mapper scripts the next functions for operating with the constants (*Names.lst) were added: int GetConstantValue(int constCollection, string@+ name) – identifying constant’s value by the name; string@ GetConstantName(int constCollection, int value) - identifying constant’s name by the value; void AddConstant(int constCollection, string@+ name, int value) – adding separate constant to the collection; bool LoadConstants(int constCollection, string@+ fileName, int pathType) – loading/reloading the collection; int constCollection – collection’s number, see Constants collections in _defines.fos, also you can define your own collections; string@+ name – constant’s name; int value - constant’s value; string@+ fileName, int pathType – collection file’s name and folder path. Rev.167 http://www2.xp-dev.com/sc/change/94227/167 Bug with error of name/password in login menu if it exceeds 12 symbols was fixed. Screen centering on the player when loading map in right-angle geometry was fixed. Copying objects in Mapper from smaller map to the bigger one was fixed. Mapper hanging up when Sleep < 0 was fixed. Crashes when loading ART files were fixed. Principe of transparency defining with parameter ‘”t” was changed, now it isn’t equal to 255 – paletteIndex, but to max(R, G, B). Rev.166 http://www2.xp-dev.com/sc/change/94227/166 System of operating with items prototypes was updated (ProtoItem). Ability to add your own fields to proto class was added. New pragma ‘bindfield’ is used for this, e.g.: #pragma bindfield "const int ProtoItem::MyValue -> 400" it means creation of field MyValue of int type with offset 400 (considering thas int is 4 byte, it will occupy bytes 400, 401, 402, 403). Totally for user’s fields 500 bytes are available. Field is equal to zero as defaults, but it is possible to change the value by defining value (in the current case MyValue=111 or MyValue=SkillBigGuns) in proto file (.fopro), number (if it contains only numbers) or path to the file (it is identified by the presence of ‘/’ or ‘\’ symbols). For now fields which are not used by the engine are taken out to scripts, see _defines.fos Item prototypes fields. Changes in structure ProtoItem. All next methods are deleted uint8 GetType() const uint16 GetProtoId() const bool IsGrouped() const bool IsWeared() const bool Container_IsGroundLevel() const List of new fields which are registered in the engine (part of them is renamed, some were deleted) http://pastebin.com/8R4QkP3h The other fields are registered with #pragma bindfield in _defines.fos. Now all items can stack and wear out, for this Boolean fields are added to the prototypes bool ProtoItem::IsStackable bool ProtoItem::IsDeteriorable Item type ITEM_MISC_EX was deleted, it is combined with ITEM_MISC (miscex.fopro is deleted). Vehicles are taken out to separate type ITEM_CAR (car.fopro was added). Also now user can define any type numbers for the items. Former fields uint MiscEx_StartVal0..9 of the start values for Item::Val0..9 were moved to common area named StartValue0..9, and with these values Item::Val0..9 are initialized. Metod bool Item::IsCar() const was deleted, instead of it use GetType()==ITEM_CAR. The next methods are renamed bool Item::IsGrouped() const -> bool Item::IsStackable() const bool Item::IsWeared() const -> bool Item::IsDeteriorable() const The next fields are renamed uint16 Item/ItemCl::BrokenWear -> Item/ItemCl::Deterioration uint16 Item/ItemCl::CarDeteoration -> Item/ItemCl::CarDeterioration uint8 MapperObject::Item_DeteorationFlags -> uint8 MapperObject::Item_BrokenFlags uint8 MapperObject::Item_DeteorationCount -> uint8 MapperObject::Item_BrokenCount uint16 MapperObject::Item_DeteorationValue -> uint16 MapperObject::Item_Deterioration Mechanism of affiliated objects was moved for common use. Previously it was available only for vehicle’s trunk. One object can have up to five derivatives. Numbers of the derivative objects are defined in uint16 ProtoItem::ChildPid_0..4. By creation of base object, derivatives are created automatically. For now Mapper doesn’t create affiliated obkects automatically, but it will be fixed in further. For setting the place of situation, special field ChildLines_0..4 is used (former MiscEx.Car.Bag_0..1, see below by recording format). Also it is possible now to define automatic blocking for any objects, not only for vehicles – field BlockLines (former MiscEx.Car.Blockers). Recording format for Child/BlockLines – XYXYXY..., where X is direction number (0..5/7), Y is the amount of steps (1..9) in this direction (previously for vehicle’s trunk for another recording format - XXXX...). Maximum amount of steps for BlockLines – 50, for ChildLines – 6. For operating with derivative objects use methods Item@+ Item::GetChild(uint childIndex) const (бывшая Item@+ Item::CarGetBag(int numBag)) bool Map::CheckPlaceForItem(uint16 hexX, uint16 hexY, uint16 pid) const (bool Map::CheckPlaceForCar(uint16 hexX, uint16 hexY, uint16 pid) const) Fields renaming affected lots of scripts, be attentive. Old proto format is converted to the new one automatically, but Object Editor (ObjectEditor.exe) still operates only with old format. It will be fixed soon. To replication.fos and entires.fos scripts the influence of right-angled geometry was added. Script main_planes.fos is formatted as a separate module. All pragmas were move to the end of _defines.fos. Drop of FPS when switching on view/attack borders was fixed. Rev.165 http://www2.xp-dev.com/sc/change/94227/165 Fix for the ASCompiler. Rev.164 http://www2.xp-dev.com/sc/change/94227/164 Changed ASCompiler output format to “filename(linenumber) : message”. Such output is recognized by a number of IDEs and allow jumping to the code by a double-click on the output line. Rev.163 http://www2.xp-dev.com/sc/change/94227/163 Tabs management system was added to Mapper. Now one tab can have numerous subtabs. Tabs names and its filling is defined in mappers scripts. But some tabs already have initial filling. Item – items prototypes by defaults (items.lst); Tile – tiles by default, search is performed in ‘art/tiles/’; Crit – critters prototypes by defaults (critters.lst); Fast – displays often used objects, initial state is defined in scripts (InitializeTabs in mapper_main.fos); Ign – Ignore, shows ignored objects which are not shown on the map; Inv, Msg, Map – special tabs which have nothing to do with the mechanism, but it is possible to change its name throug TabSetName (see below). The tab can have subtabs only of one type – tiles, critters or items (displayed in priority order). For items and critters the subtab’s name is chosen by user, for the tiles it is performed automatically. The lowest subtab “all” contains all prototypes (or tiles) on a list above. For activation the menu of tab choosing – perform a double click on it. If positions are numerous then use mouse wheel for navigation (scroll speed: normal – 4, with pressed shift – 8, with pressed ctrl – 20, with pressed alt – 50). For tabs management use scripts, functions Tab* uint TabGetTileDirs(int tab, string@[]+ dirNames, bool[]+ includeSubdirs) uint TabGetItemPids(int tab, string@+ subTab, uint16[]@+ itemPids) uint TabGetCritterPids(int tab, string@+ subTab, uint16[]@+ critterPids) void TabSetTileDirs(int tab, string@[]+ dirNames, bool[]+ includeSubdirs) void TabSetItemPids(int tab, string@+ subTab, uint16[]@+ itemPids) void TabSetCritterPids(int tab, string@+ subTab, uint16[]@+ critterPids) void TabDelete(int tab) void TabSelect(int tab, string@+ subTab) void TabSetName(int tab, string@+ tabName) int tab – tab’s number (see Tabs in _mapper_defines.fos); string@[]@+ dirNames – folder’s names for tiles searching; bool[]@+ includeSubdirs – turn on search in subfolders; string@+ subTab – subtab’s name; uint16[]@+ itemPids – item’s prototype numbers array; uint16[]@+ critterPids - critters’s prototype numbers array; string@+ subName – tab’s name. Global variable was added bool __SplitTilesCollection = true It defines whether tiles should be divided into groups in the folders. The group is defined as a string in the file’s name before the first number (e.g. abc12.png - group abc), if the number is absent, then group is defined as '<other>'. In connection with these changes, the global functions are deleted uint GetFastPrototypes(uint16[]@+ pids) void SetFastPrototypes(uint16[]@+ pids) Other updates. Fixed incorrect work of server/client which caused some bugs. Global variable int __GeometryType was added to _defines.fos for the indication of chosen geometry. See constants in _defines.fos Geometry. Depending on its value, tab with Tactics and Arcanum is added. Ability to work with file names which include spaces is added. When loading ART files, it is possible to flip them vertical or horizontal. Parameters in the file name - ‘v’/‘V’ and ‘h’/‘H’. When loading SPR file, if you define in changing color parameter – layer’s number -1, then the modificator will be applied to all four layers. Rev.162 http://www2.xp-dev.com/sc/change/94227/162 Quest perks “Midnight Child”, “Nosderatu Blood” were added (Modoc, “Night’s tender”). Now new home position is set for NPC-travelers (Devin, Eli) when they enter new location. Female characters now can finish quest of removing childkiller status. Allies HP and resistances were increased in “Dangerous hunt” quest. Also a simple dialogue is added to them. The forged letter is now removed from the inventory when finishing quest “Forgery”. Edvin in Klamath tells with a popup phrase when starting gathering items. A delay was added to the prisoner giving the cues in “Ernst Telman” quest. Ability of intimidating the NPC visitor if it’s a woman was deleted in quest “Wrath”. Barcus now reacts with popup phrases to the futher meetings with the player who have done quest “Amnesty for Joshua”. Upon the receiving lieutenant rank of Vaultcity’s Guard, player is awarded with a black combat armor. In “Diplomatic Courier” quest time (24 hours) which Sheiman takes for the thoughts now is calculated correctly. Upon finishing this quest, player receives +1 reputation in NCR. Sell price of the buggy which player receives upon finishing the quest in NCR was set to zero. Dialogue launch when player uses an antidote in quest “Poisoned Regulator” in Redding was fixed. Players who gained Vaultcity citizenship now can trade with Randal with no restrictions. Reputation calculation in quests “Real Cowboy”, “Hub Bibliography” in NCR was fixed. If player refuses the reward in “Hub Bibliography” quest, he gains +2 reputation (was +1) when he delivers 5 books. Increasing raider’s resistances and skills every new attack on NCR was switched off. Ability of crafting and buying chitin armor was added. Giant beetles drop chitin. Items with ITEM_GAG flag deletion upon player’s death was fixed. Rev.161 http://www2.xp-dev.com/sc/change/94227/161 Ability to customize game geometry was added, either the support of isometric projection with quadrangles was. For customization use global variables bool __MapHexagonal – isometry type: true - hexagonal, false - quadrangular; int __MapHexWidth – hex width; int __MapHexHeight – hex height; int __MapHexLineHeight – hex line height; int __MapTileOffsX/Y – ground tiles offset; int __MapRoofOffsX/Y – roof tiles offset; int __MapRoofSkipSize – amount of hex per one roof tile (necessary for its correct hiding); float __MapCameraAngle – 3d model rendering angle; bool __MapSmoothPath – path smoothing when moving; string __MapDataPrefix – path and prefix for the geometry files. Operational sprites for geometry are situated in art/geometry/. Quadrangular isometry use 8 directions, hexagonal – 6. In script config.fos in function InitializeGeometry(), necessary adjustments for 3 games (Fallout1/2, Fallout Tactics and Arcanum) are added. This function can be called in server, client and mapper scripts, as all three of them need geometry information. Global variables uint __LookDir4, uint __LookSneakDir4 were added for 8-directional geometry. Fixed Tactics SPR files loading. Mode MODE_NO_TALK was added. It affects ability to talk and appearance of the icon in the context menu. Double click on hex, affecting avatar’s moving, was fixed. Creation of descriptions for critters prototypes (FODLG.MSG) with high identifiers was fixed. Image of elephant gun was added in 3d. Rev.160 http://www2.xp-dev.com/sc/change/94227/160 Fixed a bug with server and client communication. Fixed a bug with wrong sprites display. Rev.159 http://www2.xp-dev.com/sc/change/94227/159 Documentation's update, mistakes fixes. Rev.158 http://www2.xp-dev.com/sc/change/94227/158 Script start_server_client.fos was renamed to config.fos and now it isn't simply pasted into function start(), but presented as a separate module with function InitializeGame(). Macros for operating with time were moved from _macros.fos to separate module _time.fos. Slight fix of drugs.fos. Rev.157 http://www2.xp-dev.com/sc/change/94227/157 Errors messages in server log when operating with functions GetPlayerName/GetPlayerId were removed. Also GetPlayerName returns null now, if the player wasn't found. Bugs of reputation calculation were fixed. Rev.156 http://www2.xp-dev.com/sc/change/94227/156 Ability to affect the colors when loading Tactics sprites was added. To make color shift, define necessary values in file name’s parameters (“$”). Format: fileName$[index,r,g,b]animName.spr (can be any amount of shifts […]) where index – body part’s number (0 - miscellaneous, 1 - skin, 2 -hair, 3 - armor); r,g,b – color shift for the each component, can be negative Example: someSprite$[2,50,-30,-20]anim1.spr – load sprite someSprite.spr, with animation anim1 and hair’s color shift in RGB (50,-30,-20). Additional flags for operating with color’s shift were added for Tactics critters (_animation.fos, animation.fos). Use macros ANIM1_COLOR_SKIN(index), ANIM1_COLOR_HAIR(index), ANIM1_COLOR_ARMOR(index) for values defining. Index can take on value from 0 to 15, appropriate to it values of color shift look in array colorOffsets of animation.fos script. For ability testing you can use text function void ColorOffset(Critter& cr, int skin, int hair, int armor) in test.fos. Rev.155 Some native structures were fixed. Rev.154 http://www2.xp-dev.com/sc/change/94227/154 AngleScript is updated to revision 822. Ability of sorting is added to scripts arrays Ascending sort void array::sortAsc() void array::sortAsc(uint index, uint count) Descending sort void array::sortDesc() void array::sortDesc(uint index, uint count) For user’s classes sorting realize opCmp method http://www.angelcode.com/angelscript/sdk/docs/manual/doc_script_class_ops.html Vehicle animations on the global map and item’s animations in Mapper are fixed. Some points in operating with critter’s animations are fixed (animation.fos). Global variable __GmapActive is fixed. Global variable for setting min. offline time after that client will completely exit from the game was added. uint __MinimumOfflineTime = 180000; // 3 minutes Rev.153 http://www2.xp-dev.com/sc/change/94227/153 Additional constants for operating with Chosen's actions were updated (Get/SetChosenActions, for CHOSEN_USE_ITEM). Rev.152 http://www2.xp-dev.com/sc/change/94227/152 Additional constants for operating with Chosen's actions were added (Get/SetChosenActions). Rev.151 http://www2.xp-dev.com/sc/change/94227/151 Bugs with incorrect files's names path detecting were fixed. Rev.150 http://www2.xp-dev.com/sc/change/94227/150 3d models loading was fixed. 3d models rendering to sprites was fixed. Critters animations were fixed (death in 2d and 3d modes). Shift calculation for some models was fixed. SAY_DIALOG/SAY_APPEND mechanics was fixed. (by Atom) Server’s config loading in Mapper was fixed. (by Atom) File HashNames.lst was added to client. Names of files which contain parameters (‘$params’) should be entered in it. If you use such names in the prototypes, Mapper or scripts GetStrHash), then include this name to this list. Format of writing: [any number] [file’s name] [end of string] E.g. 0 art\scenery\BrazureFire$t.ART 0 art\scenery\BrazureFire$t3.ART In further it is possible to detect and transmit such names automatically, but for the present use this system. Roof disappearing if it is situated in odd hex in two axis. Rev.149 http://www2.xp-dev.com/sc/change/94227/149 Documentation was updated. Some fixes in Arroyo (Minoc’s quest about raiders). Usage mode was added for sledgehammer and supersledge (for resources mining). Guard lib was brought into common standard of scripts formatting. Rev.148 http://www2.xp-dev.com/sc/change/94227/148 Two reserved variables were added to HLSL effects float AnimPosProc – current animation’s per cent 0%..100%, [0,1); float AnimPosTime – current animation’s time in seconds. Client’s hanging under certain circumstances was fixed (e.g. receiving item’s data when player in process of moving between maps). Dump generation when closing server application without stopping was switched off. Generation of unnecessary messages to log in function animation_ animation.fos was fixed. Rev.147 http://www2.xp-dev.com/sc/change/94227/147 Parameters for critter’s movement controlling were added. Time for moving in milliseconds: #define ST_WALK_TIME (117) #define ST_RUN_TIME (118) Ability to move #define MODE_NO_WALK (539) #define MODE_NO_RUN (540) If these parameters are equal to zero, then data is taken from CritterTypes.cfg. Loading of some ART files was fixed (Arcanum). Ability of specifying special image processing was added. Palette elements will be transparent depending on its index in the palette (alpha = 255 – index). To chose this loading type - use symbol “t” (or “T”) in file name parameters. E.g. ‘filename$t.art’; also you can combine with palette, e.g. ‘filename$1t.art’. Ignoring of spec.symbol “/r” was additionally added for splitEx function. In functions void DrawSprite(... bool applyOffsets) if applyOffsets == true there were additionally added shifting of width/2 and height of the image. Unnecessary fo3d files were deleted. Palette influence for Arcanum critters was fixed. Rev.146 http://www2.xp-dev.com/sc/change/94227/146 One more fix of incorrect critter displaying. Rev.145 http://www2.xp-dev.com/sc/change/94227/145 Quest “Communicated” was added (Redding). Caravaneers phrases were fixed, now they tell correct departure dates. Quest “Honomer’s bodyguard” was added (San Francisco). Retina scanner in GECK town was fixed. Slight fixes of the hubbolog’s map in San Francisco. Special result function for skill rise calculation through a dialogue was added.(dialog@r_SkillUp) The script for quest locations creating was fixed (hostile_location_quest.fos), allies and enemies scripts now work correctly. Resetting of a quest variable when deleting the location was fixed. Script for realization a dialogue between several npc’s with popping up phrases was added. (npc_dialog.fos) Story line implementation was continued. Maps numeration in the location with mutants was fixed (quest string “Guardian”). Rev.144 http://www2.xp-dev.com/sc/change/94227/144 Critter’s hitpoints regeneration was moved to scripts, you can look realization in function critter_idle main.fos. Global function for critters sampling from the global map was added to server scripts. uint GetGlobalMapCritters(uint16 worldX, uint16 worldY, uint radius, int findType, Critter@[]@+ critters) Additionally to methods bool Map::GetNearEntireCoords(int& entire, uint16& hexX, uint16& hexY) const bool Map::GetEntireCoords(int entire, uint skip, uint16& hexX, uint16& hexY) const were added methods bool Map::GetNearEntireCoords(int& entire, uint16& hexX, uint16& hexY, uint8& dir) const bool Map::GetEntireCoords(int entire, uint skip, uint16& hexX, uint16& hexY, uint8& dir) const which return direction. Global variable which specifies if the password in the client’s login window should be hidden was added bool __HidePassword = true Incorrect critters creation in Mapper was fixed. Displaying of switching critter’s type 3d->2d on the client’s side was fixed. Rev.143 http://www2.xp-dev.com/sc/change/94227/143 Fixed critters loading in Mapper (141 revision's bug). Rev.142 http://www2.xp-dev.com/sc/change/94227/142 Fixed server loading (the previous revision bug). Rev.141 http://www2.xp-dev.com/sc/change/94227/141 Mechanism for identifying critter’s animation file name was added. Now you can operate with critter’s animations from Tactics and Arcanum without any conversions. All data files which you need for enabling one or another critters are cited in CritterTypes.cfg comments. The next critters were added to SDK: Humanoid, Behemoth, MTT, Pacification. They are repacked to the separate archive ftrobots.bos. But all available critters from Tactics and Arcanum are added to CritterTypes.cfg with correctly defined parameters for them (by Tabloid), so you can enable the needed data files and use the critters. All animations are transformed to the general appearance (ANIM2_2D*, ANIM2_3D* -> ANIM2*). The functional for operating with them is moved to scripts. In some places where these values are used, numeric literals are replaced by string constants, which description you can find in DefineNames.lst. Fixes were made in weapons prototypes (weapons.fopro) and fo3d templates for 3d critters from VanBuren (_VBHuman.fo3d, _VBMob.fo3d, _VBWeapon.fo3d). Now three sets of primary and secondary animations are used for critters, for three condition types – alive, knockout, dead const uint Critter/CritterCl::Anim1/2Life/Knockout/Dead (const uint Critter/CritterCl::Anim1/2 were deleted). These values are used for animations as default. Pay attention that Anim1 additionally is summed up with animation of the weapon in the active slot, bit-by-bit OR. It is necessary for assignation certain values on continuing basis (e.g. sitting, lying position). For changing these values the next method is used void Critter::SetAnims(int cond, uint anim1, uint anim2) int cond – defines the position to apply values to (COND_* in _defines.fos), if null it is applied to all three; uint anim1, anim2 – animation values. Deleted const uint8 Critter/CritterCl::CondExt Accordingly all COND_*_* for them are deleted. Now position is differentiated by the animations. In connection with it, the next methods specifications were changed void ToDead(uint anim2, Critter@+ killer) bool ToKnockout(uint anim2begin, uint anim2idle, uint anim2end, uint lostAp, uint16 knockHx, uint16 knockHy) void EventKnockout(uint anim2begin, uint anim2idle, uint anim2end, uint lostAp, uint knockDist) void EventSmthKnockout(Critter& fromCr, uint anim2begin, uint anim2idle, uint anim2end, uint lostAp, uint knockDist) uint anim2begin, anim2idle, anim2end – animations of the knockout begging, staying in it and coming to yourself. Standard macroses are defined for the transfer KNOCKOUT_ANIM2_DEFAULT, KNOCKOUT_ANIM2_STUNNED (in _animation.fos). Also Mapper operates now not with CondExt, but with Anim1/Anim2 for the current Cond. Global variables for client/mapper for defining combat mode animations were added uint __Anim2CombatBegin = ANIM2_BEGIN_COMBAT uint __Anim2CombatIdle = ANIM2_IDLE_COMBAT uint __Anim2CombatEnd = ANIM2_END_COMBAT The next reserved client/mapper functions were added (animation.fos): - string@ critter_animation(int animType, uint crType, uint anim1, uint anim2, uint& pass, uint& flags, int& ox, int& oy) Function which is called when loading necessary animation. Returned value - file’s path and name. int animType – critter’s animation type (new parameter which is set in CritterTypes.cfg); uint crType – critter’s type; uint anim1, anim2 – animation’s indexes; uint& pass – function call’s number, is changed by the user. If animation loading failed and this parameter was changed, then function will be recalled (in certain cases you should try to load different files for the one animation); uint& flags – flags, at the present moment two of them – to take the first or the last frame from the animation ( Anim loading flags in _animation.fos); int& ox, &oy – shifts for the animation, in pixels. - bool critter_animation_substitute(int animType, uint crTypeBase, uint anim1Base, uint anim2Base, uint& crType, uint& anim1, uint& anim2) If animation loading failed (and uint& pass wasn’t changed), then this function is called for animation substitute detection (e.g. left hook can be replaced by the right hook). true is returned if the substitute was found (engine also additionally checks if crType, anim1, anim2 were really changed), false – no substitute, animation won’t be loaded and played. int animType – see above; uint crTypeBase, anim1Base, anim2Base – base critter’s and animation’s type, which were at the start; uint& crType, &anim1, &anim2 - critter’s and the current animation’s type for the substitution - bool critter_animation_fallout(uint crType, uint& anim1, uint& anim2, uint& anim1ex, uint& anim2ex, uint& flags) As Fallout’s animations are still loaded by the engine (additional shifts calculation and animations pasting together is needed), for determining animations conformity this function is called, i.e. instead of critter_animation for fallout’s animations this function is called. true is returned if animation is presented, false – not. Method bool Critter::IsAnim3d() const is deleted, use instead of it the global function int GetCritterAnimType(uint crType) values look in Anim types _animation.fos. Critters actions sounds now are played in the scripts, in animation_2d/3d_process. New mechanism for sound file name identification was made, look PlayAnimSound in animation.fos. Critters prototypes were divided into fallout’s (fallout2.fopro) and TLA's (tla.fopro). Bug with roof’s non-transparency in Mapper was fixed. Name indication of chosen critter or tile prototype in mapper was added. Format fo3d now recognizes named constants DefineNames.fos, namely for modificators Mesh, Subset, Layer, Value, DisableLayer, DisableSubset, Texture, EffDef (для Dword), Anim, AnimSpeed, AnimEqual. Global server variable for determining call frequency was added GLOBAL_PROCESS_MOVE uint __EncounterTime = 5000 Global client variable for determining frequency of foolish trick animation call was added uint __CritterFidgetTime = 50000 is deleted using formula Random(__CritterFidgetTime, __CritterFidgetTime * 2) Item prototype’s parameter was deleted bool ProtoItem::Weapon_RequiresActivation now if animation doesn’t exist, it is just not played. Parameters uint16 MapperObject::Scenery_ToMapX/Y were deleted, in mapper also. Moving between locations is performed by entery points. In weapons prototypes types of action animations were substituted from numeric by string constants (accordance look in DefineNames.lst). Appropriate changes were performed in ObjectEditor. Client functions PlaySound andPlayMusic now return bool, signalizing if file was found or not. Global functions for server/client/mapper which return appropriate values from CritterTypes.fos were added uint GetCritterAlias(uint crType) string@ GetCritterTypeName(uint crType) string@ GetCritterSoundName(uint crType) Mapper’s scripts were moved to server’s scripts folder. Also the whole set of functions for operating with CritterTypes.fos was added to Mapper bool IsCritterCanWalk(uint crType) bool IsCritterCanRun(uint crType) bool IsCritterCanRotate(uint crType) bool IsCritterCanAim(uint crType) bool IsCritterAnim1(uint crType, uint anim1) int GetCritterAnimType(uint crType) uint GetCritterAlias(uint crType) string@ GetCritterTypeName(uint crType) string@ GetCritterSoundName(uint crType) Specifications of client’s reserved functions were changed animation2d_process, animation3d_process parameter bool animateStay was added to the beginning. It indicates if any action is performed now (false) or stand animation (true). Reaction for global map’s interface buttons pressing when the size of map’s area (GmapMap) covers the buttons area was fixed. Bug with incorrect loading/saving maps in which script’s or function’s name consists of spaces was fixed. Bug with potential server crashing when using AI_PLANE_MISC was fixed. Rev.140 http://www2.xp-dev.com/sc/change/94227/140 Some robots from Fallout Tactics (look the next revision). Rev.139 http://www2.xp-dev.com/sc/change/94227/139 The next quests were added in San Francisco: “Introduction into Hubbology”, “Hub’s justice”. Transport to Atoll is available for the players who are doing “Introduction into Hubbology” quest (npc is in the docs area of San Fracisco); Automatic transfer to the command center of GECK city citizens when entering the map was removed. Now citizens can choose spawn point. Quest location “Hubbologists laboratory” was added (author JunoReactor). Rev.138 http://www2.xp-dev.com/sc/change/94227/138 Arroyo: Quest “Evidence of Chosen’s death” was added (Todd Stewart); Two courier quests were added (Cassidy, Todd Stewart); Encounter fixes: Fixed bugs of the 120 revision; Fixed random encounters where normally aggressive npc’s didn’t attack after fighting with the other npc’s; Fixed bug with unlimited experience in Den; Fixed mistakes in NCR quests cooldowns; Slight dialogues fixes. Rev.137 http://www2.xp-dev.com/sc/change/94227/137 Ability to specify the layer of tiles/roof to organize correct query of displaying. Totally there can be 5 layers, from 0 to 4. You can switch between them with pressing shift and pressing appropriate key (from 0 to 4). Indication of the current layer is specified in the map’s supplemental information (in upper right corner). Specification of MapperMap AddTile/AddTileName methods was expanded, also layer parameter was added void AddTile(uint16 hexX, uint16 hexY, int offsX, int offsY, int layer, bool roof, uint picHash) void AddTileName(uint16 hexX, uint16 hexY, int offsX, int offsY, int layer, bool roof, string@+ picName) Functions for hash calculation by file’s name and inverse function were added to the native scripts const char* (*GetNameByHash)(uint hash); // Get name of file by hash uint (* GetHashByName)(const char* name); // Get hash of file name The functional for operating with the chosen’s actions was added to the client’s scripts. For taking or specifying the actions use functions uint GetChosenActions(uint[]@+ actions) void SetChosenActions(uint[]@+ actions) This array consists of blocks of seven variables, the first is the type, the other are the parameters. Values of types and parameters look in _client_defines.fos Chosen actions. Argument with the location was added to the reserved function for checking the entries into this location bool entrance_FuncName(Location& loc, Critter@[]& critters, uint8 entrance) The next events were added for critters CRITTER_EVENT_USE_ITEM_ON_ME bool EventUseItemOnMe(Critter& whoUse, Item& item) CRITTER_EVENT_USE_SKILL_ON_ME bool EventUseSkillOnMe(Critter& whoUse, int skill) In the calls stack it is situated between CRITTER_EVENT_USE_* and the global handler. That is CRITTER_EVENT_USE_ITEM for the player + CRITTER_EVENT_SMTH_USE_ITEM for those who can see the player. CRITTER_EVENT_USE_ITEM_ON_ME The global handler critter_use_item. and CRITTER_EVENT_USE_SKILL for the player + CRITTER_EVENT_SMTH_USE_SKILL for those who can see the player. CRITTER_EVENT_USE_SKILL_ON_ME The global handler critter_use_skill. The supplemental information (current hex, fps, etc.) in Mapper is presented in the upper right corner. Bug of 135 revision with transparent tiles when placing them was fixed. Data connected with unfinished mechanism of textured grid was deleted. Rev.136 http://www2.xp-dev.com/sc/change/94227/136 Maps converted to text format. Rev.135 http://www2.xp-dev.com/sc/change/94227/135 Now only text format is used for maps, it is binary only for loading. All maps are converted to the text format (they will be uploaded with the next revision). Extension of this format is “fomap”. To convert your own maps to the new format – execute in Mapper ““#ConvertMaps”, then you should manually or using Mapper set required values in Time, NoLogOut, ScriptModule, ScriptFunc fields, which values you can see in file Maps.cfg. File Maps.cfg is not used anymore, locations prototype numbers are defined opposite to their name in file Locations.cfg, as in the most cases the one map prototype is used for the one location. According to these changes, the next MapperMap methods are deleted: uint GetTile(uint16 tileX, uint16 tileY, bool roof) const void SetTile(uint16 tileX, uint16 tileY, bool roof, uint picHash) string@ GetTileName(uint16 tileX, uint16 tileY, bool roof) const void SetTileName(uint16 tileX, uint16 tileY, bool roof, string@+ picName) And the next are added: uint GetTilesCount(uint16 hexX, uint16 hexY, bool roof) const void DeleteTile(uint16 hexX, uint16 hexY, bool roof, uint index) uint GetTile(uint16 hexX, uint16 hexY, bool roof, uint index) const void AddTile(uint16 hexX, uint16 hexY, int offsX, int offsY, bool roof, uint picHash) string@ GetTileName(uint16 hexX, uint16 hexY, bool roof, uint index) const void AddTileName(uint16 hexX, uint16 hexY, int offsX, int offsY, bool roof, string@+ picName) Also the next fields are added: const int WorkHexX const int WorkHexY int Time bool NoLogOut string ScriptModule string ScriptFunc The next methods are deleted (as their technology is not good enough for now): string@ GetTerrainName(uint16 tileX, uint16 tileY) cons void SetTerrainName(uint16 tileX, uint16 tileY, string@+ terrainName). Function bool SaveMap(MapperMap@+ map, string& fileName, int pathType, bool text, bool pack) now looks as bool SaveMap(MapperMap@+ map, string& fileName, int pathType). The ability to transmit commands /text /pack when saving by the console is deleted respectively. Several functions for operating with map’s fields were added to mapper script (you can do this procedure simply editing necessary field in the map’s file with text editor): #MapTime value – map’s time in minutes; #MapNoLogOut value –possibility to log out on the map; #MapScriptModule moduleName – script, module’s name; #MapScriptFunc funcName – script, function’s name. Now it is possible to place lots of sprites on one hex. Be attentive, fallout’s tiles have the same size and if you place two tiles on the same hex, you won’t see it (only if you select it , it will be less transparent than the others). Take it into account when you place or copy-paste tiles. Function #ClearTiles can help you with this problem, it deletes superfluous tiles from the hex. So, if you operate with fallout’s tiles and you don’t need several tiles on the same hex, execute this script when you finish work. Also you can place tiles on every hex, not in two. Ability of shifting is added for tiles. To produce tile shift just make the same operations as switching between tiles, but additionally pressing shift. Also you can use the same shift procedure for items. To cancel shift, press Alt with Shift and move objects. Fixed 130 revision’s bugs. Fixed bug with absence of shifting in fofrm with one sprite. Fixed bug with error in loading sprites in scripts (LoadSprite), which caused several other bugs. Remained ini files were formatted. Rev.134 http://www2.xp-dev.com/sc/change/94227/134 Config was uploaded by mistake. Take into accont, don't use config file from 132 and 133 revisions, admin pass is "hh" there. Rev.133 http://www2.xp-dev.com/sc/change/94227/133 Redding maps fixed, quest NPC were added. Rev.132 http://www2.xp-dev.com/sc/change/94227/132 Fixed "Anger" quest, the missing dialogue was restored, now it can be finished. Added quest "Forgery". (VC, Linnet) Rev.131 http://www2.xp-dev.com/sc/change/94227/131 New quests "Anger", "Ernst Telman" were added. (VC, Linnet) Fixed bug in VC guard's AI scripts. Fixed mistakes in quest “Amnesty for Joshua” dialogues. Ability to cancel their service for mercs/companions was added if the owner exits from location to the global map. Rev.130 http://www2.xp-dev.com/sc/change/94227/130 Support of graphics files SPR, TIL, ZAR from Fallout Tactics was added. Support of data files BOS from Fallout Tactics was added (works as ZIP archieve). For loading certain animation from SPR files, state it in the name after “$” sign. E.g. loading CrouchAttackClubSwing animation from file Mutant.spr - “Mutant$CrouchAttackClubSwing.spr”. The first frame of first animation is taken without direction. Also, ability to set certain palette for ART files (graphics files from Arcanum) was added – state palette’s number (from 0 to 3) after “$” sign. E.g. to load dfmbnsba.art file with the second palette - “dfmbnsba$1.art”. First palette is taken without direction (that is 0). Operation with sprites was changed. Now all interface graphics (which is set in ini files) is represented not as one sprite, as continuously played animation. Functional for operation with currently drawn sprites on the map was added to the native client’s and mapper’s scripts. Structures: struct Sprite – displayed sprite; struct SpriteInfo – additional information about the sprite. Functions: Sprite* (*GetDrawingSprites)(uint& count); - currently drawn sprites, if no sprites (on the global, menu), then NULL is returned and count == 0; SpriteInfo* (*GetSpriteInfo)(uint sprId); - getting additional information about certain sprite; uint (*GetSpriteColor)(uint sprId, int x, int y, bool affectZoom); - getting pixel’s colour, with the ability of taking zoom into account; it isn’t available for 3d models yet; format - ARGB; bool (IsSpriteHit)(Sprite sprite, int x, int y, bool checkEgg); - test whether the point on the display matches with the current sprite with taking zoom, transparence and egg of transparence into account (optional). The reserved native global variable GameOpt was renamed to Game. Global variables int __MouseX, __MouseY for current mouse position indication were added. Function void GetMousePosition(int& x, int& y) was deleted. Indication of opened console bool __ConsoleActive was added to client’s scripts. Bug with memory leak when rendering 3d graphics to sprites was fixed. Rev.129 http://www2.xp-dev.com/sc/change/94227/129 Added ability to use robot-guards from Sierra as bodyguards (for those who had completed quest "No-sweat job" in Navarro) Added quest "Amnesty for Joshua" (VC, Amanda) Work of teleport on special encounter "Mad scientist's laboratory" was restored. Rev.128 http://www2.xp-dev.com/sc/change/94227/128 Second stable SDK assembly. For the purpose of decreasing repository's size, assemblies will be stored in another places. Links you can find in text files. Rev.127 http://www2.xp-dev.com/sc/change/94227/127 Quest "No-sweat job" in Navarro. Rev.126 http://www2.xp-dev.com/sc/change/94227/126 Mercenaries and companions mechanism (merc.fos) was updated. Now every companion has term of service. Companions don’t meddle in player’s showdowns with NPC’s. Fixed quest “Dip.Courier”. Now it can be finished. Fixed quest “Dock’s attack”. Now it can be finished after killing 5 giant insects. Added 3 new mercs for Lo Pan. Updates NPC-travellers mechanism (traveller.fos). The first NPC-traveller was added (eli.fos). Functions which cooldowns checkup for NPCs in dialogues were fixed. When character dies, all items with flag ITEM_GAG are deleted. Fixed cooldowns for quests “Hub bibliography”, “Sick Brahmin” and in the dialogue with dr.Klaus for stimpacks and first aid kits delivery. When NPC repairs an item, ammo is ejected. Script for NPC monologues realization was added. (monologue.fos) Rev.125 http://www2.xp-dev.com/sc/change/94227/125 Fixes of password encryption in the client's files. Rev.124 http://www2.xp-dev.com/sc/change/94227/124 Fixed bug with graphics loading in the previous update. Rev.123 http://www2.xp-dev.com/sc/change/94227/123 DAT2.1 (Arcanum) files support was added. ART (Arcanum) graphic format was added. Function for operating with strings splitEx was added. Principle is the same as in split, but empty elements are not included in the result array. Also spaces/tabs/string_hyphenation are deleted from the result elements. Examples: split(“A|B||D”, “|”) -> {“A”, “B”, "", “D”} splitEx(“A|B||D”, “|”) -> {“A”, “B”, “D”} split(“A| B\t\t||D| E|F ”, “|”) -> {“A”, “ B\t\t”, "", “D”, “ E”, “F ”} splitEx(“A| B\t\tC||D| E|F ”, “|”) -> {“A”, “B”, “D”, “E”, “F”} Additional DrawSprite functions for the client and mapper were added. You can transfer true with the last argument and as the result, the shift which is stored in the current file will be added to the sprite’s position. void DrawSprite(uint sprId, int sprIndex, int x, int y, uint color, bool applyOffsets) void DrawSprite(uint sprId, int sprIndex, int x, int y, int w, int h, bool scratch, bool center, uint color, bool applyOffsets) Fixed bugs with incorrect ini settings parsing in the scripts. Rev.122 http://www2.xp-dev.com/sc/change/94227/122 Client scripts updates: For the reserved function void render_iface(uint layer) was added calling with value layer 100 to give the ability of drawing on the global map. Also the next global variables were added for operating with the global map: bool __GmapActive – whether global map is active and all the variables below are correct; bool __GmapWait – whether waiting mode of encounter affirming is active; float __GmapZoom – current zoom, don’t forget it to take into account while drawing a map; int __GmapOffsetX, __GmapOffsetY – map shift from the zero-coordinate (up-left corner); int __GmapGroupX, __GmapGroupY – player’s group coordinates; int __GmapMoveX, __GmapMoveY – destination point’s coordinates; float __GmapSpeedX, __GmapSpeedY – movement speed every 50 ms, without taking relief into account For example, calculating the current pixel group’s position - (x = __GmapGroupX / __GmapZoom + __GmapOffsetX), (y = __GmapGroupY / __GmapZoom + __GmapOffsetY). Fixed bug with hanging when drawing 3d model, occurred in the last update. Fixed missing bracket in English texts. (by Kilgore) Rev.121 http://www2.xp-dev.com/sc/change/94227/121 Added more mouse sensitivity and now you can see mouse’s speed percent in the settings. Updated FOConfig.exe. Added AlwaysRun option. Possible values for option Mouse speed were corrected. Option Sleep now can be set to -1, that means switching it off (maximum performance). Added ability of redirecting keyboard’s symbol codes input. For this, use option KeyboardRemap (in FOnline.cfg). It is performed after space – X Y X Y …, where X is the code which is substituted by Y. Code numbers - http://fonline.pastebin.com/Qy3E0qwj Interface description in default.ini is formatted and commented. (by LoadRunner) Location prototypes updates: Option max_copy was deleted. Option max_players was added. It limits the amount of players who can be on the location simultaneously. Players, who can’t enter location because of exceeding the limit will see message 904 from FOGAME.MSG {904}{}{Location is overcrowded, try to enter later.} Password encryption in server *.client. files was added. Mouse shift when switching between movement modes was fixed. Also, for more accurate work, the hex mask was added – look \Client\data\art\misc\hex_mask.png. Only red colour is taken into account and when it takes on certain value, the shift to certain direction is performed (50 – 5, 100 – 0, 150 – 3, 200 – 2). The mask is optional, you can work without it. Fixed loading/saving tiles in the maps text format. Fixed global map shifting behind screen’s edge. Registration of useless clicks in mapper when switching between windows, now isn’t performed. Fixed the animation of 3d critter standing when situating them on the map. Also now 3d critters don’t play standing animation in the critter’s list. Fixed displaying of critters which have only one direction. Fixed command ~reloadscripts. Now when you mark items for deleting (DeleteItem/DeleteItems), their quantity is saved. So, in the moment when real deleting is performed, server will delete the requested number of items. Now knockout during turn-based fight leads to immediate loosing action points, not after finishing the turn. Also, frequent checks for the necessity of finishing the turn were added at the server - if critter’s dead, critter has negative AP, critter has no more AP. Scripts: Fixed critter’s flags (Critter extra flags, _defines.fos). Fixed special encounter scripts Guardian of Forever, Mad Brahmins. Script trader.fos was formatted. Reserved function was added to client scripts, which is called with attacks void hit_aim(uint8& aim) aim value can be redefined( Hit locations in _defines.fos). Function int Critter::GetScore(uint score) was added to server scripts. Specification Critter::AddScore(int score, int val) was changed to Critter::AddScore(uint score, int val). Function for calculation the size of drawn text was added to client and mapper scripts void GetTextInfo(string& text, int w, int h, int font, int flags, int& tw, int& th, int& lines) string& text – text; int w, h, font, flags – height, width, print, flags; int& tw, int& th, int& lines – total width, height and amount of strings in the current text. Rev.120 http://www2.xp-dev.com/sc/change/94227/120 Unused encounter tables for Fallout 1 and commented original’s scripts were deleted from worldmap_init.fos; Random encounters of “beasts versus beasts” type were enabled, which were presented in the scripts, but were absent in the original. Added some new kinds of non-unique random encounters. Now, if player uses to kill NPC’s of certain group or organizations on random encounters, then they become aggressive. Vault City guard’s automatic search is deactivated. Now you need to activate the dialogue to pass through. Fixes in English dialogues versions. Maps fixes. Rev.119 http://www2.xp-dev.com/sc/change/94227/119 Fixed lots of little mistakes in dialogues; Fixed bugs in some Den and Klamath quests; Maps fixes; Duplicate dialogues with different names were deleted. Rev.118 http://www2.xp-dev.com/sc/change/94227/118 Fixed modificator's argument from Parent-0-7 to Parent0-7. Rev.117 http://www2.xp-dev.com/sc/change/94227/117 Added dialogues to Arroyo doctor and his team. Slight fixes (dialogues, maps). Rev.116 http://www2.xp-dev.com/sc/change/94227/116 Library for importing different 3d models was enabled – Assimp http://assimp.sourceforge.net/ Formats that are supported: http://assimp.sourceforge.net/main_features_formats.html Built-in one is still used for X format, for other ones – this library. If you don’t need the library, you can delete it (file Assimp32.dll), client and mapper are able to work without it. Updated mechanism of linking models and animations, now you can link any animation to any skeleton from any file. fo3d format changes: Modificator ModelAnimation was deleted. Modificators Anim, RenderFrame, RenderFrames were expanded – now file name which consists needed animation is placed before the animation’s name (if you state “ModelFile”, then search is performed in the file of loaded model)/ Specification of indicating parent texture (Texture X Parent) was expanded. Now you can additionally state the mesh number and its part, from which the texture is taken - Texture X ParentY-Z, where X is the texture’s number, Y is mesh number, Z is mesh part number; parameters Y-Z are optional, you may don’t use them at all or you may use them partly (Parent, Parent0, Parent-5). Fixed bug with incorrect script processing when operating with Critter::ShowScreen. Fixed bug with incorrect operating and crashing when using Log function with some special symbols. Added Combat Armor 3d model (by Gray). Rev.115 http://www2.xp-dev.com/sc/change/94227/115 Added special encounter "Warehouse of lost doughnuts" (author - Ponchik). Scripts for some original special encounters (author - Cracker). Remade some prototypes. Windows without glasses in Vault's walls can be shooted through now. Slight fixes. Rev.114 http://www2.xp-dev.com/sc/change/94227/114 Maps for quests from the 113 revision. Rev.113 http://www2.xp-dev.com/sc/change/94227/113 Klamath: quests - "Worker searching", "Husband's alert", "Brahmins vaccination" (author - Ponchik). Slight fixes. Rev.112 http://www2.xp-dev.com/sc/change/94227/112 Finished appearance of random encounter "Ocean Trader". Slight maps, dialogues and graphics fixes. Added buttons for BarterGround, GECK town, Warehouse and Hell for the global map (author - Ponchik). Slight fixes. Rev.111 http://www2.xp-dev.com/sc/change/94227/111 Added additional mechanism for data files loading (dat, zip). It is necessary for loading data files loading before scripts initializing and processing start() function as some date is needed to be used before this (effects, prints and some other resourses). For adding files to loading – create DataFiles.cfg file in which you should list all necessary file names. The program searches for the content from the last to the first data file. This mechanism uses server, client, mapper. If list isn’t found then no alerts will be displayed. If one of the files from the list can’t be found or load error appears, then alert will be shown. Option PatchDatPath was deleted, loading of this file is moved to DataFiles.cfg. Rev.110 http://www2.xp-dev.com/sc/change/94227/110 Fixed model's borders calculating which caused nick or text shift above critter's head. Rev.109 http://www2.xp-dev.com/sc/change/94227/109 Fixed skin setting-up when registration 3d character. Fixed order of loaded packs (dat, zip) scanning while searching and parsing ini files. Addition to 106 revision – for stating specific keys for certain resolutions now are used not separate files with different names, but marks in the main file. At the start of the string write “resolution”, than min. width and height for starting using these options. By default these values are equal to zero. For example: "resolution 1024 768 key = value..." It means, that “key = value ...(and so on till the next keyword ”resolution”)” will be included in the final ini. Found data will be inserted in the main file as screen width grows. Rev.108 http://www2.xp-dev.com/sc/change/94227/108 Actual cash files. Rev.107 http://www2.xp-dev.com/sc/change/94227/107 SDK is switched to 3d players mode. Normal version will be restored after finishing mechanism debugging process. For switching off 3d players models – comment the next strings in Server\scripts\_defines.fos #define PLAYERS_3D // Enable 3d players #define PLAYERS_3D_NO_HEAD // No head slot #define PLAYERS_3D_VAULT_SUITE // Vault suite by default, not naked 3d updates: Fixed and reduced the size of attributes and weapons. Added missing attributes of opened pipboy. In the left hand now is displayed the item, which player has in the second slot. Armor’s models are divided between the current armor items in the such way, that gamer could see the difference. For example combat armor consists of power armor and the helmet, robes are replaced by jail suit and etc. Fixed animation playing during creating the new character in single mode. Added skin change processing in start intro and after Kitty’s haircut. Added skeleton’s skins. Added sound for men and women. Fixed sound name for critters parameter’s loading (CritterTypes.cfg, SoundName). Now characters walk slowly with double click if alwaysrun option is turned on. Rev.106 http://www2.xp-dev.com/sc/change/94227/106 Added ability to make 3d characters available to play for. To enable it (it is disabled as default) - comment certain strings in _defines.fos // #define PLAYERS_3D // Enable 3d players // #define PLAYERS_3D_NO_HEAD // No head slot // #define PLAYERS_3D_VAULT_SUITE // Vault suite by default, not naked Updated mechanism of working with ini files. Now, when searching for the keys, excess spaces and tabulations are skipped (now you can type “ key = value ”, previously was correct only variant “key=value”) Added function bool AppendIfaceIni(string& iniName), which enables additional ini files. If the name includes slashes, than the search is being performed from data root, if not - than from folder data/art/interface/. default.ini is added automatically by the engine, others you can enable in start() client function. Loading is performed sequentially from default.ini to ones enabled by user by turn. Every packed file is checked by the turn of loading, then in the folder. Global variable string __UserInterface was deleted. Fixed bug with incorrect parsing of animation indexes in fo3d file. Fixed bug with incorrect position of the egg of transparence in zoom mode. For better readability the next scripts were formatted: start_server_client.fos client_main.fos In the future this practice will be continued. Rev.105 http://www2.xp-dev.com/sc/change/94227/105 Documentation update - slight fixes. Rev.104 http://www2.xp-dev.com/sc/change/94227/104 Added structure of script array (ScriptArray) to native scripts. Added ability to client's native scripts of calling hex data - Field. Data is stored in Field* GameOptions::ClientMap, uint GameOptions::ClientMapWidth/ClientMapHeight. If map is loaded, than ClientMap != NULL, hex calling - ClientMap[hexY * ClientMapWidth + hexX]. Rev.103 http://www2.xp-dev.com/sc/change/94227/103 Added always run option - can be enabled in client's config file “AlwaysRun”. Disabled as default. Added global variables for AlwaysRun regulating: bool __AlwaysRun (as default - false) - enabling AlwaysRun ability; uint __AlwaysRunMoveDist (as default = 1) - run with click, if distance is equal or more than the value; uint __AlwaysRunUseDist (as default = 5) - run with using smth/dialogue/etc, if distance is equal or more than the value. TLA's mechanics is equal to original - always run with click, always run with using if distance is more than 4 hexes. Added parameter uint Critter::ItemTransferCount to native scripts. It stores the value of transferred items during the last transaction. Rev.102 http://www2.xp-dev.com/sc/change/94227/102 Optimized server operation (script calling) in one tread operation mode, performance increased up to 400%. Fixed bug with crash when calling Critter::Say* methods with parametr SAY_SAY_TITLE. Rev.101 http://www2.xp-dev.com/sc/change/94227/101 Changes in fo3d format, new specification was created - look this theme: http://www.fonline.ru/forum/showthread.php?t=19689 New format added new abilities of working with 3d objects - trasmission of texures, other paremeters, etc. Also added ability to render certain animation to sprites as for one frame, either for the whole animation. But the bug with cutting off the shade situated below the lowest edge of model still presents. Updated old fo3d files, also VanBuren's critters and weapon models were added. Changed effects structure, added effect for normal mapping (3D_NormalMapping.fx). Added transfer of real numbers through scripts, float __EffectValue0..9. Fixed bugs with loading 3ds files - miss of meshes except the first; crash if texture coordinates are not presented. Fixed bug in Mapper with data copying when copy-pasting a large number of objects. Fixed text centering of hexes amount in zoom mode. Rev.100 http://www2.xp-dev.com/sc/change/94227/100 Documentation update. Rev.99 http://www2.xp-dev.com/sc/change/94227/99 Updated documentation file, which was missed in the previous revision. Rev.98 http://www2.xp-dev.com/sc/change/94227/98 Added resourse gathering system; Documentation updating. Rev.97 http://www2.xp-dev.com/sc/change/94227/97 Fixes of "Night is tender" quest, now healing must work properly. Added preview from global map for GECK location. Rev.96 http://www2.xp-dev.com/sc/change/94227/96 Gecks counting on the location now affects its auto moving away and visibility separately; Parameter geck_enabled (Map::GeckEnabled) renamed to geck_visible (Map::GeckVisible). Rev.95 http://www2.xp-dev.com/sc/change/94227/95 Added global server function void SetChosenSendParameter(int index, bool enabled) which can denie transmitting parameters to client. Transmitting of all parameters is enabled by default. Rev.94 http://www2.xp-dev.com/sc/change/94227/94 Fixes of sea encounter maps. Rev.93 http://www2.xp-dev.com/sc/change/94227/93 Added sea encounters; Added posibility of an encounter while travelling on air/water transport; Player always have possibility of cancellation water/air encounter and never gains experience for that; Bug fix in mapper with incorrect editing critter's parameters. Rev.92 http://www2.xp-dev.com/sc/change/94227/92 Fixed displaying rating in pipboy. In mapper additional indication of cut sprites was added to make lines, which are needed for correct interaction, visible. Rev.91 http://www2.xp-dev.com/sc/change/94227/91 Added traffic encryption between server and client. Rev.90 http://www2.xp-dev.com/sc/change/94227/90 Fixed choosing automatically cut sprites in zoom mode. Rev.89 http://www2.xp-dev.com/sc/change/94227/89 Added parametr DrawOrderOffsetHexY for shifting order of drawing lower (Y axis). This is an analogue for recently deleted DrawPosOffsX. Fixed using car trunk. Different slight fixes. Rev.88 http://www2.xp-dev.com/sc/change/94227/88 Fixed exit from Redding; slight fixes. Rev.87 http://www2.xp-dev.com/sc/change/94227/87 Fix for weapon AP cost. Rev.86 http://www2.xp-dev.com/sc/change/94227/86 May be fixed bug with incorrect displaying of some tiles. Fixed bug with unworking elevators. Added restoration of effects when loosing a device (cause crashed e.g. with alt+tab) Rev.85 http://www2.xp-dev.com/sc/change/94227/85 Fixed bug with chat disappearing. Fixed AI bug when combat plans always finished with REASON_CANT_WALK. Rev.84 http://www2.xp-dev.com/sc/change/94227/84 Fix for DT params reading. Rev.83 http://www2.xp-dev.com/sc/change/94227/83 Safety checks for radio commands. Rev.82 http://www2.xp-dev.com/sc/change/94227/82 Fixes of some dialogues; translations of dialogues on Barterground; map fixes; fixes of encounter table; slight fixes. Rev.81 http://www2.xp-dev.com/sc/change/94227/81 Fixed another bug during moving on the global map. Fixed unplanned activating of b/w effect. Rev.80 http://www2.xp-dev.com/sc/change/94227/80 Fixed teleportation bug during moving on the global map. Rev.79 http://www2.xp-dev.com/sc/change/94227/79 Fixed bug with incorrect tear and wear and fuel consumption calculation during moving on the global map by car. Rev.78 http://www2.xp-dev.com/sc/change/94227/78 Fixed brightness output. Fixed outlining activation. Rev.77 http://www2.xp-dev.com/sc/change/94227/77 Added automatic sprite cutting. Main purpose – correct displaying of long walls. Parameter SpriteCut was added to prototypes and mapper (only for scenery) for modification. Cutting values: 0 – switched off, 1 – horizontal (X axis), 2 – vertical (Y axis). Wall blocks should be set manually , for that purpose six blocks with different corner types with visual indication were added. It is necessary for correct calculation of brightness and egg of transparence reaction. Numbers 6800..6805 at the end of Wall and Fast list. Fixed client instability after recent update. Primary indexes array for animations was expanded to the range ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789. For value changing use native means (structure CritterType in fonline.h). Support of effects (HLSL) loading with earlier version of compiler. Automatic attempt of compilation is performed after failure in compilation with the current library. Added data updating for client function GetIniStr in the start function (start) after each call of LoadDataFile. Mapper update: Fixed bug with error in loading tiles with extension not in lower case. Fixed algorithm of sprite displaying calculation (when big sprites were disappearing near the screen edge). Additional visual means for debugging: - Ctrl + Q: Corners type viewing; - Ctrl + W: Viewing the result of sprite cutting, linking them to hexes; - Ctrl + E: Viewing the sequence of sprites drawing. At the time of renewing NPC’s bag, only items which are not in inventory are repaired and reloaded. Added ability to set sprite shift in screen coordinates to prototypes. Fixed bug with double notification of quest state change. Rev.76 http://www2.xp-dev.com/sc/change/94227/76 Added quest “Night is tender” Rev.75 http://www2.xp-dev.com/sc/change/94227/75 Tables for sea encounters, slight fixes. Rev.74 http://www2.xp-dev.com/sc/change/94227/74 Source documentation. Rev.73 http://www2.xp-dev.com/sc/change/94227/73 SPECIAL calculating is moved to native scripts - fonline_tla.dll for server and fonline_tla_client.dll for client (must be situated in data\scripts). The other parameters which are used in the engine are needed generally for drawing GUI, but soon they’ll be moved to scripts too. Native scripts files are moved from data folder to scripts. Added bat-file make_tla.bat for their compilation (installation of MSVS8 is necessary). For example of use new methods for critter classes are added (IsInjured, IsDmgArm...), items (IsHtHAttack, IsGunAttack...) with pragma bindfunc. Example of linking global varieties of standard and native scripts is added (__HitAimEyes, __HitAimHead..., these global varieties are moved to scripts). Callback functions are added (to GameOptions) for item usage cost determination - GetUseApCost. For attack max range determination - - GetAttackDistantion. It further such functions will force out usage of critter parameters in the engine. These functions are binded at the stage of connecting of library to the engine (DllMainEx). For operating with the engine added the next functions (to GameOptions): CritterChangeParameter – for correct change of critter parameter, this function should be called firstly, then you can change the value. CritterTypes – index of CritterType structures where data from CritterTypes.cfg is stored. Added method to client’s critters for detection whether now is time of its move in the turn-based mode bool CritterCl::IsTurnBasedTurn() const Some logics of operating with turn-based mode is moved to the scripts - turn_based_process main.fos. Some recommended specifications for the reserved functions are changed - templates.fos. Min. time of dialogue or barter with NPC now is regulated by the global varieties __DlgTalkMinTime (now default 100 seconds) и __DlgBarterMinTime (now default 50 seconds). Range for all prototypes (maps, locations, items) is expanded to 30000. Fixed bug with incorrect drawing of minimap in the pipboy. Fixed bug with incorrect calculating of healing rate while registration. Fixes of Zerg’s special encounter. Rev.72 http://www2.xp-dev.com/sc/change/94227/72 Data library for script compilation (updated on 27 October) Rev.71 http://www2.xp-dev.com/sc/change/94227/71 Added Zerg special encounter. Fixed bug with incorrect names in Fixboy. Added function LoadDataFile to server scripts, analogue of client/mapper. Fixed mistiming of player movement on global map. Deleted function Critter::SendQuestVar, now alert about changing of local variable is automatic. Changed function specification void ShowScreen(int screenType, uint param, string& funcName) to void ShowScreen(int screenType, uint param, string@+ funcName), now can transmit both empty string or null. Rev.70 http://www2.xp-dev.com/sc/change/94227/70 Documentation is updated. Deleted incorrect splash-picture. Added urgent files for scripts autoaddition in Notepad++. Rev.69 http://www2.xp-dev.com/sc/change/94227/69 Added ability to use your own shaders for game graphics drawing. High Level Shader Language is used for this. Effects folder is situated in data\effects. After the first compilation they are cashed in the folder data\cache (in futher other different data will be cashed there). You can read specifications on the game engine effects in data\effects\ReadMe.txt. Added ability to link any effect to sprite or model in .fofrm and .fo3d (“effect=effect_name.fx”). For default effect changing, function void SetEffect(int effectType, int effectSubtype, string@+ effectName) was implemented into the client scripts. int effectType, effectSubtype – effect types look in _client_defines.fos (Subtype for fonts used font type); string@+ effectName – the name of the effect file (with extension) is in the folder data\effects. Added changing of detailization of game objects for demonstration. For activation press Alt+W, for return press Alt+Q. Added client function for map redrawing void RefreshMap(bool onlyTiles, bool onlyRoof, bool onlyLight) if all three parameters are false, than everything will be redrawed. Also these three parameters are incompatible. Fixed bug in mapper with impossibility of viewing 3d critters in prototypes table. At present time they can’t be ranged. Added ability to play sounds/music from different folders. void RefreshMap(bool onlyTiles, bool onlyRoof, bool onlyLight) If there isn’t slashes (‘/’,‘\’) in path name than search is performed in the folder sfx/music. If there are slashes, than in the root (“data/mysounds/mysound.ogg”). Rev.68 http://www2.xp-dev.com/sc/change/94227/68 Fixed bug in the ObjectEditor when damage type is saved incorrectly. Rev.67 http://www2.xp-dev.com/sc/change/94227/67 Fixed crashing when calling CritterCl::[Param/Stat/Perk/etc]Base in client scripts; Fixed error with recording Anydata of zero length (by Atom). Rev.66 http://www2.xp-dev.com/sc/change/94227/66 Fixed incorrect weapon prototype; errors in checking for special encounters; added decraft of the sand sack to fixboy; other little fixes. Rev.65 http://www2.xp-dev.com/sc/change/94227/65 Redding: finished map according to the last concept; - Garbage was returned to static locations; - Ammo craft on benches (beta-version); - Destruction of the sack using skill repair now gives use empty sack. - Entering Den message was moved to texts from script. Rev.64 http://www2.xp-dev.com/sc/change/94227/64 AngelScript updated to 732 revision. Added new methods for arrays: void T[]::insertAt(uint, const T&) – element inserting in specified position in the array; void T[]::removeAt(uint) – deleting the element by index; void T[]::insertFirst(const T&) – element inserting to the beginning of the array; void T[]::removeFirst() – deleting the first element; void T[]::insertLast(const T&) – element inserting to the end of the array; void T[]::removeLast() – deleting the last element; void T[]::grow(uint) – add elements (the sames as a.resize(length()+X)); void T[]::reduce(uint) – delete elements (the same as a.resize(length()-X)); T& T[]::first() – call of the first element of the array (the same as a[0]); T& T[]::last() – call of the last element of the array (the same as a[a.length()-1]). Also deleted all functions ArrayPushBack as the built-in array functional was expanded. All the scripts were fixed accordingly. Rev.63 http://www2.xp-dev.com/sc/change/94227/63 Added ability to start the server as a service. For registration/start use key “-service” (shortcut FOServerService.exe.lnk). For deleting use keys “-service -delete” (shortcut FOServerServiceDelete.exe.lnk). Added ability to log using function OutputDebugString. The log can be caught (even remotely) using program DebugView http://technet.microsoft.com/en-us/sysinternals/bb896647.aspx For switching it on in server and client configs option LoggingDebugOutput is added. Server/client/mapper will work normally now with incorrect active folders. At start you set the current folder of executable. Fixed bug with absence of replacement “x” by “ч” in built-in punto switcher. Fixed crash in turn based mode and incorrect work of Map::GetCritter(uint critterId). Rev.62 http://www2.xp-dev.com/sc/change/94227/62 Fixed bug with updating vehicle data on the global map. Fixed bug with system hanging while looking items quantity in game info. Fixed bug with the incorrect login/disconnect. Fixed bug with incorrect creating non-stacking items on the map in the number of >1. Fixed bug with incorrect critters gathering when path tracing (by Atom). CRITTER_EVENT_TALK now performed before checking NPC for settings which could restrict speaking with it. Added new mechanism for script garbage gathering (by Atom). For config file simplification, the next options were removed: ASGarbageTime, VarsGarbageTime. Deleted transfer of a group of critters into global map processing global_process, CRITTER_EVENT_GLOBAL_PROCESS. Also instead of transferring a group into global map processing global_invite, CRITTER_EVENT_GLOBAL_INVITE, now only the leader is transferred. Instead of picking group use Critter@[]@ Critter::GetGlobalGroup(). Because of that, specification methods were changed: bool Critter::EventGlobalProcess(int type, Critter@[]& group, ...) bool Critter::EventGlobalInvite(Critter@[]& group, ...) for bool Critter::EventGlobalProcess(int type, Critter& cr, ...) bool Critter::EventGlobalInvite(Critter& leader, ...) Reserved functions of critter event CRITTER_EVENT_GLOBAL_PROCESS, CRITTER_EVENT_GLOBAL_INVITE bool _FuncName(Critter& cr, int type, Critter@[]& group, ...) bool _FuncName(Critter& leader, Critter@[]& group, ...) for bool _FuncName(Critter& cr, int type, ...) bool _FuncName(Critter& leader, ...) Fixed bug with incorrect cooldown for hijacking, now it is equal for a normal lock. Added checking for unopenable door to the lock break script. Rev.61 http://www2.xp-dev.com/sc/change/94227/61 Fixed bug with incorrect reappraisal of item flags in Mapper. Fixed bug when player isn't notified about moved item. Rev.60 http://www2.xp-dev.com/sc/change/94227/60 Fixed bug with incorrect displaying of the rain on roofs. Rev.59 http://www2.xp-dev.com/sc/change/94227/59 Mapper's fix for correct operating with new folder and print's names. Rev.58 http://www2.xp-dev.com/sc/change/94227/58 For editing use program Bitmap Font Generator v1.12. http://www.angelcode.com/products/bmfont/ Print should have the next attributes - OEM RUSSIAN, Padding 1 (in all directions), Binary, all symbols should be placed on the one texture. All prints are moved in the separate folder “Client\data\fonts\”. For the example print FONT_COURIER_NEW_SMALL is added. Look _client_defines.fos, client_main.fos, CourierNewSmall.bmfc, CourierNewSmall.fnt, CourierNewSmall_0.png. Added function in client’s scripts of activating the clock which shows you the time signal comes to server and returns (ping). You can use it for restriction of input while waiting for server’s answer. Fixed crushing when looking players statistics on server. Fixed crushing of Dialogue Editor (by Atom). Rev.57 http://www2.xp-dev.com/sc/change/94227/57 Expanded mechanism of operating with ingame radio. Added flag ITEM_RADIO for radio. (in _defines.fos). Radio messages are now also sent to radios which are on the ground . For their identification engine sends them with color 0xFFFFFFFE (in map_message in client_main.fos). Realization is in script radio.fos (interface, mechanics), call from main.fos. Interface data is taken from default.ini (Radio*). You can edit it with using item or using science skill on it. Radio data is situated in general fields of several item types. That’s why it isn’t a good idea to use this flag with Doors, Keys, Cars, Weapons, Armors, Holodiscs. Transmitting and receiving functions are separated. For managing the next flags and range types are used (_defines.fos): Restriction of transmitting/receiving is stored in Item/ItemCl::RadioFlags, used by the engine: RADIO_DISABLE_SEND, RADIO_DISABLE_RECV. Restriction of switching radio state in в Item/ItemCl::RadioFlags: RADIO_DISABLE_SHIFT_SEND, RADIO_DISABLE_SHIFT_RECV - restriction of switching transmit/receive; RADIO_DISABLE_SHIFT_BC_SEND, RADIO_DISABLE_SHIFT_BC_RECV - restriction of changing distance range; RADIO_DISABLE_SHIFT_CHANNEL – restriction of channel switching. Range types are stored in Item/ItemCl::RadioBroadcastSend/RadioBroadcastRecv, are used by the engine: RADIO_BROADCAST_WORLD – works all over the world; RADIO_BROADCAST_MAP – works within the limits of the current map; RADIO_BROADCAST_LOCATION - works within the limits of the current location; RADIO_BROADCAST_ZONE(x) - works within the limits of “x” zones on the global map; RADIO_BROADCAST_FORCE_ALL – works everywhere regardless of the adjustments of transmitting or receiving radio/ Added support of these flags to the object editor (both engine and script ones). Added scripts uint16 ProtoItem::RadioChannel, uint16 ProtoItem::RadioFlags, uint8 ProtoItem::RadioBroadcastSend, uint8 ProtoItem::RadioBroadcastRecv. For holodisc marking added flag ITEM_HOLODISK (in _defines.fos). Holodisc data is situated in general fields of several item types. That’s why it isn’t a good idea to use this flag with Doors, Keys, Cars, Weapons, Armors, Holodiscs. Added support of this flag in object editor. Added script uint ProtoItem::HolodiskNum. Added ability to use built-in cartridge indicator for other purposes. Added the next parameters: uint8 ProtoItem::IndicatorStart – initial value, - Item/ItemCl::Indicator; uint8 ProtoItem::IndicatorMax – maximum available value (for correct calculation of the strip position); uint8 Item/ItemCl::Indicator – current value. Mechanism is considered activated if maximum value in the prototype isn’t equal to zero. Added support of editing of initial and maximum values in the object editor. Method Item::GetMapPosition for the items which are in the global map returns their coordinates. Fixed bug with system hanging while looking online statistics. Added storing up to 20 ip addresses for one account (fonline.h). Item prototype’s fields, which are equal to zero, now cannot be saved. All prototypes are resaved. Continued working on multithreading in game logics. Added ignoring of non-initialized maps or locations while loading save (NPC’s would be moved to global map, items - deleted). Fixed bug in the dialogue on BiX location. Updated abilities of GUI scripting. In script _defines.fos notes “Used in engine” are replaced by “Hardcoded”; point is the same - to show that this data is used by engine also. Corrected some specifications in template.fos of reserved functions. Rev.56 http://www2.xp-dev.com/sc/change/94227/56 Changes in craft: some new recipe's (new weapon, etc.), added workbenches in some town/military bases. Rev.55 http://www2.xp-dev.com/sc/change/94227/55 - Updated Redding maps; - Deleted unused graphics; - Added second entrance to NCR; - Some changes in NPC's inventories on encounters. Rev.54 http://www2.xp-dev.com/sc/change/94227/54 - Slight fixes in Hartman's and Shrim's dialogues (Vault City); - Fixed problem with immediate sending off caravans/patrols Ahe9mPDq; - Changed content of the quest variable for the quest "Third trial. Drill." - Restored functions for triggers t_DialogNpc and scenery s_TransitToMap. Rev.53 http://www2.xp-dev.com/sc/change/94227/53 Fixes of KotW location. Quest for oil can can be done by everybody in Arroyo now. Rev.52 http://www2.xp-dev.com/sc/change/94227/52 Fixes of Brok and Xander Church location (by VaultTec) Rev.51 http://www2.xp-dev.com/sc/change/94227/51 Fixed names loading (*Names.lst) with the dialogue editor. Changed extention of its config file. Rev.50 http://www2.xp-dev.com/sc/change/94227/50 Fixed bug with duplicating of time events. Rev.49 http://www2.xp-dev.com/sc/change/94227/49 Slight optimization of multi-threading. Rev.48 http://www2.xp-dev.com/sc/change/94227/48 Fixed error in loading of games variables values. Fixed loading of saves games in single player mode. Rev.47 http://www2.xp-dev.com/sc/change/94227/47 Time events changes. - function specification void EraseTimeEvent(uint num) changed to bool EraseTimeEvent(uint num) Return value shows whether deleting is done or the event isn't found. - Deleted the next functions: uint CreateTimeEvent(uint beginSecond, string& funcName, Critter& cr, bool save) uint CreateTimeEvent(uint beginSecond, string& funcName, Item& item, bool save) uint CreateTimeEvent(uint beginSecond, string& funcName, Critter@[]+ critters, Item[]@+ items, bool save) For migration just put the identificator to the critter or item. Added the next functions for operating with event's values: bool GetTimeEvent(uint num, uint& duration, uint[]@+ values) bool GetTimeEvent(uint num, uint& duration, int[]@+ values) bool SetTimeEvent(uint num, uint duration, uint[]@+ values) bool SetTimeEvent(uint num, uint duration, int[]@+ values) Parametr "duration" - time till the event is done in seconds. Return value means that operation is completed, error means that event wasn't found. These functions are thread-safe, 2 thread can't operate with the events simultaneously. Function GetTimeEvent blocks using (changing) of the event until the script is finished or until SetTimeEvent is called, which unblocks the event. GetTimeEvent writes value to the end of the array, SetTimeEvent rewrites it completely. When null is transmitted to values SetTimeEvent values are not changed. - Event function specification can be of two types now: uint e_FuncName(uint[]@ values) uint e_FuncName(int[]@ values) Fixed bug with crashing while loading 3ds file without texture coordinates. Rev.46 http://www2.xp-dev.com/sc/change/94227/46 Added next fuctional for operating with files (class "file"): - for data reading uint8 file::readUint8() uint16 file::readUint16() uint32 file::readUint32() uint64 file::readUint64() In the case of error or the end of file it returns 0. uint file::readData(uint count, uint8[]& data) If data == 0 then program read all data till the end of the file beginning from the current position. Read data is added to the end of the array. The return value shows the real amount of read bytes. - For data recording bool file::writeUint8(uint8 data) bool file::writeUint16(uint16 data) bool file::writeUint32(uint32 data) bool file::writeUint64(uint64 data) bool file::writeData(uint8[]& data, uint count) If count == 0 it records all data from an array. In the case of error it returns false. Fixed bug with incorrect output of zoom value on minimap. Rev.45 http://www2.xp-dev.com/sc/change/94227/45 Extended range of game variables: - local variable of location (LLVAR_); - local variable of map (LMVAR_); - local variable of item (LIVAR_). When using them in dialogue values are taken from: for location - current critter's location; for map - current critter's map; for item - current item in the main slot. For operating with scripts use function GetLocalVar with transmitting of needed operator. Server will delete unused variables of all types automatically. Deleted server function uint DeleteVars(uint id). Dialog editor was adapted to the last updates of game variables. Added ability to define named value (DefineNames.lst) as a value for conditions and results. Added missed translations. Translations of commit history you can find here: http://www.xp-dev.com/forum/topic/3220 Rev.44 http://www2.xp-dev.com/sc/change/94227/44 Updated format of time output in dialogue with repairer-npc; Added script for realization of npc-travellers on global map.(traveller.fos and Davine's script in sf_common.fos); Added npc-traveller explosives-seller Davine. Can be hired in GECK town; Added trade mode "cash only" MODE_BARTER_ONLY_CASH; Fixed bugs in maps structure on maps with holodiscs. Rev.43 http://www2.xp-dev.com/sc/change/94227/43 Added setting in config which defines whether to bind logic threads to the core or let OS do it. In default it is enabled (1) 1. If zero then operating system automatically manage threads between cores, else affinity thread per core LogicThreadSetAffinity=1 Continued work on multi-threading of game logics. Rev.42 http://www2.xp-dev.com/sc/change/94227/42 Fixed crashing under certain conditions; Fixed cycle counting per second. Rev.41 http://www2.xp-dev.com/sc/change/94227/41 Fixed bug connected with the last update. Rev.40 http://www2.xp-dev.com/sc/change/94227/40 Multi-threading of game logics is now supported. You can read about this in details on the forum; Fixed path of recording/reading ban files; Added seconds on the globalmap clock; Decreased permissible length of text listener of channels and maps from 5 to 2 symbols; Deleted global server function void DeleteNpcForce(Critter& npc); Changed specification of method from uint Location::GetMaps(Map@[]& maps) const to uint Location::GetMaps(Map@[]@+ maps) const Now you can know the amount of maps on the location without recording them into array; Added basic server command ~log (~37). It is intended for text listening of server log. Minimum access: administrator. For adding to text listening you should transmit arguement "+", for disconnecting "-"; Fixed basic creating locations command ~addloc (~16); Upgraded basic command of looking player's id using his name ~id (~4); Changed specifications of global functions void critter_attack(Critter& cr, Critter& target, ProtoItem& weapon, ProtoItem@ ammo, uint8 aim) -> void critter_attack(Critter& cr, Critter& target, ProtoItem& weapon, uint8 weaponMode, ProtoItem@ ammo) int to_hit(CritterCl& chosen, CritterCl& target, ProtoItem& weapon, int hitLocation) -> int to_hit(CritterCl& chosen, CritterCl& target, ProtoItem& weapon, uint8 weaponMode); Added variables for weapons which state their active mode const uint8 Item::Mode const uint8 ItemCl::Mode 4 high-order bits - sight (look Hit locations in _defines.fos), 4 low-order bits - mode (0 – primary, 1 – secondary, 2 – third); Added macroses for convenience _WeaponModeUse, _WeaponModeAim, _WeaponModeMake в _macros.fos; Added returnable value of the current mode in method GetSlotProto (urgent for weapons) ProtoItem@+ Critter/CritterCl::GetSlotProto(int slot, uint8& mode) const; Renamed parametr #define ST_RATE_ITEM (102) to #define ST_HANDS_ITEM_AND_MODE (102) value stored in it: XXXX00YY, where XXXX pid - unarmed blow, and YY - mode. Changed way of the dialogue redirecting. You should use returnable value of result function or say-mode instead of uint __ForceDialog; Added specifications of functions: uint r_FuncName(...), uint dlg_FuncName(...) which are detected by server automatically; Fixed bug with moving pushed players only in one direction; Object pointers (derivatives arrays or class members)Location, Map, Critter, Item, GameVar can't be saved in global varities now. For scripts migration save their identificators (Location::Id, Map::Id, Critter::Id, Item::Id), addresing to the objects with (GetLocation, GetMap, GetCritter, GetItem). Weapons prototypes don't save curret mode of fire (in connection with multi-threading). Changed specifications of class members ProtoItem const uint8 Weapon_Skill, const uint8 Weapon_DmgType, const uint8 Weapon_Anim2, const uint16 Weapon_DmgMin, const uint16 Weapon_DmgMax, const uint16 Weapon_MaxDist, const uint16 Weapon_Effect, const uint16 Weapon_Round, const uint8 Weapon_ApCost, const uint8 Weapon_SoundId, const bool Weapon_Remove, const bool Weapon_Aim, const uint8 Weapon_CurrentUse, void Weapon_SetUse(uint8 use) const to const uint16 Weapon_Skill_F, const uint16 Weapon_Skill_S, const uint16 Weapon_Skill_T, const uint16 Weapon_DmgType_F, const uint16 Weapon_DmgType_S, const uint16 Weapon_DmgType_T, const uint16 Weapon_Anim2_F, const uint16 Weapon_Anim2_S, const uint16 Weapon_Anim2_T, const uint16 Weapon_DmgMin_F, const uint16 Weapon_DmgMin_S, const uint16 Weapon_DmgMin_T, const uint16 Weapon_DmgMax_F, const uint16 Weapon_DmgMax_S, const uint16 Weapon_DmgMax_T, const uint16 Weapon_MaxDist_F, const uint16 Weapon_MaxDist_S, const uint16 Weapon_MaxDist_T, const uint16 Weapon_Effect_F, const uint16 Weapon_Effect_S, const uint16 Weapon_Effect_T, const uint16 Weapon_Round_F, const uint16 Weapon_Round_S, const uint16 Weapon_Round_T, const uint16 Weapon_ApCost_F, const uint16 Weapon_ApCost_S, const uint16 Weapon_ApCost_T, const uint8 Weapon_SoundId_F, const uint8 Weapon_SoundId_S, const uint8 Weapon_SoundId_T, const bool Weapon_Remove_F, const bool Weapon_Remove_S, const bool Weapon_Remove_T, const bool Weapon_Aim_F, const bool Weapon_Aim_S, const bool Weapon_Aim_T Added special macros for convenience (Weapon in _macros.fos) _WeaponIsPrimaryAviable, _WeaponIsSecondaryAviable, _WeaponIsThirdAviable, _WeaponSkill, _WeaponDmgType, _WeaponAnim2, _WeaponDmgMin, _WeaponDmgMax, _WeaponMaxDist, _WeaponEffect, _WeaponRound, _WeaponApCost, _WeaponSoundId, _WeaponRemove, _WeaponAim, _WeaponModeUse, _WeaponModeAim, _WeaponModeMake Mapper updates: string@ MapperObject::PicMap/PicInv now return prototype's picturename if other isn't set up; Added const uint16 MapperMap::Width, const uint16 MapperMap::Height for storing current map sizes; Fixed function GetMapFileNames(...). Rev.39 http://www2.xp-dev.com/sc/change/94227/39 Slight fixes of quests in Den, Klamath Improved closed location in Redding Rev.38 http://www2.xp-dev.com/sc/change/94227/38 Slight fixes of quests from string "Guard"; Added services for guardsmen: doc. Troy can heal player; give stimpacks; Valery repairs items; Added universal repairing script for npc (repairer.fos). E.g. in the dialogue vc_valery.foldg 3 new special encounters with holodiscs; Several deleted functions from stdlib are returned. Rev.37 http://www2.xp-dev.com/sc/change/94227/37 Fix of calculating amount of dead NPC on location when necessity of attack is being determinated. Fix of amount loss allies counter when finishing the quest. Output of messages to log is disabled in quest “The drill”. Fix of limit of times amount quest “Dangerous hunt” can be done. Descriptions of deleted maps were returned, which made server restart impossible without saves clearing. Rev.36 http://www2.xp-dev.com/sc/change/94227/36 Fix of Hartman’s dialog. The wrong requirement was deleted. Rev.35 http://www2.xp-dev.com/sc/change/94227/35 New quests from string “Guard” in Vaultcity - Vaultcity guard. Third trial. Drill. - Easy walk. - Go there, don’t know where. - Dangerous hunt. - Diplomatic courier. Fix of caravan’s and patrol’s departure time. Relative departure time was substituted for absolute. Added ability of caravan’s instant departure from the dialog. Fix of items that were generated in encounters 0 in number. (It was impossible to throw out them) Fix of quest “Hub bibliography”. Player need 7 books to gain reputation instead of 6. Rev.34 http://www2.xp-dev.com/sc/change/94227/34 - Maps fixes - Fixed reaction of BG guards on explosives activation Rev.33 http://www2.xp-dev.com/sc/change/94227/33 - Graphics fixes - Non-used files were deleted - Original map of BG was returned Rev.32 http://www2.xp-dev.com/sc/change/94227/32 Private car parking in geck town is disabled till the problem with car boot is solved. Rev.31 http://www2.xp-dev.com/sc/change/94227/31 Added first quests of string “Guardsman”, VaultCity. (Clearing of server saves is needed) Added template for making quests-combats with npc. (fighter_quest.fos, e.g. “Guard. First trial.”) Added ability to take quest “Hub bibliography” again if player failed to finish it at previous time. Fixed incorrect condition in Dappo’s dialogue in quest “Lot of defective rifles”. Added verification of addressee in “Postman” quest, now player can’t bring letter to any npc of type stated in the letter. Rev.30 http://www2.xp-dev.com/sc/change/94227/30 Deleted not used MSG files - FOSCRIPT.MSG. Rev.29 http://www2.xp-dev.com/sc/change/94227/29 Updates of way of making records into log. Added ability to look the name of the thread which made a record. Option in config – LoggingThread. You can also turn on output in the server application using “Logging with thread”. Changed format of time output. Now it is not “time in ms”, but “hours:minutes:seconds:milliseconds”. Rev.28 http://www2.xp-dev.com/sc/change/94227/28 Fix and formatting. Rev.27 http://www2.xp-dev.com/sc/change/94227/27 Fixed mistakes in calculating karma in quest "Returning of the fugitive". Rev.26 http://www2.xp-dev.com/sc/change/94227/26 Changes on Church of Brok and Xander location: - fixed Preacher, Scientist, repairer Alechandro, Cook, Mickey dialogs; - quests work correctly now; - repairer Alechandro identifies items correctly; - ability to record the information about Church was added (after completing Preacher's quest). Rev.25 http://www2.xp-dev.com/sc/change/94227/25 Activating time of dynamite was fixed. Rev.24 http://www2.xp-dev.com/sc/change/94227/24 New algorithm of generating of pseudorandom variables was added (Mersenne twister). Previously was standart C algorythm srand/rand. Rev.23 http://www2.xp-dev.com/sc/change/94227/23 Energy barrier on the entrance of GECK town was improved. Rev.22 http://www2.xp-dev.com/sc/change/94227/22 Fixed client crashing on start. For preventing this bug in future the control system of versions of cashed scripts in the client has been added. Rev.21 http://www2.xp-dev.com/sc/change/94227/21 Fixed problem when it was impossible to add players to GECK town after removing them with option "Clear list". Rev.20 http://www2.xp-dev.com/sc/change/94227/20 Fixed cooldown of the Postman quest. Rev.19 http://www2.xp-dev.com/sc/change/94227/19 Wrongly deleted dialogs are returned. Rev.18 http://www2.xp-dev.com/sc/change/94227/18 Fixes Deleted not used files. Fixed errors when player removes child killer karma additional times. Fixed error with incorrect name of script of map_v15_village map. Added output of message of increasing trade skill when finishing “Farm vermins” quest to the log. Weakened the giant wasp in the quest in Modoc. Rev.17 http://www2.xp-dev.com/sc/change/94227/17 AngelScript was updated to rev.684, v. 2.19.2 Added global variables to the client: bool __ShowTile, __ShowRoof, __ShowItem, __ShowScen, __ShowWall, __ShowCrit, __ShowFast, __ShowPlayerNames, __ShowNpcNames, __ShowCritId. Deleted limit of min. time of using Map::SetLoopTime (it was 1 second). Fixed registration of the global variables of string type (pragma globalvar). Fixed using reserved global variables string type. Added global variables to mapper: string __ClientPath, __ServerPath. Deleted constant modificators in client from string CritterlCl::Name, CritterlCl::Lexems. Added variable CritterlCl::NameOnHead, which if is not empty, outputted above critter’s head. Rev.16 http://www2.xp-dev.com/sc/change/94227/16 Fixed reclearing of child killer status. Rev.15 http://www2.xp-dev.com/sc/change/94227/15 Fixes: - Fixed names of Giant Wasps and bugs in kills statistic; - Reduced requirements of amount of killed mobs and intelligence in Broken Hills quests (bh_marcus.fodlg, bh_super.fodlg); - Reduced requirement of intelligence for “Fresh blood” quest (vc_doctor_troy.foldg); - Fixed possibility of gaining experience multiple times in “Cabbage” quest in Modoc (mod_farmer_q.fodlg); - Player receives reputation in NCR for quest “True cowboy” even if only one Brahmin is brought (ncr_felix.fodlg); - Michael’s miniquest in NCR can be done by every player only once (ncr_michael.fodlg); - Added requirement of 16 level for “buggy” quest (ncr_ratch.fodlg); - Fixed amount of gaining experience when player rejects gratuity in “Postman” quest (q_mail_reciever.fodlg); - Fixed cooldown of “Postman” quest; - Cave mobs – spawn point near the exit grid was removed in the smallest cave; - Fixes of several dialogues in Vault City; - New quest – “Fugitive returning” – when finished, status “Child killer” is removed. Hubbologist in Redding bank offers this quest; - New quest “Farm vermines”. It is offered by Joe in Modoc (mod_joe.fodlg); - Fixed energy barrier in GECK town; - Added computer for breaking of energy barrier inside the town; - Added car lots for GECK town citizens (not more than 2); - Added ability of clearing of citizens list by town leader using the terminal. Rev.14 http://www2.xp-dev.com/sc/change/94227/14 Update for Notepad++ (Syntax_highlighting, autocomplete, function parameters hints) Rev.13 http://www2.xp-dev.com/sc/change/94227/13 First stable version.h3. Your title here...

SidleJinks picture

Description: Rev.187 http://www2.xp-dev.com/sc/change/94227/187 Some actions were performed to fix server's hanging up. Rev.186 http://www2.xp-dev.com/sc/change/94227/186 Some actions were performed to fix server's hanging up. Not adding function's name to log was fixed. Levelcap was removed in the scripts. Rev.185 http://www2.xp-dev.com/sc/change/94227/185 NO_LOOT and NO_DROP mode were switched off for the giant bugs. Rev.184 http://www2.xp-dev.com/sc/change/94227/184 In connection with porting the server (*nix and 64bit) the next changes were made: Operating with net was rebuilded. Libevent library is used. http://monkey.org/~provos/libevent/ http://en.wikipedia.org/wiki/Libevent http://ru.wikipedia.org/wiki/Libevent Operating with GUI was remade. FLTK library is used. http://fltk.org/ http://en.wikipedia.org/wiki/FLTK http://ru.wikipedia.org/wiki/FLTK Operating with threads was remade. Pthreads is used http://sources.redhat.com/pthreads-win32/ (Windows port) http://en.wikipedia.org/wiki/Pthreads http://ru.wikipedia.org/wiki/Pthreads Changes are serious and can cause unstable work. Memory leak when loading maps was fixed in server. Loading maps with items in containers/inventories in mapper was fixed. Don’t use mapper of 171-182 revisions for editing old maps. Now parameters values for critters in mapper are applies only if they are not equal to zero. Initially value is taken from defaults (from .fopro), then from the map’s data if !=0. Critter’s names in mapper are now taken only by prototype number without accounting dialogue’s number. Old specification of Log function which was changed in 174 revision was returned to native scripts. Server’s GUI now ‘Courier New’ type, option in config was deleted. Option for changing server’s window size and its elements was added GUI size modifier GUISize=0 E.g. if GUISize=-50 then server’s window and all its elements will be 50% smaller, if GUISize=30 then 30% larger. Log in server window is unrolled as defaults. Also, the information from the log can be copied and scrolling is stopped if it is focused. Client’s crashing when playing items animation was fixed. Paths make_tla.bat were converted to Visual Studio 2008 (9.0). Rev.183 http://www2.xp-dev.com/sc/change/94227/183 Lo Pan’s mercenaries call leader’s name correctly now. Nancy and Sid’s quest location now is deleted after leaving it (previously it wasn’t deleted and hanged in the memory). SF docs were excluded from NoPvP locations. Letters generation in Postman quest was fixed. Holodisk with combat robot’s video recordings can be given to Buster now. Shaneman’s documents now have description in “Diplomatic mission” quest. A dialogue between bar clients in outer Vault City was added (wipe is required). Mini quest “Seduce art” was added in Klamath (wipe is required). Rev.182 http://www2.xp-dev.com/sc/change/94227/182 NPC-travellers will no longer take dead characters to the global map. Atoll was removed from Eli’s destinations. Skill displaying when increasing it through the dialogue was fixed. The mistakes in the newcomer’s dialogues in “Anger” quest were fixed. The mistake in mercenaries script which caused the leaving the employer earlier was fixed. Rev.181 http://www2.xp-dev.com/sc/change/94227/181 Reading nicknames from ignor list file was fixed. Console command for adding a player to the ignor list was added ~ignore PlayerName. Rev.180 http://www2.xp-dev.com/sc/change/94227/180 Mechanism of reputation calculation was switched off due to its incorrect work. Now all the list will be visible, but will work correctly. Rev.179 http://www2.xp-dev.com/sc/change/94227/179 Network protocol bug which caused short hangs up was fixed. Client's script was fixed which could cause null parameter call. Rev.178 http://www2.xp-dev.com/sc/change/94227/178 Superfluous rifles on offer were fixed. Rev.177 http://www2.xp-dev.com/sc/change/94227/177 Game version increment. Rev.176 http://www2.xp-dev.com/sc/change/94227/176 Sequence of handlers calling was fixed MAP_EVENT_OUT_CRITTER, MAP_EVENT_IN_CRITTER now the first one is called initially, then the second On intro_init map static lighting was set. Group moving indication on the global map was fixed (previous update bug). Rev.175 http://www2.xp-dev.com/sc/change/94227/175 Console command ~globalmap was added. It moves player to global map. It works only on noPvP maps for players not in combat mode and with noPvP mode turned on. In caravans and travellers scripts functions of moving to final destination's map were updated. Rev.174 http://www2.xp-dev.com/sc/change/94227/174 Porting game to Linux was started. Also supporting of 64 bit platforms. Client’s native libraries are now transmitted automatically. They are stored in ‘Client/data/cache’. Folder with scripts ‘Client/data/scripts’ is not used anymore and was deleted. To the server’s folder library STLPort (http://www.stlport.org/) was added. Client’s libraries are now compiling with it’s help. It is connected with porting to other platforms. Additional methods of moving were added to critters in server scripts bool Critter::TransitToMap(uint mapId, uint16 hexX, uint16 hexY, uint8 dir, bool withGroup) bool Critter::TransitToMap(uint mapId, int entireNum, bool withGroup) bool withGroup – when moving from global map to local map, all the group will be moved. Regular TransitToMap (without bool withGroup) work as with withGroup == false. Previously they worked as как withGroup == true, what led to moving all the group when replicating, if dead critter was on the global map. 3d critters were switched off. For switching on see PLAYERS_3D in _defines.fos. Constants for operating with game constants were added(see 168 revision, http://www2.xp-dev.com/sc/change/94227/168). Specification for the reserved function Log in native scripts was changed. Now the first returned parameter is function’s name from which it was called. Rev.173 http://www2.xp-dev.com/sc/change/94227/173 Traders were added to Atoll and Redding. Barterground was moved to position 690:760 as it isn’t needed anymore in north-west region due to noPvP mode. Locations “BiX Church” and “Atom’s Church” were moved to special encounters class. Fixed rewards in some quests. Maps fixes. Biscuit on Modoc can be received only once now (as in Fallout 2). Rev.172 http://www2.xp-dev.com/sc/change/94227/172 noPvP mode was activated on some TLA maps. It will be used on the next TLA session. For switching it off on your server set global variable __NoPvpMaps=false; in script config.fos Ability of making a list of ignored players, it works similarly NameColorizing. It needs manual adding nickname of ignored player to IgnoreList.txt For refreshing the list of ignored players in game use console command ~ignorelist. Rev.171 http://www2.xp-dev.com/sc/change/94227/171 Derivative objects system for mapper was updated. When placing base object, all his derivatives are placed automatically. If one object from the group is being selected - all others are being selected too. If the prototype or position of the derivative object is changed, changes will be automatically applied by mapper or server when loading. For the example see cars, at the present time they have one derivative object – their trunk. Now when placing the car, it will be created automatically, also it will be moved with it and if base or derivative object is deleted, all the group will be deleted too. The system of moving selected objects in mapper was upgraded. Now in hexagonal system the selected objects will be moved without being tearing apart. Also the selected objects, when being moved, will stop at the map’s edge, so they won’t mix into a pile. The problem with detecting whether items in container belong to their inventory or container. Previously items were placing on the hex and if you place two containers on the same hex, all the items will stack in one container. Now it is fixed. Item::TrapValue initialization through mapper was fixed. If rewriting is performed on prototypes loading, alert is displayed. It was added for items and critters prototypes. In object’s structure in mapper was deleted field const bool Item_InContainer and added const uint UID, ContainerUID, ParentUID, ParentChildIndex Rev.170 http://www2.xp-dev.com/sc/change/94227/170 Now server doesn't block client's libraries while working. Previously you needed to stop the server to replace client's dll (Server/scripts/fonline_tla_client.dll). Rev.169 http://www2.xp-dev.com/sc/change/94227/169 Combined content of MASTER.DAT + CRITTER.DAT. Size - 201 MB! Rev.168 http://www2.xp-dev.com/sc/change/94227/168 Client and Mapper are no longer bounded with Fallout’s data files - MASTER.DAT and CRITTER.DAT. These files content is combined (excess data is deleted) and packed into fallout.dat (will be uploaded with the next update) and defined in DataFiles.cfg. Global variables string __MasterPath, __CritterPath were deleted. The configurator (FOConfig.exe) is updated accordingly fixes above. Critter’s lighting in the death moment and flat items lighting was fixed. To server/client/mapper scripts the next functions for operating with the constants (*Names.lst) were added: int GetConstantValue(int constCollection, string@+ name) – identifying constant’s value by the name; string@ GetConstantName(int constCollection, int value) - identifying constant’s name by the value; void AddConstant(int constCollection, string@+ name, int value) – adding separate constant to the collection; bool LoadConstants(int constCollection, string@+ fileName, int pathType) – loading/reloading the collection; int constCollection – collection’s number, see Constants collections in _defines.fos, also you can define your own collections; string@+ name – constant’s name; int value - constant’s value; string@+ fileName, int pathType – collection file’s name and folder path. Rev.167 http://www2.xp-dev.com/sc/change/94227/167 Bug with error of name/password in login menu if it exceeds 12 symbols was fixed. Screen centering on the player when loading map in right-angle geometry was fixed. Copying objects in Mapper from smaller map to the bigger one was fixed. Mapper hanging up when Sleep < 0 was fixed. Crashes when loading ART files were fixed. Principe of transparency defining with parameter ‘”t” was changed, now it isn’t equal to 255 – paletteIndex, but to max(R, G, B). Rev.166 http://www2.xp-dev.com/sc/change/94227/166 System of operating with items prototypes was updated (ProtoItem). Ability to add your own fields to proto class was added. New pragma ‘bindfield’ is used for this, e.g.: #pragma bindfield "const int ProtoItem::MyValue -> 400" it means creation of field MyValue of int type with offset 400 (considering thas int is 4 byte, it will occupy bytes 400, 401, 402, 403). Totally for user’s fields 500 bytes are available. Field is equal to zero as defaults, but it is possible to change the value by defining value (in the current case MyValue=111 or MyValue=SkillBigGuns) in proto file (.fopro), number (if it contains only numbers) or path to the file (it is identified by the presence of ‘/’ or ‘\’ symbols). For now fields which are not used by the engine are taken out to scripts, see _defines.fos Item prototypes fields. Changes in structure ProtoItem. All next methods are deleted uint8 GetType() const uint16 GetProtoId() const bool IsGrouped() const bool IsWeared() const bool Container_IsGroundLevel() const List of new fields which are registered in the engine (part of them is renamed, some were deleted) http://pastebin.com/8R4QkP3h The other fields are registered with #pragma bindfield in _defines.fos. Now all items can stack and wear out, for this Boolean fields are added to the prototypes bool ProtoItem::IsStackable bool ProtoItem::IsDeteriorable Item type ITEM_MISC_EX was deleted, it is combined with ITEM_MISC (miscex.fopro is deleted). Vehicles are taken out to separate type ITEM_CAR (car.fopro was added). Also now user can define any type numbers for the items. Former fields uint MiscEx_StartVal0..9 of the start values for Item::Val0..9 were moved to common area named StartValue0..9, and with these values Item::Val0..9 are initialized. Metod bool Item::IsCar() const was deleted, instead of it use GetType()==ITEM_CAR. The next methods are renamed bool Item::IsGrouped() const -> bool Item::IsStackable() const bool Item::IsWeared() const -> bool Item::IsDeteriorable() const The next fields are renamed uint16 Item/ItemCl::BrokenWear -> Item/ItemCl::Deterioration uint16 Item/ItemCl::CarDeteoration -> Item/ItemCl::CarDeterioration uint8 MapperObject::Item_DeteorationFlags -> uint8 MapperObject::Item_BrokenFlags uint8 MapperObject::Item_DeteorationCount -> uint8 MapperObject::Item_BrokenCount uint16 MapperObject::Item_DeteorationValue -> uint16 MapperObject::Item_Deterioration Mechanism of affiliated objects was moved for common use. Previously it was available only for vehicle’s trunk. One object can have up to five derivatives. Numbers of the derivative objects are defined in uint16 ProtoItem::ChildPid_0..4. By creation of base object, derivatives are created automatically. For now Mapper doesn’t create affiliated obkects automatically, but it will be fixed in further. For setting the place of situation, special field ChildLines_0..4 is used (former MiscEx.Car.Bag_0..1, see below by recording format). Also it is possible now to define automatic blocking for any objects, not only for vehicles – field BlockLines (former MiscEx.Car.Blockers). Recording format for Child/BlockLines – XYXYXY..., where X is direction number (0..5/7), Y is the amount of steps (1..9) in this direction (previously for vehicle’s trunk for another recording format - XXXX...). Maximum amount of steps for BlockLines – 50, for ChildLines – 6. For operating with derivative objects use methods Item@+ Item::GetChild(uint childIndex) const (бывшая Item@+ Item::CarGetBag(int numBag)) bool Map::CheckPlaceForItem(uint16 hexX, uint16 hexY, uint16 pid) const (bool Map::CheckPlaceForCar(uint16 hexX, uint16 hexY, uint16 pid) const) Fields renaming affected lots of scripts, be attentive. Old proto format is converted to the new one automatically, but Object Editor (ObjectEditor.exe) still operates only with old format. It will be fixed soon. To replication.fos and entires.fos scripts the influence of right-angled geometry was added. Script main_planes.fos is formatted as a separate module. All pragmas were move to the end of _defines.fos. Drop of FPS when switching on view/attack borders was fixed. Rev.165 http://www2.xp-dev.com/sc/change/94227/165 Fix for the ASCompiler. Rev.164 http://www2.xp-dev.com/sc/change/94227/164 Changed ASCompiler output format to “filename(linenumber) : message”. Such output is recognized by a number of IDEs and allow jumping to the code by a double-click on the output line. Rev.163 http://www2.xp-dev.com/sc/change/94227/163 Tabs management system was added to Mapper. Now one tab can have numerous subtabs. Tabs names and its filling is defined in mappers scripts. But some tabs already have initial filling. Item – items prototypes by defaults (items.lst); Tile – tiles by default, search is performed in ‘art/tiles/’; Crit – critters prototypes by defaults (critters.lst); Fast – displays often used objects, initial state is defined in scripts (InitializeTabs in mapper_main.fos); Ign – Ignore, shows ignored objects which are not shown on the map; Inv, Msg, Map – special tabs which have nothing to do with the mechanism, but it is possible to change its name throug TabSetName (see below). The tab can have subtabs only of one type – tiles, critters or items (displayed in priority order). For items and critters the subtab’s name is chosen by user, for the tiles it is performed automatically. The lowest subtab “all” contains all prototypes (or tiles) on a list above. For activation the menu of tab choosing – perform a double click on it. If positions are numerous then use mouse wheel for navigation (scroll speed: normal – 4, with pressed shift – 8, with pressed ctrl – 20, with pressed alt – 50). For tabs management use scripts, functions Tab* uint TabGetTileDirs(int tab, string@[]+ dirNames, bool[]+ includeSubdirs) uint TabGetItemPids(int tab, string@+ subTab, uint16[]@+ itemPids) uint TabGetCritterPids(int tab, string@+ subTab, uint16[]@+ critterPids) void TabSetTileDirs(int tab, string@[]+ dirNames, bool[]+ includeSubdirs) void TabSetItemPids(int tab, string@+ subTab, uint16[]@+ itemPids) void TabSetCritterPids(int tab, string@+ subTab, uint16[]@+ critterPids) void TabDelete(int tab) void TabSelect(int tab, string@+ subTab) void TabSetName(int tab, string@+ tabName) int tab – tab’s number (see Tabs in _mapper_defines.fos); string@[]@+ dirNames – folder’s names for tiles searching; bool[]@+ includeSubdirs – turn on search in subfolders; string@+ subTab – subtab’s name; uint16[]@+ itemPids – item’s prototype numbers array; uint16[]@+ critterPids - critters’s prototype numbers array; string@+ subName – tab’s name. Global variable was added bool __SplitTilesCollection = true It defines whether tiles should be divided into groups in the folders. The group is defined as a string in the file’s name before the first number (e.g. abc12.png - group abc), if the number is absent, then group is defined as '<other>'. In connection with these changes, the global functions are deleted uint GetFastPrototypes(uint16[]@+ pids) void SetFastPrototypes(uint16[]@+ pids) Other updates. Fixed incorrect work of server/client which caused some bugs. Global variable int __GeometryType was added to _defines.fos for the indication of chosen geometry. See constants in _defines.fos Geometry. Depending on its value, tab with Tactics and Arcanum is added. Ability to work with file names which include spaces is added. When loading ART files, it is possible to flip them vertical or horizontal. Parameters in the file name - ‘v’/‘V’ and ‘h’/‘H’. When loading SPR file, if you define in changing color parameter – layer’s number -1, then the modificator will be applied to all four layers. Rev.162 http://www2.xp-dev.com/sc/change/94227/162 Quest perks “Midnight Child”, “Nosderatu Blood” were added (Modoc, “Night’s tender”). Now new home position is set for NPC-travelers (Devin, Eli) when they enter new location. Female characters now can finish quest of removing childkiller status. Allies HP and resistances were increased in “Dangerous hunt” quest. Also a simple dialogue is added to them. The forged letter is now removed from the inventory when finishing quest “Forgery”. Edvin in Klamath tells with a popup phrase when starting gathering items. A delay was added to the prisoner giving the cues in “Ernst Telman” quest. Ability of intimidating the NPC visitor if it’s a woman was deleted in quest “Wrath”. Barcus now reacts with popup phrases to the futher meetings with the player who have done quest “Amnesty for Joshua”. Upon the receiving lieutenant rank of Vaultcity’s Guard, player is awarded with a black combat armor. In “Diplomatic Courier” quest time (24 hours) which Sheiman takes for the thoughts now is calculated correctly. Upon finishing this quest, player receives +1 reputation in NCR. Sell price of the buggy which player receives upon finishing the quest in NCR was set to zero. Dialogue launch when player uses an antidote in quest “Poisoned Regulator” in Redding was fixed. Players who gained Vaultcity citizenship now can trade with Randal with no restrictions. Reputation calculation in quests “Real Cowboy”, “Hub Bibliography” in NCR was fixed. If player refuses the reward in “Hub Bibliography” quest, he gains +2 reputation (was +1) when he delivers 5 books. Increasing raider’s resistances and skills every new attack on NCR was switched off. Ability of crafting and buying chitin armor was added. Giant beetles drop chitin. Items with ITEM_GAG flag deletion upon player’s death was fixed. Rev.161 http://www2.xp-dev.com/sc/change/94227/161 Ability to customize game geometry was added, either the support of isometric projection with quadrangles was. For customization use global variables bool __MapHexagonal – isometry type: true - hexagonal, false - quadrangular; int __MapHexWidth – hex width; int __MapHexHeight – hex height; int __MapHexLineHeight – hex line height; int __MapTileOffsX/Y – ground tiles offset; int __MapRoofOffsX/Y – roof tiles offset; int __MapRoofSkipSize – amount of hex per one roof tile (necessary for its correct hiding); float __MapCameraAngle – 3d model rendering angle; bool __MapSmoothPath – path smoothing when moving; string __MapDataPrefix – path and prefix for the geometry files. Operational sprites for geometry are situated in art/geometry/. Quadrangular isometry use 8 directions, hexagonal – 6. In script config.fos in function InitializeGeometry(), necessary adjustments for 3 games (Fallout1/2, Fallout Tactics and Arcanum) are added. This function can be called in server, client and mapper scripts, as all three of them need geometry information. Global variables uint __LookDir4, uint __LookSneakDir4 were added for 8-directional geometry. Fixed Tactics SPR files loading. Mode MODE_NO_TALK was added. It affects ability to talk and appearance of the icon in the context menu. Double click on hex, affecting avatar’s moving, was fixed. Creation of descriptions for critters prototypes (FODLG.MSG) with high identifiers was fixed. Image of elephant gun was added in 3d. Rev.160 http://www2.xp-dev.com/sc/change/94227/160 Fixed a bug with server and client communication. Fixed a bug with wrong sprites display. Rev.159 http://www2.xp-dev.com/sc/change/94227/159 Documentation's update, mistakes fixes. Rev.158 http://www2.xp-dev.com/sc/change/94227/158 Script start_server_client.fos was renamed to config.fos and now it isn't simply pasted into function start(), but presented as a separate module with function InitializeGame(). Macros for operating with time were moved from _macros.fos to separate module _time.fos. Slight fix of drugs.fos. Rev.157 http://www2.xp-dev.com/sc/change/94227/157 Errors messages in server log when operating with functions GetPlayerName/GetPlayerId were removed. Also GetPlayerName returns null now, if the player wasn't found. Bugs of reputation calculation were fixed. Rev.156 http://www2.xp-dev.com/sc/change/94227/156 Ability to affect the colors when loading Tactics sprites was added. To make color shift, define necessary values in file name’s parameters (“$”). Format: fileName$[index,r,g,b]animName.spr (can be any amount of shifts […]) where index – body part’s number (0 - miscellaneous, 1 - skin, 2 -hair, 3 - armor); r,g,b – color shift for the each component, can be negative Example: someSprite$[2,50,-30,-20]anim1.spr – load sprite someSprite.spr, with animation anim1 and hair’s color shift in RGB (50,-30,-20). Additional flags for operating with color’s shift were added for Tactics critters (_animation.fos, animation.fos). Use macros ANIM1_COLOR_SKIN(index), ANIM1_COLOR_HAIR(index), ANIM1_COLOR_ARMOR(index) for values defining. Index can take on value from 0 to 15, appropriate to it values of color shift look in array colorOffsets of animation.fos script. For ability testing you can use text function void ColorOffset(Critter& cr, int skin, int hair, int armor) in test.fos. Rev.155 Some native structures were fixed. Rev.154 http://www2.xp-dev.com/sc/change/94227/154 AngleScript is updated to revision 822. Ability of sorting is added to scripts arrays Ascending sort void array::sortAsc() void array::sortAsc(uint index, uint count) Descending sort void array::sortDesc() void array::sortDesc(uint index, uint count) For user’s classes sorting realize opCmp method http://www.angelcode.com/angelscript/sdk/docs/manual/doc_script_class_ops.html Vehicle animations on the global map and item’s animations in Mapper are fixed. Some points in operating with critter’s animations are fixed (animation.fos). Global variable __GmapActive is fixed. Global variable for setting min. offline time after that client will completely exit from the game was added. uint __MinimumOfflineTime = 180000; // 3 minutes Rev.153 http://www2.xp-dev.com/sc/change/94227/153 Additional constants for operating with Chosen's actions were updated (Get/SetChosenActions, for CHOSEN_USE_ITEM). Rev.152 http://www2.xp-dev.com/sc/change/94227/152 Additional constants for operating with Chosen's actions were added (Get/SetChosenActions). Rev.151 http://www2.xp-dev.com/sc/change/94227/151 Bugs with incorrect files's names path detecting were fixed. Rev.150 http://www2.xp-dev.com/sc/change/94227/150 3d models loading was fixed. 3d models rendering to sprites was fixed. Critters animations were fixed (death in 2d and 3d modes). Shift calculation for some models was fixed. SAY_DIALOG/SAY_APPEND mechanics was fixed. (by Atom) Server’s config loading in Mapper was fixed. (by Atom) File HashNames.lst was added to client. Names of files which contain parameters (‘$params’) should be entered in it. If you use such names in the prototypes, Mapper or scripts GetStrHash), then include this name to this list. Format of writing: [any number] [file’s name] [end of string] E.g. 0 art\scenery\BrazureFire$t.ART 0 art\scenery\BrazureFire$t3.ART In further it is possible to detect and transmit such names automatically, but for the present use this system. Roof disappearing if it is situated in odd hex in two axis. Rev.149 http://www2.xp-dev.com/sc/change/94227/149 Documentation was updated. Some fixes in Arroyo (Minoc’s quest about raiders). Usage mode was added for sledgehammer and supersledge (for resources mining). Guard lib was brought into common standard of scripts formatting. Rev.148 http://www2.xp-dev.com/sc/change/94227/148 Two reserved variables were added to HLSL effects float AnimPosProc – current animation’s per cent 0%..100%, [0,1); float AnimPosTime – current animation’s time in seconds. Client’s hanging under certain circumstances was fixed (e.g. receiving item’s data when player in process of moving between maps). Dump generation when closing server application without stopping was switched off. Generation of unnecessary messages to log in function animation_ animation.fos was fixed. Rev.147 http://www2.xp-dev.com/sc/change/94227/147 Parameters for critter’s movement controlling were added. Time for moving in milliseconds: #define ST_WALK_TIME (117) #define ST_RUN_TIME (118) Ability to move #define MODE_NO_WALK (539) #define MODE_NO_RUN (540) If these parameters are equal to zero, then data is taken from CritterTypes.cfg. Loading of some ART files was fixed (Arcanum). Ability of specifying special image processing was added. Palette elements will be transparent depending on its index in the palette (alpha = 255 – index). To chose this loading type - use symbol “t” (or “T”) in file name parameters. E.g. ‘filename$t.art’; also you can combine with palette, e.g. ‘filename$1t.art’. Ignoring of spec.symbol “/r” was additionally added for splitEx function. In functions void DrawSprite(... bool applyOffsets) if applyOffsets == true there were additionally added shifting of width/2 and height of the image. Unnecessary fo3d files were deleted. Palette influence for Arcanum critters was fixed. Rev.146 http://www2.xp-dev.com/sc/change/94227/146 One more fix of incorrect critter displaying. Rev.145 http://www2.xp-dev.com/sc/change/94227/145 Quest “Communicated” was added (Redding). Caravaneers phrases were fixed, now they tell correct departure dates. Quest “Honomer’s bodyguard” was added (San Francisco). Retina scanner in GECK town was fixed. Slight fixes of the hubbolog’s map in San Francisco. Special result function for skill rise calculation through a dialogue was added.(dialog@r_SkillUp) The script for quest locations creating was fixed (hostile_location_quest.fos), allies and enemies scripts now work correctly. Resetting of a quest variable when deleting the location was fixed. Script for realization a dialogue between several npc’s with popping up phrases was added. (npc_dialog.fos) Story line implementation was continued. Maps numeration in the location with mutants was fixed (quest string “Guardian”). Rev.144 http://www2.xp-dev.com/sc/change/94227/144 Critter’s hitpoints regeneration was moved to scripts, you can look realization in function critter_idle main.fos. Global function for critters sampling from the global map was added to server scripts. uint GetGlobalMapCritters(uint16 worldX, uint16 worldY, uint radius, int findType, Critter@[]@+ critters) Additionally to methods bool Map::GetNearEntireCoords(int& entire, uint16& hexX, uint16& hexY) const bool Map::GetEntireCoords(int entire, uint skip, uint16& hexX, uint16& hexY) const were added methods bool Map::GetNearEntireCoords(int& entire, uint16& hexX, uint16& hexY, uint8& dir) const bool Map::GetEntireCoords(int entire, uint skip, uint16& hexX, uint16& hexY, uint8& dir) const which return direction. Global variable which specifies if the password in the client’s login window should be hidden was added bool __HidePassword = true Incorrect critters creation in Mapper was fixed. Displaying of switching critter’s type 3d->2d on the client’s side was fixed. Rev.143 http://www2.xp-dev.com/sc/change/94227/143 Fixed critters loading in Mapper (141 revision's bug). Rev.142 http://www2.xp-dev.com/sc/change/94227/142 Fixed server loading (the previous revision bug). Rev.141 http://www2.xp-dev.com/sc/change/94227/141 Mechanism for identifying critter’s animation file name was added. Now you can operate with critter’s animations from Tactics and Arcanum without any conversions. All data files which you need for enabling one or another critters are cited in CritterTypes.cfg comments. The next critters were added to SDK: Humanoid, Behemoth, MTT, Pacification. They are repacked to the separate archive ftrobots.bos. But all available critters from Tactics and Arcanum are added to CritterTypes.cfg with correctly defined parameters for them (by Tabloid), so you can enable the needed data files and use the critters. All animations are transformed to the general appearance (ANIM2_2D*, ANIM2_3D* -> ANIM2*). The functional for operating with them is moved to scripts. In some places where these values are used, numeric literals are replaced by string constants, which description you can find in DefineNames.lst. Fixes were made in weapons prototypes (weapons.fopro) and fo3d templates for 3d critters from VanBuren (_VBHuman.fo3d, _VBMob.fo3d, _VBWeapon.fo3d). Now three sets of primary and secondary animations are used for critters, for three condition types – alive, knockout, dead const uint Critter/CritterCl::Anim1/2Life/Knockout/Dead (const uint Critter/CritterCl::Anim1/2 were deleted). These values are used for animations as default. Pay attention that Anim1 additionally is summed up with animation of the weapon in the active slot, bit-by-bit OR. It is necessary for assignation certain values on continuing basis (e.g. sitting, lying position). For changing these values the next method is used void Critter::SetAnims(int cond, uint anim1, uint anim2) int cond – defines the position to apply values to (COND_* in _defines.fos), if null it is applied to all three; uint anim1, anim2 – animation values. Deleted const uint8 Critter/CritterCl::CondExt Accordingly all COND_*_* for them are deleted. Now position is differentiated by the animations. In connection with it, the next methods specifications were changed void ToDead(uint anim2, Critter@+ killer) bool ToKnockout(uint anim2begin, uint anim2idle, uint anim2end, uint lostAp, uint16 knockHx, uint16 knockHy) void EventKnockout(uint anim2begin, uint anim2idle, uint anim2end, uint lostAp, uint knockDist) void EventSmthKnockout(Critter& fromCr, uint anim2begin, uint anim2idle, uint anim2end, uint lostAp, uint knockDist) uint anim2begin, anim2idle, anim2end – animations of the knockout begging, staying in it and coming to yourself. Standard macroses are defined for the transfer KNOCKOUT_ANIM2_DEFAULT, KNOCKOUT_ANIM2_STUNNED (in _animation.fos). Also Mapper operates now not with CondExt, but with Anim1/Anim2 for the current Cond. Global variables for client/mapper for defining combat mode animations were added uint __Anim2CombatBegin = ANIM2_BEGIN_COMBAT uint __Anim2CombatIdle = ANIM2_IDLE_COMBAT uint __Anim2CombatEnd = ANIM2_END_COMBAT The next reserved client/mapper functions were added (animation.fos): - string@ critter_animation(int animType, uint crType, uint anim1, uint anim2, uint& pass, uint& flags, int& ox, int& oy) Function which is called when loading necessary animation. Returned value - file’s path and name. int animType – critter’s animation type (new parameter which is set in CritterTypes.cfg); uint crType – critter’s type; uint anim1, anim2 – animation’s indexes; uint& pass – function call’s number, is changed by the user. If animation loading failed and this parameter was changed, then function will be recalled (in certain cases you should try to load different files for the one animation); uint& flags – flags, at the present moment two of them – to take the first or the last frame from the animation ( Anim loading flags in _animation.fos); int& ox, &oy – shifts for the animation, in pixels. - bool critter_animation_substitute(int animType, uint crTypeBase, uint anim1Base, uint anim2Base, uint& crType, uint& anim1, uint& anim2) If animation loading failed (and uint& pass wasn’t changed), then this function is called for animation substitute detection (e.g. left hook can be replaced by the right hook). true is returned if the substitute was found (engine also additionally checks if crType, anim1, anim2 were really changed), false – no substitute, animation won’t be loaded and played. int animType – see above; uint crTypeBase, anim1Base, anim2Base – base critter’s and animation’s type, which were at the start; uint& crType, &anim1, &anim2 - critter’s and the current animation’s type for the substitution - bool critter_animation_fallout(uint crType, uint& anim1, uint& anim2, uint& anim1ex, uint& anim2ex, uint& flags) As Fallout’s animations are still loaded by the engine (additional shifts calculation and animations pasting together is needed), for determining animations conformity this function is called, i.e. instead of critter_animation for fallout’s animations this function is called. true is returned if animation is presented, false – not. Method bool Critter::IsAnim3d() const is deleted, use instead of it the global function int GetCritterAnimType(uint crType) values look in Anim types _animation.fos. Critters actions sounds now are played in the scripts, in animation_2d/3d_process. New mechanism for sound file name identification was made, look PlayAnimSound in animation.fos. Critters prototypes were divided into fallout’s (fallout2.fopro) and TLA's (tla.fopro). Bug with roof’s non-transparency in Mapper was fixed. Name indication of chosen critter or tile prototype in mapper was added. Format fo3d now recognizes named constants DefineNames.fos, namely for modificators Mesh, Subset, Layer, Value, DisableLayer, DisableSubset, Texture, EffDef (для Dword), Anim, AnimSpeed, AnimEqual. Global server variable for determining call frequency was added GLOBAL_PROCESS_MOVE uint __EncounterTime = 5000 Global client variable for determining frequency of foolish trick animation call was added uint __CritterFidgetTime = 50000 is deleted using formula Random(__CritterFidgetTime, __CritterFidgetTime * 2) Item prototype’s parameter was deleted bool ProtoItem::Weapon_RequiresActivation now if animation doesn’t exist, it is just not played. Parameters uint16 MapperObject::Scenery_ToMapX/Y were deleted, in mapper also. Moving between locations is performed by entery points. In weapons prototypes types of action animations were substituted from numeric by string constants (accordance look in DefineNames.lst). Appropriate changes were performed in ObjectEditor. Client functions PlaySound andPlayMusic now return bool, signalizing if file was found or not. Global functions for server/client/mapper which return appropriate values from CritterTypes.fos were added uint GetCritterAlias(uint crType) string@ GetCritterTypeName(uint crType) string@ GetCritterSoundName(uint crType) Mapper’s scripts were moved to server’s scripts folder. Also the whole set of functions for operating with CritterTypes.fos was added to Mapper bool IsCritterCanWalk(uint crType) bool IsCritterCanRun(uint crType) bool IsCritterCanRotate(uint crType) bool IsCritterCanAim(uint crType) bool IsCritterAnim1(uint crType, uint anim1) int GetCritterAnimType(uint crType) uint GetCritterAlias(uint crType) string@ GetCritterTypeName(uint crType) string@ GetCritterSoundName(uint crType) Specifications of client’s reserved functions were changed animation2d_process, animation3d_process parameter bool animateStay was added to the beginning. It indicates if any action is performed now (false) or stand animation (true). Reaction for global map’s interface buttons pressing when the size of map’s area (GmapMap) covers the buttons area was fixed. Bug with incorrect loading/saving maps in which script’s or function’s name consists of spaces was fixed. Bug with potential server crashing when using AI_PLANE_MISC was fixed. Rev.140 http://www2.xp-dev.com/sc/change/94227/140 Some robots from Fallout Tactics (look the next revision). Rev.139 http://www2.xp-dev.com/sc/change/94227/139 The next quests were added in San Francisco: “Introduction into Hubbology”, “Hub’s justice”. Transport to Atoll is available for the players who are doing “Introduction into Hubbology” quest (npc is in the docs area of San Fracisco); Automatic transfer to the command center of GECK city citizens when entering the map was removed. Now citizens can choose spawn point. Quest location “Hubbologists laboratory” was added (author JunoReactor). Rev.138 http://www2.xp-dev.com/sc/change/94227/138 Arroyo: Quest “Evidence of Chosen’s death” was added (Todd Stewart); Two courier quests were added (Cassidy, Todd Stewart); Encounter fixes: Fixed bugs of the 120 revision; Fixed random encounters where normally aggressive npc’s didn’t attack after fighting with the other npc’s; Fixed bug with unlimited experience in Den; Fixed mistakes in NCR quests cooldowns; Slight dialogues fixes. Rev.137 http://www2.xp-dev.com/sc/change/94227/137 Ability to specify the layer of tiles/roof to organize correct query of displaying. Totally there can be 5 layers, from 0 to 4. You can switch between them with pressing shift and pressing appropriate key (from 0 to 4). Indication of the current layer is specified in the map’s supplemental information (in upper right corner). Specification of MapperMap AddTile/AddTileName methods was expanded, also layer parameter was added void AddTile(uint16 hexX, uint16 hexY, int offsX, int offsY, int layer, bool roof, uint picHash) void AddTileName(uint16 hexX, uint16 hexY, int offsX, int offsY, int layer, bool roof, string@+ picName) Functions for hash calculation by file’s name and inverse function were added to the native scripts const char* (*GetNameByHash)(uint hash); // Get name of file by hash uint (* GetHashByName)(const char* name); // Get hash of file name The functional for operating with the chosen’s actions was added to the client’s scripts. For taking or specifying the actions use functions uint GetChosenActions(uint[]@+ actions) void SetChosenActions(uint[]@+ actions) This array consists of blocks of seven variables, the first is the type, the other are the parameters. Values of types and parameters look in _client_defines.fos Chosen actions. Argument with the location was added to the reserved function for checking the entries into this location bool entrance_FuncName(Location& loc, Critter@[]& critters, uint8 entrance) The next events were added for critters CRITTER_EVENT_USE_ITEM_ON_ME bool EventUseItemOnMe(Critter& whoUse, Item& item) CRITTER_EVENT_USE_SKILL_ON_ME bool EventUseSkillOnMe(Critter& whoUse, int skill) In the calls stack it is situated between CRITTER_EVENT_USE_* and the global handler. That is CRITTER_EVENT_USE_ITEM for the player + CRITTER_EVENT_SMTH_USE_ITEM for those who can see the player. CRITTER_EVENT_USE_ITEM_ON_ME The global handler critter_use_item. and CRITTER_EVENT_USE_SKILL for the player + CRITTER_EVENT_SMTH_USE_SKILL for those who can see the player. CRITTER_EVENT_USE_SKILL_ON_ME The global handler critter_use_skill. The supplemental information (current hex, fps, etc.) in Mapper is presented in the upper right corner. Bug of 135 revision with transparent tiles when placing them was fixed. Data connected with unfinished mechanism of textured grid was deleted. Rev.136 http://www2.xp-dev.com/sc/change/94227/136 Maps converted to text format. Rev.135 http://www2.xp-dev.com/sc/change/94227/135 Now only text format is used for maps, it is binary only for loading. All maps are converted to the text format (they will be uploaded with the next revision). Extension of this format is “fomap”. To convert your own maps to the new format – execute in Mapper ““#ConvertMaps”, then you should manually or using Mapper set required values in Time, NoLogOut, ScriptModule, ScriptFunc fields, which values you can see in file Maps.cfg. File Maps.cfg is not used anymore, locations prototype numbers are defined opposite to their name in file Locations.cfg, as in the most cases the one map prototype is used for the one location. According to these changes, the next MapperMap methods are deleted: uint GetTile(uint16 tileX, uint16 tileY, bool roof) const void SetTile(uint16 tileX, uint16 tileY, bool roof, uint picHash) string@ GetTileName(uint16 tileX, uint16 tileY, bool roof) const void SetTileName(uint16 tileX, uint16 tileY, bool roof, string@+ picName) And the next are added: uint GetTilesCount(uint16 hexX, uint16 hexY, bool roof) const void DeleteTile(uint16 hexX, uint16 hexY, bool roof, uint index) uint GetTile(uint16 hexX, uint16 hexY, bool roof, uint index) const void AddTile(uint16 hexX, uint16 hexY, int offsX, int offsY, bool roof, uint picHash) string@ GetTileName(uint16 hexX, uint16 hexY, bool roof, uint index) const void AddTileName(uint16 hexX, uint16 hexY, int offsX, int offsY, bool roof, string@+ picName) Also the next fields are added: const int WorkHexX const int WorkHexY int Time bool NoLogOut string ScriptModule string ScriptFunc The next methods are deleted (as their technology is not good enough for now): string@ GetTerrainName(uint16 tileX, uint16 tileY) cons void SetTerrainName(uint16 tileX, uint16 tileY, string@+ terrainName). Function bool SaveMap(MapperMap@+ map, string& fileName, int pathType, bool text, bool pack) now looks as bool SaveMap(MapperMap@+ map, string& fileName, int pathType). The ability to transmit commands /text /pack when saving by the console is deleted respectively. Several functions for operating with map’s fields were added to mapper script (you can do this procedure simply editing necessary field in the map’s file with text editor): #MapTime value – map’s time in minutes; #MapNoLogOut value –possibility to log out on the map; #MapScriptModule moduleName – script, module’s name; #MapScriptFunc funcName – script, function’s name. Now it is possible to place lots of sprites on one hex. Be attentive, fallout’s tiles have the same size and if you place two tiles on the same hex, you won’t see it (only if you select it , it will be less transparent than the others). Take it into account when you place or copy-paste tiles. Function #ClearTiles can help you with this problem, it deletes superfluous tiles from the hex. So, if you operate with fallout’s tiles and you don’t need several tiles on the same hex, execute this script when you finish work. Also you can place tiles on every hex, not in two. Ability of shifting is added for tiles. To produce tile shift just make the same operations as switching between tiles, but additionally pressing shift. Also you can use the same shift procedure for items. To cancel shift, press Alt with Shift and move objects. Fixed 130 revision’s bugs. Fixed bug with absence of shifting in fofrm with one sprite. Fixed bug with error in loading sprites in scripts (LoadSprite), which caused several other bugs. Remained ini files were formatted. Rev.134 http://www2.xp-dev.com/sc/change/94227/134 Config was uploaded by mistake. Take into accont, don't use config file from 132 and 133 revisions, admin pass is "hh" there. Rev.133 http://www2.xp-dev.com/sc/change/94227/133 Redding maps fixed, quest NPC were added. Rev.132 http://www2.xp-dev.com/sc/change/94227/132 Fixed "Anger" quest, the missing dialogue was restored, now it can be finished. Added quest "Forgery". (VC, Linnet) Rev.131 http://www2.xp-dev.com/sc/change/94227/131 New quests "Anger", "Ernst Telman" were added. (VC, Linnet) Fixed bug in VC guard's AI scripts. Fixed mistakes in quest “Amnesty for Joshua” dialogues. Ability to cancel their service for mercs/companions was added if the owner exits from location to the global map. Rev.130 http://www2.xp-dev.com/sc/change/94227/130 Support of graphics files SPR, TIL, ZAR from Fallout Tactics was added. Support of data files BOS from Fallout Tactics was added (works as ZIP archieve). For loading certain animation from SPR files, state it in the name after “$” sign. E.g. loading CrouchAttackClubSwing animation from file Mutant.spr - “Mutant$CrouchAttackClubSwing.spr”. The first frame of first animation is taken without direction. Also, ability to set certain palette for ART files (graphics files from Arcanum) was added – state palette’s number (from 0 to 3) after “$” sign. E.g. to load dfmbnsba.art file with the second palette - “dfmbnsba$1.art”. First palette is taken without direction (that is 0). Operation with sprites was changed. Now all interface graphics (which is set in ini files) is represented not as one sprite, as continuously played animation. Functional for operation with currently drawn sprites on the map was added to the native client’s and mapper’s scripts. Structures: struct Sprite – displayed sprite; struct SpriteInfo – additional information about the sprite. Functions: Sprite* (*GetDrawingSprites)(uint& count); - currently drawn sprites, if no sprites (on the global, menu), then NULL is returned and count == 0; SpriteInfo* (*GetSpriteInfo)(uint sprId); - getting additional information about certain sprite; uint (*GetSpriteColor)(uint sprId, int x, int y, bool affectZoom); - getting pixel’s colour, with the ability of taking zoom into account; it isn’t available for 3d models yet; format - ARGB; bool (IsSpriteHit)(Sprite sprite, int x, int y, bool checkEgg); - test whether the point on the display matches with the current sprite with taking zoom, transparence and egg of transparence into account (optional). The reserved native global variable GameOpt was renamed to Game. Global variables int __MouseX, __MouseY for current mouse position indication were added. Function void GetMousePosition(int& x, int& y) was deleted. Indication of opened console bool __ConsoleActive was added to client’s scripts. Bug with memory leak when rendering 3d graphics to sprites was fixed. Rev.129 http://www2.xp-dev.com/sc/change/94227/129 Added ability to use robot-guards from Sierra as bodyguards (for those who had completed quest "No-sweat job" in Navarro) Added quest "Amnesty for Joshua" (VC, Amanda) Work of teleport on special encounter "Mad scientist's laboratory" was restored. Rev.128 http://www2.xp-dev.com/sc/change/94227/128 Second stable SDK assembly. For the purpose of decreasing repository's size, assemblies will be stored in another places. Links you can find in text files. Rev.127 http://www2.xp-dev.com/sc/change/94227/127 Quest "No-sweat job" in Navarro. Rev.126 http://www2.xp-dev.com/sc/change/94227/126 Mercenaries and companions mechanism (merc.fos) was updated. Now every companion has term of service. Companions don’t meddle in player’s showdowns with NPC’s. Fixed quest “Dip.Courier”. Now it can be finished. Fixed quest “Dock’s attack”. Now it can be finished after killing 5 giant insects. Added 3 new mercs for Lo Pan. Updates NPC-travellers mechanism (traveller.fos). The first NPC-traveller was added (eli.fos). Functions which cooldowns checkup for NPCs in dialogues were fixed. When character dies, all items with flag ITEM_GAG are deleted. Fixed cooldowns for quests “Hub bibliography”, “Sick Brahmin” and in the dialogue with dr.Klaus for stimpacks and first aid kits delivery. When NPC repairs an item, ammo is ejected. Script for NPC monologues realization was added. (monologue.fos) Rev.125 http://www2.xp-dev.com/sc/change/94227/125 Fixes of password encryption in the client's files. Rev.124 http://www2.xp-dev.com/sc/change/94227/124 Fixed bug with graphics loading in the previous update. Rev.123 http://www2.xp-dev.com/sc/change/94227/123 DAT2.1 (Arcanum) files support was added. ART (Arcanum) graphic format was added. Function for operating with strings splitEx was added. Principle is the same as in split, but empty elements are not included in the result array. Also spaces/tabs/string_hyphenation are deleted from the result elements. Examples: split(“A|B||D”, “|”) -> {“A”, “B”, "", “D”} splitEx(“A|B||D”, “|”) -> {“A”, “B”, “D”} split(“A| B\t\t||D| E|F ”, “|”) -> {“A”, “ B\t\t”, "", “D”, “ E”, “F ”} splitEx(“A| B\t\tC||D| E|F ”, “|”) -> {“A”, “B”, “D”, “E”, “F”} Additional DrawSprite functions for the client and mapper were added. You can transfer true with the last argument and as the result, the shift which is stored in the current file will be added to the sprite’s position. void DrawSprite(uint sprId, int sprIndex, int x, int y, uint color, bool applyOffsets) void DrawSprite(uint sprId, int sprIndex, int x, int y, int w, int h, bool scratch, bool center, uint color, bool applyOffsets) Fixed bugs with incorrect ini settings parsing in the scripts. Rev.122 http://www2.xp-dev.com/sc/change/94227/122 Client scripts updates: For the reserved function void render_iface(uint layer) was added calling with value layer 100 to give the ability of drawing on the global map. Also the next global variables were added for operating with the global map: bool __GmapActive – whether global map is active and all the variables below are correct; bool __GmapWait – whether waiting mode of encounter affirming is active; float __GmapZoom – current zoom, don’t forget it to take into account while drawing a map; int __GmapOffsetX, __GmapOffsetY – map shift from the zero-coordinate (up-left corner); int __GmapGroupX, __GmapGroupY – player’s group coordinates; int __GmapMoveX, __GmapMoveY – destination point’s coordinates; float __GmapSpeedX, __GmapSpeedY – movement speed every 50 ms, without taking relief into account For example, calculating the current pixel group’s position - (x = __GmapGroupX / __GmapZoom + __GmapOffsetX), (y = __GmapGroupY / __GmapZoom + __GmapOffsetY). Fixed bug with hanging when drawing 3d model, occurred in the last update. Fixed missing bracket in English texts. (by Kilgore) Rev.121 http://www2.xp-dev.com/sc/change/94227/121 Added more mouse sensitivity and now you can see mouse’s speed percent in the settings. Updated FOConfig.exe. Added AlwaysRun option. Possible values for option Mouse speed were corrected. Option Sleep now can be set to -1, that means switching it off (maximum performance). Added ability of redirecting keyboard’s symbol codes input. For this, use option KeyboardRemap (in FOnline.cfg). It is performed after space – X Y X Y …, where X is the code which is substituted by Y. Code numbers - http://fonline.pastebin.com/Qy3E0qwj Interface description in default.ini is formatted and commented. (by LoadRunner) Location prototypes updates: Option max_copy was deleted. Option max_players was added. It limits the amount of players who can be on the location simultaneously. Players, who can’t enter location because of exceeding the limit will see message 904 from FOGAME.MSG {904}{}{Location is overcrowded, try to enter later.} Password encryption in server *.client. files was added. Mouse shift when switching between movement modes was fixed. Also, for more accurate work, the hex mask was added – look \Client\data\art\misc\hex_mask.png. Only red colour is taken into account and when it takes on certain value, the shift to certain direction is performed (50 – 5, 100 – 0, 150 – 3, 200 – 2). The mask is optional, you can work without it. Fixed loading/saving tiles in the maps text format. Fixed global map shifting behind screen’s edge. Registration of useless clicks in mapper when switching between windows, now isn’t performed. Fixed the animation of 3d critter standing when situating them on the map. Also now 3d critters don’t play standing animation in the critter’s list. Fixed displaying of critters which have only one direction. Fixed command ~reloadscripts. Now when you mark items for deleting (DeleteItem/DeleteItems), their quantity is saved. So, in the moment when real deleting is performed, server will delete the requested number of items. Now knockout during turn-based fight leads to immediate loosing action points, not after finishing the turn. Also, frequent checks for the necessity of finishing the turn were added at the server - if critter’s dead, critter has negative AP, critter has no more AP. Scripts: Fixed critter’s flags (Critter extra flags, _defines.fos). Fixed special encounter scripts Guardian of Forever, Mad Brahmins. Script trader.fos was formatted. Reserved function was added to client scripts, which is called with attacks void hit_aim(uint8& aim) aim value can be redefined( Hit locations in _defines.fos). Function int Critter::GetScore(uint score) was added to server scripts. Specification Critter::AddScore(int score, int val) was changed to Critter::AddScore(uint score, int val). Function for calculation the size of drawn text was added to client and mapper scripts void GetTextInfo(string& text, int w, int h, int font, int flags, int& tw, int& th, int& lines) string& text – text; int w, h, font, flags – height, width, print, flags; int& tw, int& th, int& lines – total width, height and amount of strings in the current text. Rev.120 http://www2.xp-dev.com/sc/change/94227/120 Unused encounter tables for Fallout 1 and commented original’s scripts were deleted from worldmap_init.fos; Random encounters of “beasts versus beasts” type were enabled, which were presented in the scripts, but were absent in the original. Added some new kinds of non-unique random encounters. Now, if player uses to kill NPC’s of certain group or organizations on random encounters, then they become aggressive. Vault City guard’s automatic search is deactivated. Now you need to activate the dialogue to pass through. Fixes in English dialogues versions. Maps fixes. Rev.119 http://www2.xp-dev.com/sc/change/94227/119 Fixed lots of little mistakes in dialogues; Fixed bugs in some Den and Klamath quests; Maps fixes; Duplicate dialogues with different names were deleted. Rev.118 http://www2.xp-dev.com/sc/change/94227/118 Fixed modificator's argument from Parent-0-7 to Parent0-7. Rev.117 http://www2.xp-dev.com/sc/change/94227/117 Added dialogues to Arroyo doctor and his team. Slight fixes (dialogues, maps). Rev.116 http://www2.xp-dev.com/sc/change/94227/116 Library for importing different 3d models was enabled – Assimp http://assimp.sourceforge.net/ Formats that are supported: http://assimp.sourceforge.net/main_features_formats.html Built-in one is still used for X format, for other ones – this library. If you don’t need the library, you can delete it (file Assimp32.dll), client and mapper are able to work without it. Updated mechanism of linking models and animations, now you can link any animation to any skeleton from any file. fo3d format changes: Modificator ModelAnimation was deleted. Modificators Anim, RenderFrame, RenderFrames were expanded – now file name which consists needed animation is placed before the animation’s name (if you state “ModelFile”, then search is performed in the file of loaded model)/ Specification of indicating parent texture (Texture X Parent) was expanded. Now you can additionally state the mesh number and its part, from which the texture is taken - Texture X ParentY-Z, where X is the texture’s number, Y is mesh number, Z is mesh part number; parameters Y-Z are optional, you may don’t use them at all or you may use them partly (Parent, Parent0, Parent-5). Fixed bug with incorrect script processing when operating with Critter::ShowScreen. Fixed bug with incorrect operating and crashing when using Log function with some special symbols. Added Combat Armor 3d model (by Gray). Rev.115 http://www2.xp-dev.com/sc/change/94227/115 Added special encounter "Warehouse of lost doughnuts" (author - Ponchik). Scripts for some original special encounters (author - Cracker). Remade some prototypes. Windows without glasses in Vault's walls can be shooted through now. Slight fixes. Rev.114 http://www2.xp-dev.com/sc/change/94227/114 Maps for quests from the 113 revision. Rev.113 http://www2.xp-dev.com/sc/change/94227/113 Klamath: quests - "Worker searching", "Husband's alert", "Brahmins vaccination" (author - Ponchik). Slight fixes. Rev.112 http://www2.xp-dev.com/sc/change/94227/112 Finished appearance of random encounter "Ocean Trader". Slight maps, dialogues and graphics fixes. Added buttons for BarterGround, GECK town, Warehouse and Hell for the global map (author - Ponchik). Slight fixes. Rev.111 http://www2.xp-dev.com/sc/change/94227/111 Added additional mechanism for data files loading (dat, zip). It is necessary for loading data files loading before scripts initializing and processing start() function as some date is needed to be used before this (effects, prints and some other resourses). For adding files to loading – create DataFiles.cfg file in which you should list all necessary file names. The program searches for the content from the last to the first data file. This mechanism uses server, client, mapper. If list isn’t found then no alerts will be displayed. If one of the files from the list can’t be found or load error appears, then alert will be shown. Option PatchDatPath was deleted, loading of this file is moved to DataFiles.cfg. Rev.110 http://www2.xp-dev.com/sc/change/94227/110 Fixed model's borders calculating which caused nick or text shift above critter's head. Rev.109 http://www2.xp-dev.com/sc/change/94227/109 Fixed skin setting-up when registration 3d character. Fixed order of loaded packs (dat, zip) scanning while searching and parsing ini files. Addition to 106 revision – for stating specific keys for certain resolutions now are used not separate files with different names, but marks in the main file. At the start of the string write “resolution”, than min. width and height for starting using these options. By default these values are equal to zero. For example: "resolution 1024 768 key = value..." It means, that “key = value ...(and so on till the next keyword ”resolution”)” will be included in the final ini. Found data will be inserted in the main file as screen width grows. Rev.108 http://www2.xp-dev.com/sc/change/94227/108 Actual cash files. Rev.107 http://www2.xp-dev.com/sc/change/94227/107 SDK is switched to 3d players mode. Normal version will be restored after finishing mechanism debugging process. For switching off 3d players models – comment the next strings in Server\scripts\_defines.fos #define PLAYERS_3D // Enable 3d players #define PLAYERS_3D_NO_HEAD // No head slot #define PLAYERS_3D_VAULT_SUITE // Vault suite by default, not naked 3d updates: Fixed and reduced the size of attributes and weapons. Added missing attributes of opened pipboy. In the left hand now is displayed the item, which player has in the second slot. Armor’s models are divided between the current armor items in the such way, that gamer could see the difference. For example combat armor consists of power armor and the helmet, robes are replaced by jail suit and etc. Fixed animation playing during creating the new character in single mode. Added skin change processing in start intro and after Kitty’s haircut. Added skeleton’s skins. Added sound for men and women. Fixed sound name for critters parameter’s loading (CritterTypes.cfg, SoundName). Now characters walk slowly with double click if alwaysrun option is turned on. Rev.106 http://www2.xp-dev.com/sc/change/94227/106 Added ability to make 3d characters available to play for. To enable it (it is disabled as default) - comment certain strings in _defines.fos // #define PLAYERS_3D // Enable 3d players // #define PLAYERS_3D_NO_HEAD // No head slot // #define PLAYERS_3D_VAULT_SUITE // Vault suite by default, not naked Updated mechanism of working with ini files. Now, when searching for the keys, excess spaces and tabulations are skipped (now you can type “ key = value ”, previously was correct only variant “key=value”) Added function bool AppendIfaceIni(string& iniName), which enables additional ini files. If the name includes slashes, than the search is being performed from data root, if not - than from folder data/art/interface/. default.ini is added automatically by the engine, others you can enable in start() client function. Loading is performed sequentially from default.ini to ones enabled by user by turn. Every packed file is checked by the turn of loading, then in the folder. Global variable string __UserInterface was deleted. Fixed bug with incorrect parsing of animation indexes in fo3d file. Fixed bug with incorrect position of the egg of transparence in zoom mode. For better readability the next scripts were formatted: start_server_client.fos client_main.fos In the future this practice will be continued. Rev.105 http://www2.xp-dev.com/sc/change/94227/105 Documentation update - slight fixes. Rev.104 http://www2.xp-dev.com/sc/change/94227/104 Added structure of script array (ScriptArray) to native scripts. Added ability to client's native scripts of calling hex data - Field. Data is stored in Field* GameOptions::ClientMap, uint GameOptions::ClientMapWidth/ClientMapHeight. If map is loaded, than ClientMap != NULL, hex calling - ClientMap[hexY * ClientMapWidth + hexX]. Rev.103 http://www2.xp-dev.com/sc/change/94227/103 Added always run option - can be enabled in client's config file “AlwaysRun”. Disabled as default. Added global variables for AlwaysRun regulating: bool __AlwaysRun (as default - false) - enabling AlwaysRun ability; uint __AlwaysRunMoveDist (as default = 1) - run with click, if distance is equal or more than the value; uint __AlwaysRunUseDist (as default = 5) - run with using smth/dialogue/etc, if distance is equal or more than the value. TLA's mechanics is equal to original - always run with click, always run with using if distance is more than 4 hexes. Added parameter uint Critter::ItemTransferCount to native scripts. It stores the value of transferred items during the last transaction. Rev.102 http://www2.xp-dev.com/sc/change/94227/102 Optimized server operation (script calling) in one tread operation mode, performance increased up to 400%. Fixed bug with crash when calling Critter::Say* methods with parametr SAY_SAY_TITLE. Rev.101 http://www2.xp-dev.com/sc/change/94227/101 Changes in fo3d format, new specification was created - look this theme: http://www.fonline.ru/forum/showthread.php?t=19689 New format added new abilities of working with 3d objects - trasmission of texures, other paremeters, etc. Also added ability to render certain animation to sprites as for one frame, either for the whole animation. But the bug with cutting off the shade situated below the lowest edge of model still presents. Updated old fo3d files, also VanBuren's critters and weapon models were added. Changed effects structure, added effect for normal mapping (3D_NormalMapping.fx). Added transfer of real numbers through scripts, float __EffectValue0..9. Fixed bugs with loading 3ds files - miss of meshes except the first; crash if texture coordinates are not presented. Fixed bug in Mapper with data copying when copy-pasting a large number of objects. Fixed text centering of hexes amount in zoom mode. Rev.100 http://www2.xp-dev.com/sc/change/94227/100 Documentation update. Rev.99 http://www2.xp-dev.com/sc/change/94227/99 Updated documentation file, which was missed in the previous revision. Rev.98 http://www2.xp-dev.com/sc/change/94227/98 Added resourse gathering system; Documentation updating. Rev.97 http://www2.xp-dev.com/sc/change/94227/97 Fixes of "Night is tender" quest, now healing must work properly. Added preview from global map for GECK location. Rev.96 http://www2.xp-dev.com/sc/change/94227/96 Gecks counting on the location now affects its auto moving away and visibility separately; Parameter geck_enabled (Map::GeckEnabled) renamed to geck_visible (Map::GeckVisible). Rev.95 http://www2.xp-dev.com/sc/change/94227/95 Added global server function void SetChosenSendParameter(int index, bool enabled) which can denie transmitting parameters to client. Transmitting of all parameters is enabled by default. Rev.94 http://www2.xp-dev.com/sc/change/94227/94 Fixes of sea encounter maps. Rev.93 http://www2.xp-dev.com/sc/change/94227/93 Added sea encounters; Added posibility of an encounter while travelling on air/water transport; Player always have possibility of cancellation water/air encounter and never gains experience for that; Bug fix in mapper with incorrect editing critter's parameters. Rev.92 http://www2.xp-dev.com/sc/change/94227/92 Fixed displaying rating in pipboy. In mapper additional indication of cut sprites was added to make lines, which are needed for correct interaction, visible. Rev.91 http://www2.xp-dev.com/sc/change/94227/91 Added traffic encryption between server and client. Rev.90 http://www2.xp-dev.com/sc/change/94227/90 Fixed choosing automatically cut sprites in zoom mode. Rev.89 http://www2.xp-dev.com/sc/change/94227/89 Added parametr DrawOrderOffsetHexY for shifting order of drawing lower (Y axis). This is an analogue for recently deleted DrawPosOffsX. Fixed using car trunk. Different slight fixes. Rev.88 http://www2.xp-dev.com/sc/change/94227/88 Fixed exit from Redding; slight fixes. Rev.87 http://www2.xp-dev.com/sc/change/94227/87 Fix for weapon AP cost. Rev.86 http://www2.xp-dev.com/sc/change/94227/86 May be fixed bug with incorrect displaying of some tiles. Fixed bug with unworking elevators. Added restoration of effects when loosing a device (cause crashed e.g. with alt+tab) Rev.85 http://www2.xp-dev.com/sc/change/94227/85 Fixed bug with chat disappearing. Fixed AI bug when combat plans always finished with REASON_CANT_WALK. Rev.84 http://www2.xp-dev.com/sc/change/94227/84 Fix for DT params reading. Rev.83 http://www2.xp-dev.com/sc/change/94227/83 Safety checks for radio commands. Rev.82 http://www2.xp-dev.com/sc/change/94227/82 Fixes of some dialogues; translations of dialogues on Barterground; map fixes; fixes of encounter table; slight fixes. Rev.81 http://www2.xp-dev.com/sc/change/94227/81 Fixed another bug during moving on the global map. Fixed unplanned activating of b/w effect. Rev.80 http://www2.xp-dev.com/sc/change/94227/80 Fixed teleportation bug during moving on the global map. Rev.79 http://www2.xp-dev.com/sc/change/94227/79 Fixed bug with incorrect tear and wear and fuel consumption calculation during moving on the global map by car. Rev.78 http://www2.xp-dev.com/sc/change/94227/78 Fixed brightness output. Fixed outlining activation. Rev.77 http://www2.xp-dev.com/sc/change/94227/77 Added automatic sprite cutting. Main purpose – correct displaying of long walls. Parameter SpriteCut was added to prototypes and mapper (only for scenery) for modification. Cutting values: 0 – switched off, 1 – horizontal (X axis), 2 – vertical (Y axis). Wall blocks should be set manually , for that purpose six blocks with different corner types with visual indication were added. It is necessary for correct calculation of brightness and egg of transparence reaction. Numbers 6800..6805 at the end of Wall and Fast list. Fixed client instability after recent update. Primary indexes array for animations was expanded to the range ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789. For value changing use native means (structure CritterType in fonline.h). Support of effects (HLSL) loading with earlier version of compiler. Automatic attempt of compilation is performed after failure in compilation with the current library. Added data updating for client function GetIniStr in the start function (start) after each call of LoadDataFile. Mapper update: Fixed bug with error in loading tiles with extension not in lower case. Fixed algorithm of sprite displaying calculation (when big sprites were disappearing near the screen edge). Additional visual means for debugging: - Ctrl + Q: Corners type viewing; - Ctrl + W: Viewing the result of sprite cutting, linking them to hexes; - Ctrl + E: Viewing the sequence of sprites drawing. At the time of renewing NPC’s bag, only items which are not in inventory are repaired and reloaded. Added ability to set sprite shift in screen coordinates to prototypes. Fixed bug with double notification of quest state change. Rev.76 http://www2.xp-dev.com/sc/change/94227/76 Added quest “Night is tender” Rev.75 http://www2.xp-dev.com/sc/change/94227/75 Tables for sea encounters, slight fixes. Rev.74 http://www2.xp-dev.com/sc/change/94227/74 Source documentation. Rev.73 http://www2.xp-dev.com/sc/change/94227/73 SPECIAL calculating is moved to native scripts - fonline_tla.dll for server and fonline_tla_client.dll for client (must be situated in data\scripts). The other parameters which are used in the engine are needed generally for drawing GUI, but soon they’ll be moved to scripts too. Native scripts files are moved from data folder to scripts. Added bat-file make_tla.bat for their compilation (installation of MSVS8 is necessary). For example of use new methods for critter classes are added (IsInjured, IsDmgArm...), items (IsHtHAttack, IsGunAttack...) with pragma bindfunc. Example of linking global varieties of standard and native scripts is added (__HitAimEyes, __HitAimHead..., these global varieties are moved to scripts). Callback functions are added (to GameOptions) for item usage cost determination - GetUseApCost. For attack max range determination - - GetAttackDistantion. It further such functions will force out usage of critter parameters in the engine. These functions are binded at the stage of connecting of library to the engine (DllMainEx). For operating with the engine added the next functions (to GameOptions): CritterChangeParameter – for correct change of critter parameter, this function should be called firstly, then you can change the value. CritterTypes – index of CritterType structures where data from CritterTypes.cfg is stored. Added method to client’s critters for detection whether now is time of its move in the turn-based mode bool CritterCl::IsTurnBasedTurn() const Some logics of operating with turn-based mode is moved to the scripts - turn_based_process main.fos. Some recommended specifications for the reserved functions are changed - templates.fos. Min. time of dialogue or barter with NPC now is regulated by the global varieties __DlgTalkMinTime (now default 100 seconds) и __DlgBarterMinTime (now default 50 seconds). Range for all prototypes (maps, locations, items) is expanded to 30000. Fixed bug with incorrect drawing of minimap in the pipboy. Fixed bug with incorrect calculating of healing rate while registration. Fixes of Zerg’s special encounter. Rev.72 http://www2.xp-dev.com/sc/change/94227/72 Data library for script compilation (updated on 27 October) Rev.71 http://www2.xp-dev.com/sc/change/94227/71 Added Zerg special encounter. Fixed bug with incorrect names in Fixboy. Added function LoadDataFile to server scripts, analogue of client/mapper. Fixed mistiming of player movement on global map. Deleted function Critter::SendQuestVar, now alert about changing of local variable is automatic. Changed function specification void ShowScreen(int screenType, uint param, string& funcName) to void ShowScreen(int screenType, uint param, string@+ funcName), now can transmit both empty string or null. Rev.70 http://www2.xp-dev.com/sc/change/94227/70 Documentation is updated. Deleted incorrect splash-picture. Added urgent files for scripts autoaddition in Notepad++. Rev.69 http://www2.xp-dev.com/sc/change/94227/69 Added ability to use your own shaders for game graphics drawing. High Level Shader Language is used for this. Effects folder is situated in data\effects. After the first compilation they are cashed in the folder data\cache (in futher other different data will be cashed there). You can read specifications on the game engine effects in data\effects\ReadMe.txt. Added ability to link any effect to sprite or model in .fofrm and .fo3d (“effect=effect_name.fx”). For default effect changing, function void SetEffect(int effectType, int effectSubtype, string@+ effectName) was implemented into the client scripts. int effectType, effectSubtype – effect types look in _client_defines.fos (Subtype for fonts used font type); string@+ effectName – the name of the effect file (with extension) is in the folder data\effects. Added changing of detailization of game objects for demonstration. For activation press Alt+W, for return press Alt+Q. Added client function for map redrawing void RefreshMap(bool onlyTiles, bool onlyRoof, bool onlyLight) if all three parameters are false, than everything will be redrawed. Also these three parameters are incompatible. Fixed bug in mapper with impossibility of viewing 3d critters in prototypes table. At present time they can’t be ranged. Added ability to play sounds/music from different folders. void RefreshMap(bool onlyTiles, bool onlyRoof, bool onlyLight) If there isn’t slashes (‘/’,‘\’) in path name than search is performed in the folder sfx/music. If there are slashes, than in the root (“data/mysounds/mysound.ogg”). Rev.68 http://www2.xp-dev.com/sc/change/94227/68 Fixed bug in the ObjectEditor when damage type is saved incorrectly. Rev.67 http://www2.xp-dev.com/sc/change/94227/67 Fixed crashing when calling CritterCl::[Param/Stat/Perk/etc]Base in client scripts; Fixed error with recording Anydata of zero length (by Atom). Rev.66 http://www2.xp-dev.com/sc/change/94227/66 Fixed incorrect weapon prototype; errors in checking for special encounters; added decraft of the sand sack to fixboy; other little fixes. Rev.65 http://www2.xp-dev.com/sc/change/94227/65 Redding: finished map according to the last concept; - Garbage was returned to static locations; - Ammo craft on benches (beta-version); - Destruction of the sack using skill repair now gives use empty sack. - Entering Den message was moved to texts from script. Rev.64 http://www2.xp-dev.com/sc/change/94227/64 AngelScript updated to 732 revision. Added new methods for arrays: void T[]::insertAt(uint, const T&) – element inserting in specified position in the array; void T[]::removeAt(uint) – deleting the element by index; void T[]::insertFirst(const T&) – element inserting to the beginning of the array; void T[]::removeFirst() – deleting the first element; void T[]::insertLast(const T&) – element inserting to the end of the array; void T[]::removeLast() – deleting the last element; void T[]::grow(uint) – add elements (the sames as a.resize(length()+X)); void T[]::reduce(uint) – delete elements (the same as a.resize(length()-X)); T& T[]::first() – call of the first element of the array (the same as a[0]); T& T[]::last() – call of the last element of the array (the same as a[a.length()-1]). Also deleted all functions ArrayPushBack as the built-in array functional was expanded. All the scripts were fixed accordingly. Rev.63 http://www2.xp-dev.com/sc/change/94227/63 Added ability to start the server as a service. For registration/start use key “-service” (shortcut FOServerService.exe.lnk). For deleting use keys “-service -delete” (shortcut FOServerServiceDelete.exe.lnk). Added ability to log using function OutputDebugString. The log can be caught (even remotely) using program DebugView http://technet.microsoft.com/en-us/sysinternals/bb896647.aspx For switching it on in server and client configs option LoggingDebugOutput is added. Server/client/mapper will work normally now with incorrect active folders. At start you set the current folder of executable. Fixed bug with absence of replacement “x” by “ч” in built-in punto switcher. Fixed crash in turn based mode and incorrect work of Map::GetCritter(uint critterId). Rev.62 http://www2.xp-dev.com/sc/change/94227/62 Fixed bug with updating vehicle data on the global map. Fixed bug with system hanging while looking items quantity in game info. Fixed bug with the incorrect login/disconnect. Fixed bug with incorrect creating non-stacking items on the map in the number of >1. Fixed bug with incorrect critters gathering when path tracing (by Atom). CRITTER_EVENT_TALK now performed before checking NPC for settings which could restrict speaking with it. Added new mechanism for script garbage gathering (by Atom). For config file simplification, the next options were removed: ASGarbageTime, VarsGarbageTime. Deleted transfer of a group of critters into global map processing global_process, CRITTER_EVENT_GLOBAL_PROCESS. Also instead of transferring a group into global map processing global_invite, CRITTER_EVENT_GLOBAL_INVITE, now only the leader is transferred. Instead of picking group use Critter@[]@ Critter::GetGlobalGroup(). Because of that, specification methods were changed: bool Critter::EventGlobalProcess(int type, Critter@[]& group, ...) bool Critter::EventGlobalInvite(Critter@[]& group, ...) for bool Critter::EventGlobalProcess(int type, Critter& cr, ...) bool Critter::EventGlobalInvite(Critter& leader, ...) Reserved functions of critter event CRITTER_EVENT_GLOBAL_PROCESS, CRITTER_EVENT_GLOBAL_INVITE bool _FuncName(Critter& cr, int type, Critter@[]& group, ...) bool _FuncName(Critter& leader, Critter@[]& group, ...) for bool _FuncName(Critter& cr, int type, ...) bool _FuncName(Critter& leader, ...) Fixed bug with incorrect cooldown for hijacking, now it is equal for a normal lock. Added checking for unopenable door to the lock break script. Rev.61 http://www2.xp-dev.com/sc/change/94227/61 Fixed bug with incorrect reappraisal of item flags in Mapper. Fixed bug when player isn't notified about moved item. Rev.60 http://www2.xp-dev.com/sc/change/94227/60 Fixed bug with incorrect displaying of the rain on roofs. Rev.59 http://www2.xp-dev.com/sc/change/94227/59 Mapper's fix for correct operating with new folder and print's names. Rev.58 http://www2.xp-dev.com/sc/change/94227/58 For editing use program Bitmap Font Generator v1.12. http://www.angelcode.com/products/bmfont/ Print should have the next attributes - OEM RUSSIAN, Padding 1 (in all directions), Binary, all symbols should be placed on the one texture. All prints are moved in the separate folder “Client\data\fonts\”. For the example print FONT_COURIER_NEW_SMALL is added. Look _client_defines.fos, client_main.fos, CourierNewSmall.bmfc, CourierNewSmall.fnt, CourierNewSmall_0.png. Added function in client’s scripts of activating the clock which shows you the time signal comes to server and returns (ping). You can use it for restriction of input while waiting for server’s answer. Fixed crushing when looking players statistics on server. Fixed crushing of Dialogue Editor (by Atom). Rev.57 http://www2.xp-dev.com/sc/change/94227/57 Expanded mechanism of operating with ingame radio. Added flag ITEM_RADIO for radio. (in _defines.fos). Radio messages are now also sent to radios which are on the ground . For their identification engine sends them with color 0xFFFFFFFE (in map_message in client_main.fos). Realization is in script radio.fos (interface, mechanics), call from main.fos. Interface data is taken from default.ini (Radio*). You can edit it with using item or using science skill on it. Radio data is situated in general fields of several item types. That’s why it isn’t a good idea to use this flag with Doors, Keys, Cars, Weapons, Armors, Holodiscs. Transmitting and receiving functions are separated. For managing the next flags and range types are used (_defines.fos): Restriction of transmitting/receiving is stored in Item/ItemCl::RadioFlags, used by the engine: RADIO_DISABLE_SEND, RADIO_DISABLE_RECV. Restriction of switching radio state in в Item/ItemCl::RadioFlags: RADIO_DISABLE_SHIFT_SEND, RADIO_DISABLE_SHIFT_RECV - restriction of switching transmit/receive; RADIO_DISABLE_SHIFT_BC_SEND, RADIO_DISABLE_SHIFT_BC_RECV - restriction of changing distance range; RADIO_DISABLE_SHIFT_CHANNEL – restriction of channel switching. Range types are stored in Item/ItemCl::RadioBroadcastSend/RadioBroadcastRecv, are used by the engine: RADIO_BROADCAST_WORLD – works all over the world; RADIO_BROADCAST_MAP – works within the limits of the current map; RADIO_BROADCAST_LOCATION - works within the limits of the current location; RADIO_BROADCAST_ZONE(x) - works within the limits of “x” zones on the global map; RADIO_BROADCAST_FORCE_ALL – works everywhere regardless of the adjustments of transmitting or receiving radio/ Added support of these flags to the object editor (both engine and script ones). Added scripts uint16 ProtoItem::RadioChannel, uint16 ProtoItem::RadioFlags, uint8 ProtoItem::RadioBroadcastSend, uint8 ProtoItem::RadioBroadcastRecv. For holodisc marking added flag ITEM_HOLODISK (in _defines.fos). Holodisc data is situated in general fields of several item types. That’s why it isn’t a good idea to use this flag with Doors, Keys, Cars, Weapons, Armors, Holodiscs. Added support of this flag in object editor. Added script uint ProtoItem::HolodiskNum. Added ability to use built-in cartridge indicator for other purposes. Added the next parameters: uint8 ProtoItem::IndicatorStart – initial value, - Item/ItemCl::Indicator; uint8 ProtoItem::IndicatorMax – maximum available value (for correct calculation of the strip position); uint8 Item/ItemCl::Indicator – current value. Mechanism is considered activated if maximum value in the prototype isn’t equal to zero. Added support of editing of initial and maximum values in the object editor. Method Item::GetMapPosition for the items which are in the global map returns their coordinates. Fixed bug with system hanging while looking online statistics. Added storing up to 20 ip addresses for one account (fonline.h). Item prototype’s fields, which are equal to zero, now cannot be saved. All prototypes are resaved. Continued working on multithreading in game logics. Added ignoring of non-initialized maps or locations while loading save (NPC’s would be moved to global map, items - deleted). Fixed bug in the dialogue on BiX location. Updated abilities of GUI scripting. In script _defines.fos notes “Used in engine” are replaced by “Hardcoded”; point is the same - to show that this data is used by engine also. Corrected some specifications in template.fos of reserved functions. Rev.56 http://www2.xp-dev.com/sc/change/94227/56 Changes in craft: some new recipe's (new weapon, etc.), added workbenches in some town/military bases. Rev.55 http://www2.xp-dev.com/sc/change/94227/55 - Updated Redding maps; - Deleted unused graphics; - Added second entrance to NCR; - Some changes in NPC's inventories on encounters. Rev.54 http://www2.xp-dev.com/sc/change/94227/54 - Slight fixes in Hartman's and Shrim's dialogues (Vault City); - Fixed problem with immediate sending off caravans/patrols Ahe9mPDq; - Changed content of the quest variable for the quest "Third trial. Drill." - Restored functions for triggers t_DialogNpc and scenery s_TransitToMap. Rev.53 http://www2.xp-dev.com/sc/change/94227/53 Fixes of KotW location. Quest for oil can can be done by everybody in Arroyo now. Rev.52 http://www2.xp-dev.com/sc/change/94227/52 Fixes of Brok and Xander Church location (by VaultTec) Rev.51 http://www2.xp-dev.com/sc/change/94227/51 Fixed names loading (*Names.lst) with the dialogue editor. Changed extention of its config file. Rev.50 http://www2.xp-dev.com/sc/change/94227/50 Fixed bug with duplicating of time events. Rev.49 http://www2.xp-dev.com/sc/change/94227/49 Slight optimization of multi-threading. Rev.48 http://www2.xp-dev.com/sc/change/94227/48 Fixed error in loading of games variables values. Fixed loading of saves games in single player mode. Rev.47 http://www2.xp-dev.com/sc/change/94227/47 Time events changes. - function specification void EraseTimeEvent(uint num) changed to bool EraseTimeEvent(uint num) Return value shows whether deleting is done or the event isn't found. - Deleted the next functions: uint CreateTimeEvent(uint beginSecond, string& funcName, Critter& cr, bool save) uint CreateTimeEvent(uint beginSecond, string& funcName, Item& item, bool save) uint CreateTimeEvent(uint beginSecond, string& funcName, Critter@[]+ critters, Item[]@+ items, bool save) For migration just put the identificator to the critter or item. Added the next functions for operating with event's values: bool GetTimeEvent(uint num, uint& duration, uint[]@+ values) bool GetTimeEvent(uint num, uint& duration, int[]@+ values) bool SetTimeEvent(uint num, uint duration, uint[]@+ values) bool SetTimeEvent(uint num, uint duration, int[]@+ values) Parametr "duration" - time till the event is done in seconds. Return value means that operation is completed, error means that event wasn't found. These functions are thread-safe, 2 thread can't operate with the events simultaneously. Function GetTimeEvent blocks using (changing) of the event until the script is finished or until SetTimeEvent is called, which unblocks the event. GetTimeEvent writes value to the end of the array, SetTimeEvent rewrites it completely. When null is transmitted to values SetTimeEvent values are not changed. - Event function specification can be of two types now: uint e_FuncName(uint[]@ values) uint e_FuncName(int[]@ values) Fixed bug with crashing while loading 3ds file without texture coordinates. Rev.46 http://www2.xp-dev.com/sc/change/94227/46 Added next fuctional for operating with files (class "file"): - for data reading uint8 file::readUint8() uint16 file::readUint16() uint32 file::readUint32() uint64 file::readUint64() In the case of error or the end of file it returns 0. uint file::readData(uint count, uint8[]& data) If data == 0 then program read all data till the end of the file beginning from the current position. Read data is added to the end of the array. The return value shows the real amount of read bytes. - For data recording bool file::writeUint8(uint8 data) bool file::writeUint16(uint16 data) bool file::writeUint32(uint32 data) bool file::writeUint64(uint64 data) bool file::writeData(uint8[]& data, uint count) If count == 0 it records all data from an array. In the case of error it returns false. Fixed bug with incorrect output of zoom value on minimap. Rev.45 http://www2.xp-dev.com/sc/change/94227/45 Extended range of game variables: - local variable of location (LLVAR_); - local variable of map (LMVAR_); - local variable of item (LIVAR_). When using them in dialogue values are taken from: for location - current critter's location; for map - current critter's map; for item - current item in the main slot. For operating with scripts use function GetLocalVar with transmitting of needed operator. Server will delete unused variables of all types automatically. Deleted server function uint DeleteVars(uint id). Dialog editor was adapted to the last updates of game variables. Added ability to define named value (DefineNames.lst) as a value for conditions and results. Added missed translations. Translations of commit history you can find here: http://www.xp-dev.com/forum/topic/3220 Rev.44 http://www2.xp-dev.com/sc/change/94227/44 Updated format of time output in dialogue with repairer-npc; Added script for realization of npc-travellers on global map.(traveller.fos and Davine's script in sf_common.fos); Added npc-traveller explosives-seller Davine. Can be hired in GECK town; Added trade mode "cash only" MODE_BARTER_ONLY_CASH; Fixed bugs in maps structure on maps with holodiscs. Rev.43 http://www2.xp-dev.com/sc/change/94227/43 Added setting in config which defines whether to bind logic threads to the core or let OS do it. In default it is enabled (1) 1. If zero then operating system automatically manage threads between cores, else affinity thread per core LogicThreadSetAffinity=1 Continued work on multi-threading of game logics. Rev.42 http://www2.xp-dev.com/sc/change/94227/42 Fixed crashing under certain conditions; Fixed cycle counting per second. Rev.41 http://www2.xp-dev.com/sc/change/94227/41 Fixed bug connected with the last update. Rev.40 http://www2.xp-dev.com/sc/change/94227/40 Multi-threading of game logics is now supported. You can read about this in details on the forum; Fixed path of recording/reading ban files; Added seconds on the globalmap clock; Decreased permissible length of text listener of channels and maps from 5 to 2 symbols; Deleted global server function void DeleteNpcForce(Critter& npc); Changed specification of method from uint Location::GetMaps(Map@[]& maps) const to uint Location::GetMaps(Map@[]@+ maps) const Now you can know the amount of maps on the location without recording them into array; Added basic server command ~log (~37). It is intended for text listening of server log. Minimum access: administrator. For adding to text listening you should transmit arguement "+", for disconnecting "-"; Fixed basic creating locations command ~addloc (~16); Upgraded basic command of looking player's id using his name ~id (~4); Changed specifications of global functions void critter_attack(Critter& cr, Critter& target, ProtoItem& weapon, ProtoItem@ ammo, uint8 aim) -> void critter_attack(Critter& cr, Critter& target, ProtoItem& weapon, uint8 weaponMode, ProtoItem@ ammo) int to_hit(CritterCl& chosen, CritterCl& target, ProtoItem& weapon, int hitLocation) -> int to_hit(CritterCl& chosen, CritterCl& target, ProtoItem& weapon, uint8 weaponMode); Added variables for weapons which state their active mode const uint8 Item::Mode const uint8 ItemCl::Mode 4 high-order bits - sight (look Hit locations in _defines.fos), 4 low-order bits - mode (0 – primary, 1 – secondary, 2 – third); Added macroses for convenience _WeaponModeUse, _WeaponModeAim, _WeaponModeMake в _macros.fos; Added returnable value of the current mode in method GetSlotProto (urgent for weapons) ProtoItem@+ Critter/CritterCl::GetSlotProto(int slot, uint8& mode) const; Renamed parametr #define ST_RATE_ITEM (102) to #define ST_HANDS_ITEM_AND_MODE (102) value stored in it: XXXX00YY, where XXXX pid - unarmed blow, and YY - mode. Changed way of the dialogue redirecting. You should use returnable value of result function or say-mode instead of uint __ForceDialog; Added specifications of functions: uint r_FuncName(...), uint dlg_FuncName(...) which are detected by server automatically; Fixed bug with moving pushed players only in one direction; Object pointers (derivatives arrays or class members)Location, Map, Critter, Item, GameVar can't be saved in global varities now. For scripts migration save their identificators (Location::Id, Map::Id, Critter::Id, Item::Id), addresing to the objects with (GetLocation, GetMap, GetCritter, GetItem). Weapons prototypes don't save curret mode of fire (in connection with multi-threading). Changed specifications of class members ProtoItem const uint8 Weapon_Skill, const uint8 Weapon_DmgType, const uint8 Weapon_Anim2, const uint16 Weapon_DmgMin, const uint16 Weapon_DmgMax, const uint16 Weapon_MaxDist, const uint16 Weapon_Effect, const uint16 Weapon_Round, const uint8 Weapon_ApCost, const uint8 Weapon_SoundId, const bool Weapon_Remove, const bool Weapon_Aim, const uint8 Weapon_CurrentUse, void Weapon_SetUse(uint8 use) const to const uint16 Weapon_Skill_F, const uint16 Weapon_Skill_S, const uint16 Weapon_Skill_T, const uint16 Weapon_DmgType_F, const uint16 Weapon_DmgType_S, const uint16 Weapon_DmgType_T, const uint16 Weapon_Anim2_F, const uint16 Weapon_Anim2_S, const uint16 Weapon_Anim2_T, const uint16 Weapon_DmgMin_F, const uint16 Weapon_DmgMin_S, const uint16 Weapon_DmgMin_T, const uint16 Weapon_DmgMax_F, const uint16 Weapon_DmgMax_S, const uint16 Weapon_DmgMax_T, const uint16 Weapon_MaxDist_F, const uint16 Weapon_MaxDist_S, const uint16 Weapon_MaxDist_T, const uint16 Weapon_Effect_F, const uint16 Weapon_Effect_S, const uint16 Weapon_Effect_T, const uint16 Weapon_Round_F, const uint16 Weapon_Round_S, const uint16 Weapon_Round_T, const uint16 Weapon_ApCost_F, const uint16 Weapon_ApCost_S, const uint16 Weapon_ApCost_T, const uint8 Weapon_SoundId_F, const uint8 Weapon_SoundId_S, const uint8 Weapon_SoundId_T, const bool Weapon_Remove_F, const bool Weapon_Remove_S, const bool Weapon_Remove_T, const bool Weapon_Aim_F, const bool Weapon_Aim_S, const bool Weapon_Aim_T Added special macros for convenience (Weapon in _macros.fos) _WeaponIsPrimaryAviable, _WeaponIsSecondaryAviable, _WeaponIsThirdAviable, _WeaponSkill, _WeaponDmgType, _WeaponAnim2, _WeaponDmgMin, _WeaponDmgMax, _WeaponMaxDist, _WeaponEffect, _WeaponRound, _WeaponApCost, _WeaponSoundId, _WeaponRemove, _WeaponAim, _WeaponModeUse, _WeaponModeAim, _WeaponModeMake Mapper updates: string@ MapperObject::PicMap/PicInv now return prototype's picturename if other isn't set up; Added const uint16 MapperMap::Width, const uint16 MapperMap::Height for storing current map sizes; Fixed function GetMapFileNames(...). Rev.39 http://www2.xp-dev.com/sc/change/94227/39 Slight fixes of quests in Den, Klamath Improved closed location in Redding Rev.38 http://www2.xp-dev.com/sc/change/94227/38 Slight fixes of quests from string "Guard"; Added services for guardsmen: doc. Troy can heal player; give stimpacks; Valery repairs items; Added universal repairing script for npc (repairer.fos). E.g. in the dialogue vc_valery.foldg 3 new special encounters with holodiscs; Several deleted functions from stdlib are returned. Rev.37 http://www2.xp-dev.com/sc/change/94227/37 Fix of calculating amount of dead NPC on location when necessity of attack is being determinated. Fix of amount loss allies counter when finishing the quest. Output of messages to log is disabled in quest “The drill”. Fix of limit of times amount quest “Dangerous hunt” can be done. Descriptions of deleted maps were returned, which made server restart impossible without saves clearing. Rev.36 http://www2.xp-dev.com/sc/change/94227/36 Fix of Hartman’s dialog. The wrong requirement was deleted. Rev.35 http://www2.xp-dev.com/sc/change/94227/35 New quests from string “Guard” in Vaultcity - Vaultcity guard. Third trial. Drill. - Easy walk. - Go there, don’t know where. - Dangerous hunt. - Diplomatic courier. Fix of caravan’s and patrol’s departure time. Relative departure time was substituted for absolute. Added ability of caravan’s instant departure from the dialog. Fix of items that were generated in encounters 0 in number. (It was impossible to throw out them) Fix of quest “Hub bibliography”. Player need 7 books to gain reputation instead of 6. Rev.34 http://www2.xp-dev.com/sc/change/94227/34 - Maps fixes - Fixed reaction of BG guards on explosives activation Rev.33 http://www2.xp-dev.com/sc/change/94227/33 - Graphics fixes - Non-used files were deleted - Original map of BG was returned Rev.32 http://www2.xp-dev.com/sc/change/94227/32 Private car parking in geck town is disabled till the problem with car boot is solved. Rev.31 http://www2.xp-dev.com/sc/change/94227/31 Added first quests of string “Guardsman”, VaultCity. (Clearing of server saves is needed) Added template for making quests-combats with npc. (fighter_quest.fos, e.g. “Guard. First trial.”) Added ability to take quest “Hub bibliography” again if player failed to finish it at previous time. Fixed incorrect condition in Dappo’s dialogue in quest “Lot of defective rifles”. Added verification of addressee in “Postman” quest, now player can’t bring letter to any npc of type stated in the letter. Rev.30 http://www2.xp-dev.com/sc/change/94227/30 Deleted not used MSG files - FOSCRIPT.MSG. Rev.29 http://www2.xp-dev.com/sc/change/94227/29 Updates of way of making records into log. Added ability to look the name of the thread which made a record. Option in config – LoggingThread. You can also turn on output in the server application using “Logging with thread”. Changed format of time output. Now it is not “time in ms”, but “hours:minutes:seconds:milliseconds”. Rev.28 http://www2.xp-dev.com/sc/change/94227/28 Fix and formatting. Rev.27 http://www2.xp-dev.com/sc/change/94227/27 Fixed mistakes in calculating karma in quest "Returning of the fugitive". Rev.26 http://www2.xp-dev.com/sc/change/94227/26 Changes on Church of Brok and Xander location: - fixed Preacher, Scientist, repairer Alechandro, Cook, Mickey dialogs; - quests work correctly now; - repairer Alechandro identifies items correctly; - ability to record the information about Church was added (after completing Preacher's quest). Rev.25 http://www2.xp-dev.com/sc/change/94227/25 Activating time of dynamite was fixed. Rev.24 http://www2.xp-dev.com/sc/change/94227/24 New algorithm of generating of pseudorandom variables was added (Mersenne twister). Previously was standart C algorythm srand/rand. Rev.23 http://www2.xp-dev.com/sc/change/94227/23 Energy barrier on the entrance of GECK town was improved. Rev.22 http://www2.xp-dev.com/sc/change/94227/22 Fixed client crashing on start. For preventing this bug in future the control system of versions of cashed scripts in the client has been added. Rev.21 http://www2.xp-dev.com/sc/change/94227/21 Fixed problem when it was impossible to add players to GECK town after removing them with option "Clear list". Rev.20 http://www2.xp-dev.com/sc/change/94227/20 Fixed cooldown of the Postman quest. Rev.19 http://www2.xp-dev.com/sc/change/94227/19 Wrongly deleted dialogs are returned. Rev.18 http://www2.xp-dev.com/sc/change/94227/18 Fixes Deleted not used files. Fixed errors when player removes child killer karma additional times. Fixed error with incorrect name of script of map_v15_village map. Added output of message of increasing trade skill when finishing “Farm vermins” quest to the log. Weakened the giant wasp in the quest in Modoc. Rev.17 http://www2.xp-dev.com/sc/change/94227/17 AngelScript was updated to rev.684, v. 2.19.2 Added global variables to the client: bool __ShowTile, __ShowRoof, __ShowItem, __ShowScen, __ShowWall, __ShowCrit, __ShowFast, __ShowPlayerNames, __ShowNpcNames, __ShowCritId. Deleted limit of min. time of using Map::SetLoopTime (it was 1 second). Fixed registration of the global variables of string type (pragma globalvar). Fixed using reserved global variables string type. Added global variables to mapper: string __ClientPath, __ServerPath. Deleted constant modificators in client from string CritterlCl::Name, CritterlCl::Lexems. Added variable CritterlCl::NameOnHead, which if is not empty, outputted above critter’s head. Rev.16 http://www2.xp-dev.com/sc/change/94227/16 Fixed reclearing of child killer status. Rev.15 http://www2.xp-dev.com/sc/change/94227/15 Fixes: - Fixed names of Giant Wasps and bugs in kills statistic; - Reduced requirements of amount of killed mobs and intelligence in Broken Hills quests (bh_marcus.fodlg, bh_super.fodlg); - Reduced requirement of intelligence for “Fresh blood” quest (vc_doctor_troy.foldg); - Fixed possibility of gaining experience multiple times in “Cabbage” quest in Modoc (mod_farmer_q.fodlg); - Player receives reputation in NCR for quest “True cowboy” even if only one Brahmin is brought (ncr_felix.fodlg); - Michael’s miniquest in NCR can be done by every player only once (ncr_michael.fodlg); - Added requirement of 16 level for “buggy” quest (ncr_ratch.fodlg); - Fixed amount of gaining experience when player rejects gratuity in “Postman” quest (q_mail_reciever.fodlg); - Fixed cooldown of “Postman” quest; - Cave mobs – spawn point near the exit grid was removed in the smallest cave; - Fixes of several dialogues in Vault City; - New quest – “Fugitive returning” – when finished, status “Child killer” is removed. Hubbologist in Redding bank offers this quest; - New quest “Farm vermines”. It is offered by Joe in Modoc (mod_joe.fodlg); - Fixed energy barrier in GECK town; - Added computer for breaking of energy barrier inside the town; - Added car lots for GECK town citizens (not more than 2); - Added ability of clearing of citizens list by town leader using the terminal. Rev.14 http://www2.xp-dev.com/sc/change/94227/14 Update for Notepad++ (Syntax_highlighting, autocomplete, function parameters hints) Rev.13 http://www2.xp-dev.com/sc/change/94227/13 First stable version.h3. Your title here...Rev.190 http://www2.xp-dev.com/sc/change/94227/190 Rev.189 http://www2.xp-dev.com/sc/change/94227/189 Extra system for detecting launched client’s windows was added. Bug with impossibility of reading some files when one copy of client/mapper/server is launched. Check for ITEM_GAG on detection of finishing REASON_HEX_BUSY_RING plan (when critter is surrounded by impassable objects or critters) was added. Ground and roof tiles offset was fixed in FOnline geometry. Rev.188 http://www2.xp-dev.com/sc/change/94227/188 Support of graphic formats MOS and BAM from Ininity Engine (Boldur’s Gate, Icewind Dale, Planescape Torment) was added. It is possible to define the number of played cycle or frame. To define cycle’s number in file name parameters (“S”) – define its index and to define the frame add dash and frame’s index. Examples: fileName$5.bam – load fileName.bam with frames for cycle № 5; fileName$1-4.bam - load fileName.bam with frame № 4 with cycle № 1; fileName.bam - load fileName.bam с with frames for cycle № 0. Rev.187 http://www2.xp-dev.com/sc/change/94227/187 Some actions were performed to fix server's hanging up. Rev.186 http://www2.xp-dev.com/sc/change/94227/186 Some actions were performed to fix server's hanging up. Not adding function's name to log was fixed. Levelcap was removed in the scripts. Rev.185 http://www2.xp-dev.com/sc/change/94227/185 NO_LOOT and NO_DROP mode were switched off for the giant bugs. Rev.184 http://www2.xp-dev.com/sc/change/94227/184 In connection with porting the server (*nix and 64bit) the next changes were made: Operating with net was rebuilded. Libevent library is used. http://monkey.org/~provos/libevent/ http://en.wikipedia.org/wiki/Libevent http://ru.wikipedia.org/wiki/Libevent Operating with GUI was remade. FLTK library is used. http://fltk.org/ http://en.wikipedia.org/wiki/FLTK http://ru.wikipedia.org/wiki/FLTK Operating with threads was remade. Pthreads is used http://sources.redhat.com/pthreads-win32/ (Windows port) http://en.wikipedia.org/wiki/Pthreads http://ru.wikipedia.org/wiki/Pthreads Changes are serious and can cause unstable work. Memory leak when loading maps was fixed in server. Loading maps with items in containers/inventories in mapper was fixed. Don’t use mapper of 171-182 revisions for editing old maps. Now parameters values for critters in mapper are applies only if they are not equal to zero. Initially value is taken from defaults (from .fopro), then from the map’s data if !=0. Critter’s names in mapper are now taken only by prototype number without accounting dialogue’s number. Old specification of Log function which was changed in 174 revision was returned to native scripts. Server’s GUI now ‘Courier New’ type, option in config was deleted. Option for changing server’s window size and its elements was added GUI size modifier GUISize=0 E.g. if GUISize=-50 then server’s window and all its elements will be 50% smaller, if GUISize=30 then 30% larger. Log in server window is unrolled as defaults. Also, the information from the log can be copied and scrolling is stopped if it is focused. Client’s crashing when playing items animation was fixed. Paths make_tla.bat were converted to Visual Studio 2008 (9.0). Rev.183 http://www2.xp-dev.com/sc/change/94227/183 Lo Pan’s mercenaries call leader’s name correctly now. Nancy and Sid’s quest location now is deleted after leaving it (previously it wasn’t deleted and hanged in the memory). SF docs were excluded from NoPvP locations. Letters generation in Postman quest was fixed. Holodisk with combat robot’s video recordings can be given to Buster now. Shaneman’s documents now have description in “Diplomatic mission” quest. A dialogue between bar clients in outer Vault City was added (wipe is required). Mini quest “Seduce art” was added in Klamath (wipe is required). Rev.182 http://www2.xp-dev.com/sc/change/94227/182 NPC-travellers will no longer take dead characters to the global map. Atoll was removed from Eli’s destinations. Skill displaying when increasing it through the dialogue was fixed. The mistakes in the newcomer’s dialogues in “Anger” quest were fixed. The mistake in mercenaries script which caused the leaving the employer earlier was fixed. Rev.181 http://www2.xp-dev.com/sc/change/94227/181 Reading nicknames from ignor list file was fixed. Console command for adding a player to the ignor list was added ~ignore PlayerName. Rev.180 http://www2.xp-dev.com/sc/change/94227/180 Mechanism of reputation calculation was switched off due to its incorrect work. Now all the list will be visible, but will work correctly. Rev.179 http://www2.xp-dev.com/sc/change/94227/179 Network protocol bug which caused short hangs up was fixed. Client's script was fixed which could cause null parameter call. Rev.178 http://www2.xp-dev.com/sc/change/94227/178 Superfluous rifles on offer were fixed. Rev.177 http://www2.xp-dev.com/sc/change/94227/177 Game version increment. Rev.176 http://www2.xp-dev.com/sc/change/94227/176 Sequence of handlers calling was fixed MAP_EVENT_OUT_CRITTER, MAP_EVENT_IN_CRITTER now the first one is called initially, then the second On intro_init map static lighting was set. Group moving indication on the global map was fixed (previous update bug). Rev.175 http://www2.xp-dev.com/sc/change/94227/175 Console command ~globalmap was added. It moves player to global map. It works only on noPvP maps for players not in combat mode and with noPvP mode turned on. In caravans and travellers scripts functions of moving to final destination's map were updated. Rev.174 http://www2.xp-dev.com/sc/change/94227/174 Porting game to Linux was started. Also supporting of 64 bit platforms. Client’s native libraries are now transmitted automatically. They are stored in ‘Client/data/cache’. Folder with scripts ‘Client/data/scripts’ is not used anymore and was deleted. To the server’s folder library STLPort (http://www.stlport.org/) was added. Client’s libraries are now compiling with it’s help. It is connected with porting to other platforms. Additional methods of moving were added to critters in server scripts bool Critter::TransitToMap(uint mapId, uint16 hexX, uint16 hexY, uint8 dir, bool withGroup) bool Critter::TransitToMap(uint mapId, int entireNum, bool withGroup) bool withGroup – when moving from global map to local map, all the group will be moved. Regular TransitToMap (without bool withGroup) work as with withGroup == false. Previously they worked as как withGroup == true, what led to moving all the group when replicating, if dead critter was on the global map. 3d critters were switched off. For switching on see PLAYERS_3D in _defines.fos. Constants for operating with game constants were added(see 168 revision, http://www2.xp-dev.com/sc/change/94227/168). Specification for the reserved function Log in native scripts was changed. Now the first returned parameter is function’s name from which it was called. Rev.173 http://www2.xp-dev.com/sc/change/94227/173 Traders were added to Atoll and Redding. Barterground was moved to position 690:760 as it isn’t needed anymore in north-west region due to noPvP mode. Locations “BiX Church” and “Atom’s Church” were moved to special encounters class. Fixed rewards in some quests. Maps fixes. Biscuit on Modoc can be received only once now (as in Fallout 2). Rev.172 http://www2.xp-dev.com/sc/change/94227/172 noPvP mode was activated on some TLA maps. It will be used on the next TLA session. For switching it off on your server set global variable __NoPvpMaps=false; in script config.fos Ability of making a list of ignored players, it works similarly NameColorizing. It needs manual adding nickname of ignored player to IgnoreList.txt For refreshing the list of ignored players in game use console command ~ignorelist. Rev.171 http://www2.xp-dev.com/sc/change/94227/171 Derivative objects system for mapper was updated. When placing base object, all his derivatives are placed automatically. If one object from the group is being selected - all others are being selected too. If the prototype or position of the derivative object is changed, changes will be automatically applied by mapper or server when loading. For the example see cars, at the present time they have one derivative object – their trunk. Now when placing the car, it will be created automatically, also it will be moved with it and if base or derivative object is deleted, all the group will be deleted too. The system of moving selected objects in mapper was upgraded. Now in hexagonal system the selected objects will be moved without being tearing apart. Also the selected objects, when being moved, will stop at the map’s edge, so they won’t mix into a pile. The problem with detecting whether items in container belong to their inventory or container. Previously items were placing on the hex and if you place two containers on the same hex, all the items will stack in one container. Now it is fixed. Item::TrapValue initialization through mapper was fixed. If rewriting is performed on prototypes loading, alert is displayed. It was added for items and critters prototypes. In object’s structure in mapper was deleted field const bool Item_InContainer and added const uint UID, ContainerUID, ParentUID, ParentChildIndex Rev.170 http://www2.xp-dev.com/sc/change/94227/170 Now server doesn't block client's libraries while working. Previously you needed to stop the server to replace client's dll (Server/scripts/fonline_tla_client.dll). Rev.169 http://www2.xp-dev.com/sc/change/94227/169 Combined content of MASTER.DAT + CRITTER.DAT. Size - 201 MB! Rev.168 http://www2.xp-dev.com/sc/change/94227/168 Client and Mapper are no longer bounded with Fallout’s data files - MASTER.DAT and CRITTER.DAT. These files content is combined (excess data is deleted) and packed into fallout.dat (will be uploaded with the next update) and defined in DataFiles.cfg. Global variables string __MasterPath, __CritterPath were deleted. The configurator (FOConfig.exe) is updated accordingly fixes above. Critter’s lighting in the death moment and flat items lighting was fixed. To server/client/mapper scripts the next functions for operating with the constants (*Names.lst) were added: int GetConstantValue(int constCollection, string@+ name) – identifying constant’s value by the name; string@ GetConstantName(int constCollection, int value) - identifying constant’s name by the value; void AddConstant(int constCollection, string@+ name, int value) – adding separate constant to the collection; bool LoadConstants(int constCollection, string@+ fileName, int pathType) – loading/reloading the collection; int constCollection – collection’s number, see Constants collections in _defines.fos, also you can define your own collections; string@+ name – constant’s name; int value - constant’s value; string@+ fileName, int pathType – collection file’s name and folder path. Rev.167 http://www2.xp-dev.com/sc/change/94227/167 Bug with error of name/password in login menu if it exceeds 12 symbols was fixed. Screen centering on the player when loading map in right-angle geometry was fixed. Copying objects in Mapper from smaller map to the bigger one was fixed. Mapper hanging up when Sleep < 0 was fixed. Crashes when loading ART files were fixed. Principe of transparency defining with parameter ‘”t” was changed, now it isn’t equal to 255 – paletteIndex, but to max(R, G, B). Rev.166 http://www2.xp-dev.com/sc/change/94227/166 System of operating with items prototypes was updated (ProtoItem). Ability to add your own fields to proto class was added. New pragma ‘bindfield’ is used for this, e.g.: #pragma bindfield "const int ProtoItem::MyValue -> 400" it means creation of field MyValue of int type with offset 400 (considering thas int is 4 byte, it will occupy bytes 400, 401, 402, 403). Totally for user’s fields 500 bytes are available. Field is equal to zero as defaults, but it is possible to change the value by defining value (in the current case MyValue=111 or MyValue=SkillBigGuns) in proto file (.fopro), number (if it contains only numbers) or path to the file (it is identified by the presence of ‘/’ or ‘\’ symbols). For now fields which are not used by the engine are taken out to scripts, see _defines.fos Item prototypes fields. Changes in structure ProtoItem. All next methods are deleted uint8 GetType() const uint16 GetProtoId() const bool IsGrouped() const bool IsWeared() const bool Container_IsGroundLevel() const List of new fields which are registered in the engine (part of them is renamed, some were deleted) http://pastebin.com/8R4QkP3h The other fields are registered with #pragma bindfield in _defines.fos. Now all items can stack and wear out, for this Boolean fields are added to the prototypes bool ProtoItem::IsStackable bool ProtoItem::IsDeteriorable Item type ITEM_MISC_EX was deleted, it is combined with ITEM_MISC (miscex.fopro is deleted). Vehicles are taken out to separate type ITEM_CAR (car.fopro was added). Also now user can define any type numbers for the items. Former fields uint MiscEx_StartVal0..9 of the start values for Item::Val0..9 were moved to common area named StartValue0..9, and with these values Item::Val0..9 are initialized. Metod bool Item::IsCar() const was deleted, instead of it use GetType()==ITEM_CAR. The next methods are renamed bool Item::IsGrouped() const -> bool Item::IsStackable() const bool Item::IsWeared() const -> bool Item::IsDeteriorable() const The next fields are renamed uint16 Item/ItemCl::BrokenWear -> Item/ItemCl::Deterioration uint16 Item/ItemCl::CarDeteoration -> Item/ItemCl::CarDeterioration uint8 MapperObject::Item_DeteorationFlags -> uint8 MapperObject::Item_BrokenFlags uint8 MapperObject::Item_DeteorationCount -> uint8 MapperObject::Item_BrokenCount uint16 MapperObject::Item_DeteorationValue -> uint16 MapperObject::Item_Deterioration Mechanism of affiliated objects was moved for common use. Previously it was available only for vehicle’s trunk. One object can have up to five derivatives. Numbers of the derivative objects are defined in uint16 ProtoItem::ChildPid_0..4. By creation of base object, derivatives are created automatically. For now Mapper doesn’t create affiliated obkects automatically, but it will be fixed in further. For setting the place of situation, special field ChildLines_0..4 is used (former MiscEx.Car.Bag_0..1, see below by recording format). Also it is possible now to define automatic blocking for any objects, not only for vehicles – field BlockLines (former MiscEx.Car.Blockers). Recording format for Child/BlockLines – XYXYXY..., where X is direction number (0..5/7), Y is the amount of steps (1..9) in this direction (previously for vehicle’s trunk for another recording format - XXXX...). Maximum amount of steps for BlockLines – 50, for ChildLines – 6. For operating with derivative objects use methods Item@+ Item::GetChild(uint childIndex) const (бывшая Item@+ Item::CarGetBag(int numBag)) bool Map::CheckPlaceForItem(uint16 hexX, uint16 hexY, uint16 pid) const (bool Map::CheckPlaceForCar(uint16 hexX, uint16 hexY, uint16 pid) const) Fields renaming affected lots of scripts, be attentive. Old proto format is converted to the new one automatically, but Object Editor (ObjectEditor.exe) still operates only with old format. It will be fixed soon. To replication.fos and entires.fos scripts the influence of right-angled geometry was added. Script main_planes.fos is formatted as a separate module. All pragmas were move to the end of _defines.fos. Drop of FPS when switching on view/attack borders was fixed. Rev.165 http://www2.xp-dev.com/sc/change/94227/165 Fix for the ASCompiler. Rev.164 http://www2.xp-dev.com/sc/change/94227/164 Changed ASCompiler output format to “filename(linenumber) : message”. Such output is recognized by a number of IDEs and allow jumping to the code by a double-click on the output line. Rev.163 http://www2.xp-dev.com/sc/change/94227/163 Tabs management system was added to Mapper. Now one tab can have numerous subtabs. Tabs names and its filling is defined in mappers scripts. But some tabs already have initial filling. Item – items prototypes by defaults (items.lst); Tile – tiles by default, search is performed in ‘art/tiles/’; Crit – critters prototypes by defaults (critters.lst); Fast – displays often used objects, initial state is defined in scripts (InitializeTabs in mapper_main.fos); Ign – Ignore, shows ignored objects which are not shown on the map; Inv, Msg, Map – special tabs which have nothing to do with the mechanism, but it is possible to change its name throug TabSetName (see below). The tab can have subtabs only of one type – tiles, critters or items (displayed in priority order). For items and critters the subtab’s name is chosen by user, for the tiles it is performed automatically. The lowest subtab “all” contains all prototypes (or tiles) on a list above. For activation the menu of tab choosing – perform a double click on it. If positions are numerous then use mouse wheel for navigation (scroll speed: normal – 4, with pressed shift – 8, with pressed ctrl – 20, with pressed alt – 50). For tabs management use scripts, functions Tab* uint TabGetTileDirs(int tab, string@[]+ dirNames, bool[]+ includeSubdirs) uint TabGetItemPids(int tab, string@+ subTab, uint16[]@+ itemPids) uint TabGetCritterPids(int tab, string@+ subTab, uint16[]@+ critterPids) void TabSetTileDirs(int tab, string@[]+ dirNames, bool[]+ includeSubdirs) void TabSetItemPids(int tab, string@+ subTab, uint16[]@+ itemPids) void TabSetCritterPids(int tab, string@+ subTab, uint16[]@+ critterPids) void TabDelete(int tab) void TabSelect(int tab, string@+ subTab) void TabSetName(int tab, string@+ tabName) int tab – tab’s number (see Tabs in _mapper_defines.fos); string@[]@+ dirNames – folder’s names for tiles searching; bool[]@+ includeSubdirs – turn on search in subfolders; string@+ subTab – subtab’s name; uint16[]@+ itemPids – item’s prototype numbers array; uint16[]@+ critterPids - critters’s prototype numbers array; string@+ subName – tab’s name. Global variable was added bool __SplitTilesCollection = true It defines whether tiles should be divided into groups in the folders. The group is defined as a string in the file’s name before the first number (e.g. abc12.png - group abc), if the number is absent, then group is defined as '<other>'. In connection with these changes, the global functions are deleted uint GetFastPrototypes(uint16[]@+ pids) void SetFastPrototypes(uint16[]@+ pids) Other updates. Fixed incorrect work of server/client which caused some bugs. Global variable int __GeometryType was added to _defines.fos for the indication of chosen geometry. See constants in _defines.fos Geometry. Depending on its value, tab with Tactics and Arcanum is added. Ability to work with file names which include spaces is added. When loading ART files, it is possible to flip them vertical or horizontal. Parameters in the file name - ‘v’/‘V’ and ‘h’/‘H’. When loading SPR file, if you define in changing color parameter – layer’s number -1, then the modificator will be applied to all four layers. Rev.162 http://www2.xp-dev.com/sc/change/94227/162 Quest perks “Midnight Child”, “Nosderatu Blood” were added (Modoc, “Night’s tender”). Now new home position is set for NPC-travelers (Devin, Eli) when they enter new location. Female characters now can finish quest of removing childkiller status. Allies HP and resistances were increased in “Dangerous hunt” quest. Also a simple dialogue is added to them. The forged letter is now removed from the inventory when finishing quest “Forgery”. Edvin in Klamath tells with a popup phrase when starting gathering items. A delay was added to the prisoner giving the cues in “Ernst Telman” quest. Ability of intimidating the NPC visitor if it’s a woman was deleted in quest “Wrath”. Barcus now reacts with popup phrases to the futher meetings with the player who have done quest “Amnesty for Joshua”. Upon the receiving lieutenant rank of Vaultcity’s Guard, player is awarded with a black combat armor. In “Diplomatic Courier” quest time (24 hours) which Sheiman takes for the thoughts now is calculated correctly. Upon finishing this quest, player receives +1 reputation in NCR. Sell price of the buggy which player receives upon finishing the quest in NCR was set to zero. Dialogue launch when player uses an antidote in quest “Poisoned Regulator” in Redding was fixed. Players who gained Vaultcity citizenship now can trade with Randal with no restrictions. Reputation calculation in quests “Real Cowboy”, “Hub Bibliography” in NCR was fixed. If player refuses the reward in “Hub Bibliography” quest, he gains +2 reputation (was +1) when he delivers 5 books. Increasing raider’s resistances and skills every new attack on NCR was switched off. Ability of crafting and buying chitin armor was added. Giant beetles drop chitin. Items with ITEM_GAG flag deletion upon player’s death was fixed. Rev.161 http://www2.xp-dev.com/sc/change/94227/161 Ability to customize game geometry was added, either the support of isometric projection with quadrangles was. For customization use global variables bool __MapHexagonal – isometry type: true - hexagonal, false - quadrangular; int __MapHexWidth – hex width; int __MapHexHeight – hex height; int __MapHexLineHeight – hex line height; int __MapTileOffsX/Y – ground tiles offset; int __MapRoofOffsX/Y – roof tiles offset; int __MapRoofSkipSize – amount of hex per one roof tile (necessary for its correct hiding); float __MapCameraAngle – 3d model rendering angle; bool __MapSmoothPath – path smoothing when moving; string __MapDataPrefix – path and prefix for the geometry files. Operational sprites for geometry are situated in art/geometry/. Quadrangular isometry use 8 directions, hexagonal – 6. In script config.fos in function InitializeGeometry(), necessary adjustments for 3 games (Fallout1/2, Fallout Tactics and Arcanum) are added. This function can be called in server, client and mapper scripts, as all three of them need geometry information. Global variables uint __LookDir4, uint __LookSneakDir4 were added for 8-directional geometry. Fixed Tactics SPR files loading. Mode MODE_NO_TALK was added. It affects ability to talk and appearance of the icon in the context menu. Double click on hex, affecting avatar’s moving, was fixed. Creation of descriptions for critters prototypes (FODLG.MSG) with high identifiers was fixed. Image of elephant gun was added in 3d. Rev.160 http://www2.xp-dev.com/sc/change/94227/160 Fixed a bug with server and client communication. Fixed a bug with wrong sprites display. Rev.159 http://www2.xp-dev.com/sc/change/94227/159 Documentation's update, mistakes fixes. Rev.158 http://www2.xp-dev.com/sc/change/94227/158 Script start_server_client.fos was renamed to config.fos and now it isn't simply pasted into function start(), but presented as a separate module with function InitializeGame(). Macros for operating with time were moved from _macros.fos to separate module _time.fos. Slight fix of drugs.fos. Rev.157 http://www2.xp-dev.com/sc/change/94227/157 Errors messages in server log when operating with functions GetPlayerName/GetPlayerId were removed. Also GetPlayerName returns null now, if the player wasn't found. Bugs of reputation calculation were fixed. Rev.156 http://www2.xp-dev.com/sc/change/94227/156 Ability to affect the colors when loading Tactics sprites was added. To make color shift, define necessary values in file name’s parameters (“$”). Format: fileName$[index,r,g,b]animName.spr (can be any amount of shifts […]) where index – body part’s number (0 - miscellaneous, 1 - skin, 2 -hair, 3 - armor); r,g,b – color shift for the each component, can be negative Example: someSprite$[2,50,-30,-20]anim1.spr – load sprite someSprite.spr, with animation anim1 and hair’s color shift in RGB (50,-30,-20). Additional flags for operating with color’s shift were added for Tactics critters (_animation.fos, animation.fos). Use macros ANIM1_COLOR_SKIN(index), ANIM1_COLOR_HAIR(index), ANIM1_COLOR_ARMOR(index) for values defining. Index can take on value from 0 to 15, appropriate to it values of color shift look in array colorOffsets of animation.fos script. For ability testing you can use text function void ColorOffset(Critter& cr, int skin, int hair, int armor) in test.fos. Rev.155 Some native structures were fixed. Rev.154 http://www2.xp-dev.com/sc/change/94227/154 AngleScript is updated to revision 822. Ability of sorting is added to scripts arrays Ascending sort void array::sortAsc() void array::sortAsc(uint index, uint count) Descending sort void array::sortDesc() void array::sortDesc(uint index, uint count) For user’s classes sorting realize opCmp method http://www.angelcode.com/angelscript/sdk/docs/manual/doc_script_class_ops.html Vehicle animations on the global map and item’s animations in Mapper are fixed. Some points in operating with critter’s animations are fixed (animation.fos). Global variable __GmapActive is fixed. Global variable for setting min. offline time after that client will completely exit from the game was added. uint __MinimumOfflineTime = 180000; // 3 minutes Rev.153 http://www2.xp-dev.com/sc/change/94227/153 Additional constants for operating with Chosen's actions were updated (Get/SetChosenActions, for CHOSEN_USE_ITEM). Rev.152 http://www2.xp-dev.com/sc/change/94227/152 Additional constants for operating with Chosen's actions were added (Get/SetChosenActions). Rev.151 http://www2.xp-dev.com/sc/change/94227/151 Bugs with incorrect files's names path detecting were fixed. Rev.150 http://www2.xp-dev.com/sc/change/94227/150 3d models loading was fixed. 3d models rendering to sprites was fixed. Critters animations were fixed (death in 2d and 3d modes). Shift calculation for some models was fixed. SAY_DIALOG/SAY_APPEND mechanics was fixed. (by Atom) Server’s config loading in Mapper was fixed. (by Atom) File HashNames.lst was added to client. Names of files which contain parameters (‘$params’) should be entered in it. If you use such names in the prototypes, Mapper or scripts GetStrHash), then include this name to this list. Format of writing: [any number] [file’s name] [end of string] E.g. 0 art\scenery\BrazureFire$t.ART 0 art\scenery\BrazureFire$t3.ART In further it is possible to detect and transmit such names automatically, but for the present use this system. Roof disappearing if it is situated in odd hex in two axis. Rev.149 http://www2.xp-dev.com/sc/change/94227/149 Documentation was updated. Some fixes in Arroyo (Minoc’s quest about raiders). Usage mode was added for sledgehammer and supersledge (for resources mining). Guard lib was brought into common standard of scripts formatting. Rev.148 http://www2.xp-dev.com/sc/change/94227/148 Two reserved variables were added to HLSL effects float AnimPosProc – current animation’s per cent 0%..100%, [0,1); float AnimPosTime – current animation’s time in seconds. Client’s hanging under certain circumstances was fixed (e.g. receiving item’s data when player in process of moving between maps). Dump generation when closing server application without stopping was switched off. Generation of unnecessary messages to log in function animation_ animation.fos was fixed. Rev.147 http://www2.xp-dev.com/sc/change/94227/147 Parameters for critter’s movement controlling were added. Time for moving in milliseconds: #define ST_WALK_TIME (117) #define ST_RUN_TIME (118) Ability to move #define MODE_NO_WALK (539) #define MODE_NO_RUN (540) If these parameters are equal to zero, then data is taken from CritterTypes.cfg. Loading of some ART files was fixed (Arcanum). Ability of specifying special image processing was added. Palette elements will be transparent depending on its index in the palette (alpha = 255 – index). To chose this loading type - use symbol “t” (or “T”) in file name parameters. E.g. ‘filename$t.art’; also you can combine with palette, e.g. ‘filename$1t.art’. Ignoring of spec.symbol “/r” was additionally added for splitEx function. In functions void DrawSprite(... bool applyOffsets) if applyOffsets == true there were additionally added shifting of width/2 and height of the image. Unnecessary fo3d files were deleted. Palette influence for Arcanum critters was fixed. Rev.146 http://www2.xp-dev.com/sc/change/94227/146 One more fix of incorrect critter displaying. Rev.145 http://www2.xp-dev.com/sc/change/94227/145 Quest “Communicated” was added (Redding). Caravaneers phrases were fixed, now they tell correct departure dates. Quest “Honomer’s bodyguard” was added (San Francisco). Retina scanner in GECK town was fixed. Slight fixes of the hubbolog’s map in San Francisco. Special result function for skill rise calculation through a dialogue was added.(dialog@r_SkillUp) The script for quest locations creating was fixed (hostile_location_quest.fos), allies and enemies scripts now work correctly. Resetting of a quest variable when deleting the location was fixed. Script for realization a dialogue between several npc’s with popping up phrases was added. (npc_dialog.fos) Story line implementation was continued. Maps numeration in the location with mutants was fixed (quest string “Guardian”). Rev.144 http://www2.xp-dev.com/sc/change/94227/144 Critter’s hitpoints regeneration was moved to scripts, you can look realization in function critter_idle main.fos. Global function for critters sampling from the global map was added to server scripts. uint GetGlobalMapCritters(uint16 worldX, uint16 worldY, uint radius, int findType, Critter@[]@+ critters) Additionally to methods bool Map::GetNearEntireCoords(int& entire, uint16& hexX, uint16& hexY) const bool Map::GetEntireCoords(int entire, uint skip, uint16& hexX, uint16& hexY) const were added methods bool Map::GetNearEntireCoords(int& entire, uint16& hexX, uint16& hexY, uint8& dir) const bool Map::GetEntireCoords(int entire, uint skip, uint16& hexX, uint16& hexY, uint8& dir) const which return direction. Global variable which specifies if the password in the client’s login window should be hidden was added bool __HidePassword = true Incorrect critters creation in Mapper was fixed. Displaying of switching critter’s type 3d->2d on the client’s side was fixed. Rev.143 http://www2.xp-dev.com/sc/change/94227/143 Fixed critters loading in Mapper (141 revision's bug). Rev.142 http://www2.xp-dev.com/sc/change/94227/142 Fixed server loading (the previous revision bug). Rev.141 http://www2.xp-dev.com/sc/change/94227/141 Mechanism for identifying critter’s animation file name was added. Now you can operate with critter’s animations from Tactics and Arcanum without any conversions. All data files which you need for enabling one or another critters are cited in CritterTypes.cfg comments. The next critters were added to SDK: Humanoid, Behemoth, MTT, Pacification. They are repacked to the separate archive ftrobots.bos. But all available critters from Tactics and Arcanum are added to CritterTypes.cfg with correctly defined parameters for them (by Tabloid), so you can enable the needed data files and use the critters. All animations are transformed to the general appearance (ANIM2_2D*, ANIM2_3D* -> ANIM2*). The functional for operating with them is moved to scripts. In some places where these values are used, numeric literals are replaced by string constants, which description you can find in DefineNames.lst. Fixes were made in weapons prototypes (weapons.fopro) and fo3d templates for 3d critters from VanBuren (_VBHuman.fo3d, _VBMob.fo3d, _VBWeapon.fo3d). Now three sets of primary and secondary animations are used for critters, for three condition types – alive, knockout, dead const uint Critter/CritterCl::Anim1/2Life/Knockout/Dead (const uint Critter/CritterCl::Anim1/2 were deleted). These values are used for animations as default. Pay attention that Anim1 additionally is summed up with animation of the weapon in the active slot, bit-by-bit OR. It is necessary for assignation certain values on continuing basis (e.g. sitting, lying position). For changing these values the next method is used void Critter::SetAnims(int cond, uint anim1, uint anim2) int cond – defines the position to apply values to (COND_* in _defines.fos), if null it is applied to all three; uint anim1, anim2 – animation values. Deleted const uint8 Critter/CritterCl::CondExt Accordingly all COND_*_* for them are deleted. Now position is differentiated by the animations. In connection with it, the next methods specifications were changed void ToDead(uint anim2, Critter@+ killer) bool ToKnockout(uint anim2begin, uint anim2idle, uint anim2end, uint lostAp, uint16 knockHx, uint16 knockHy) void EventKnockout(uint anim2begin, uint anim2idle, uint anim2end, uint lostAp, uint knockDist) void EventSmthKnockout(Critter& fromCr, uint anim2begin, uint anim2idle, uint anim2end, uint lostAp, uint knockDist) uint anim2begin, anim2idle, anim2end – animations of the knockout begging, staying in it and coming to yourself. Standard macroses are defined for the transfer KNOCKOUT_ANIM2_DEFAULT, KNOCKOUT_ANIM2_STUNNED (in _animation.fos). Also Mapper operates now not with CondExt, but with Anim1/Anim2 for the current Cond. Global variables for client/mapper for defining combat mode animations were added uint __Anim2CombatBegin = ANIM2_BEGIN_COMBAT uint __Anim2CombatIdle = ANIM2_IDLE_COMBAT uint __Anim2CombatEnd = ANIM2_END_COMBAT The next reserved client/mapper functions were added (animation.fos): - string@ critter_animation(int animType, uint crType, uint anim1, uint anim2, uint& pass, uint& flags, int& ox, int& oy) Function which is called when loading necessary animation. Returned value - file’s path and name. int animType – critter’s animation type (new parameter which is set in CritterTypes.cfg); uint crType – critter’s type; uint anim1, anim2 – animation’s indexes; uint& pass – function call’s number, is changed by the user. If animation loading failed and this parameter was changed, then function will be recalled (in certain cases you should try to load different files for the one animation); uint& flags – flags, at the present moment two of them – to take the first or the last frame from the animation ( Anim loading flags in _animation.fos); int& ox, &oy – shifts for the animation, in pixels. - bool critter_animation_substitute(int animType, uint crTypeBase, uint anim1Base, uint anim2Base, uint& crType, uint& anim1, uint& anim2) If animation loading failed (and uint& pass wasn’t changed), then this function is called for animation substitute detection (e.g. left hook can be replaced by the right hook). true is returned if the substitute was found (engine also additionally checks if crType, anim1, anim2 were really changed), false – no substitute, animation won’t be loaded and played. int animType – see above; uint crTypeBase, anim1Base, anim2Base – base critter’s and animation’s type, which were at the start; uint& crType, &anim1, &anim2 - critter’s and the current animation’s type for the substitution - bool critter_animation_fallout(uint crType, uint& anim1, uint& anim2, uint& anim1ex, uint& anim2ex, uint& flags) As Fallout’s animations are still loaded by the engine (additional shifts calculation and animations pasting together is needed), for determining animations conformity this function is called, i.e. instead of critter_animation for fallout’s animations this function is called. true is returned if animation is presented, false – not. Method bool Critter::IsAnim3d() const is deleted, use instead of it the global function int GetCritterAnimType(uint crType) values look in Anim types _animation.fos. Critters actions sounds now are played in the scripts, in animation_2d/3d_process. New mechanism for sound file name identification was made, look PlayAnimSound in animation.fos. Critters prototypes were divided into fallout’s (fallout2.fopro) and TLA's (tla.fopro). Bug with roof’s non-transparency in Mapper was fixed. Name indication of chosen critter or tile prototype in mapper was added. Format fo3d now recognizes named constants DefineNames.fos, namely for modificators Mesh, Subset, Layer, Value, DisableLayer, DisableSubset, Texture, EffDef (для Dword), Anim, AnimSpeed, AnimEqual. Global server variable for determining call frequency was added GLOBAL_PROCESS_MOVE uint __EncounterTime = 5000 Global client variable for determining frequency of foolish trick animation call was added uint __CritterFidgetTime = 50000 is deleted using formula Random(__CritterFidgetTime, __CritterFidgetTime * 2) Item prototype’s parameter was deleted bool ProtoItem::Weapon_RequiresActivation now if animation doesn’t exist, it is just not played. Parameters uint16 MapperObject::Scenery_ToMapX/Y were deleted, in mapper also. Moving between locations is performed by entery points. In weapons prototypes types of action animations were substituted from numeric by string constants (accordance look in DefineNames.lst). Appropriate changes were performed in ObjectEditor. Client functions PlaySound andPlayMusic now return bool, signalizing if file was found or not. Global functions for server/client/mapper which return appropriate values from CritterTypes.fos were added uint GetCritterAlias(uint crType) string@ GetCritterTypeName(uint crType) string@ GetCritterSoundName(uint crType) Mapper’s scripts were moved to server’s scripts folder. Also the whole set of functions for operating with CritterTypes.fos was added to Mapper bool IsCritterCanWalk(uint crType) bool IsCritterCanRun(uint crType) bool IsCritterCanRotate(uint crType) bool IsCritterCanAim(uint crType) bool IsCritterAnim1(uint crType, uint anim1) int GetCritterAnimType(uint crType) uint GetCritterAlias(uint crType) string@ GetCritterTypeName(uint crType) string@ GetCritterSoundName(uint crType) Specifications of client’s reserved functions were changed animation2d_process, animation3d_process parameter bool animateStay was added to the beginning. It indicates if any action is performed now (false) or stand animation (true). Reaction for global map’s interface buttons pressing when the size of map’s area (GmapMap) covers the buttons area was fixed. Bug with incorrect loading/saving maps in which script’s or function’s name consists of spaces was fixed. Bug with potential server crashing when using AI_PLANE_MISC was fixed. Rev.140 http://www2.xp-dev.com/sc/change/94227/140 Some robots from Fallout Tactics (look the next revision). Rev.139 http://www2.xp-dev.com/sc/change/94227/139 The next quests were added in San Francisco: “Introduction into Hubbology”, “Hub’s justice”. Transport to Atoll is available for the players who are doing “Introduction into Hubbology” quest (npc is in the docs area of San Fracisco); Automatic transfer to the command center of GECK city citizens when entering the map was removed. Now citizens can choose spawn point. Quest location “Hubbologists laboratory” was added (author JunoReactor). Rev.138 http://www2.xp-dev.com/sc/change/94227/138 Arroyo: Quest “Evidence of Chosen’s death” was added (Todd Stewart); Two courier quests were added (Cassidy, Todd Stewart); Encounter fixes: Fixed bugs of the 120 revision; Fixed random encounters where normally aggressive npc’s didn’t attack after fighting with the other npc’s; Fixed bug with unlimited experience in Den; Fixed mistakes in NCR quests cooldowns; Slight dialogues fixes. Rev.137 http://www2.xp-dev.com/sc/change/94227/137 Ability to specify the layer of tiles/roof to organize correct query of displaying. Totally there can be 5 layers, from 0 to 4. You can switch between them with pressing shift and pressing appropriate key (from 0 to 4). Indication of the current layer is specified in the map’s supplemental information (in upper right corner). Specification of MapperMap AddTile/AddTileName methods was expanded, also layer parameter was added void AddTile(uint16 hexX, uint16 hexY, int offsX, int offsY, int layer, bool roof, uint picHash) void AddTileName(uint16 hexX, uint16 hexY, int offsX, int offsY, int layer, bool roof, string@+ picName) Functions for hash calculation by file’s name and inverse function were added to the native scripts const char* (*GetNameByHash)(uint hash); // Get name of file by hash uint (* GetHashByName)(const char* name); // Get hash of file name The functional for operating with the chosen’s actions was added to the client’s scripts. For taking or specifying the actions use functions uint GetChosenActions(uint[]@+ actions) void SetChosenActions(uint[]@+ actions) This array consists of blocks of seven variables, the first is the type, the other are the parameters. Values of types and parameters look in _client_defines.fos Chosen actions. Argument with the location was added to the reserved function for checking the entries into this location bool entrance_FuncName(Location& loc, Critter@[]& critters, uint8 entrance) The next events were added for critters CRITTER_EVENT_USE_ITEM_ON_ME bool EventUseItemOnMe(Critter& whoUse, Item& item) CRITTER_EVENT_USE_SKILL_ON_ME bool EventUseSkillOnMe(Critter& whoUse, int skill) In the calls stack it is situated between CRITTER_EVENT_USE_* and the global handler. That is CRITTER_EVENT_USE_ITEM for the player + CRITTER_EVENT_SMTH_USE_ITEM for those who can see the player. CRITTER_EVENT_USE_ITEM_ON_ME The global handler critter_use_item. and CRITTER_EVENT_USE_SKILL for the player + CRITTER_EVENT_SMTH_USE_SKILL for those who can see the player. CRITTER_EVENT_USE_SKILL_ON_ME The global handler critter_use_skill. The supplemental information (current hex, fps, etc.) in Mapper is presented in the upper right corner. Bug of 135 revision with transparent tiles when placing them was fixed. Data connected with unfinished mechanism of textured grid was deleted. Rev.136 http://www2.xp-dev.com/sc/change/94227/136 Maps converted to text format. Rev.135 http://www2.xp-dev.com/sc/change/94227/135 Now only text format is used for maps, it is binary only for loading. All maps are converted to the text format (they will be uploaded with the next revision). Extension of this format is “fomap”. To convert your own maps to the new format – execute in Mapper ““#ConvertMaps”, then you should manually or using Mapper set required values in Time, NoLogOut, ScriptModule, ScriptFunc fields, which values you can see in file Maps.cfg. File Maps.cfg is not used anymore, locations prototype numbers are defined opposite to their name in file Locations.cfg, as in the most cases the one map prototype is used for the one location. According to these changes, the next MapperMap methods are deleted: uint GetTile(uint16 tileX, uint16 tileY, bool roof) const void SetTile(uint16 tileX, uint16 tileY, bool roof, uint picHash) string@ GetTileName(uint16 tileX, uint16 tileY, bool roof) const void SetTileName(uint16 tileX, uint16 tileY, bool roof, string@+ picName) And the next are added: uint GetTilesCount(uint16 hexX, uint16 hexY, bool roof) const void DeleteTile(uint16 hexX, uint16 hexY, bool roof, uint index) uint GetTile(uint16 hexX, uint16 hexY, bool roof, uint index) const void AddTile(uint16 hexX, uint16 hexY, int offsX, int offsY, bool roof, uint picHash) string@ GetTileName(uint16 hexX, uint16 hexY, bool roof, uint index) const void AddTileName(uint16 hexX, uint16 hexY, int offsX, int offsY, bool roof, string@+ picName) Also the next fields are added: const int WorkHexX const int WorkHexY int Time bool NoLogOut string ScriptModule string ScriptFunc The next methods are deleted (as their technology is not good enough for now): string@ GetTerrainName(uint16 tileX, uint16 tileY) cons void SetTerrainName(uint16 tileX, uint16 tileY, string@+ terrainName). Function bool SaveMap(MapperMap@+ map, string& fileName, int pathType, bool text, bool pack) now looks as bool SaveMap(MapperMap@+ map, string& fileName, int pathType). The ability to transmit commands /text /pack when saving by the console is deleted respectively. Several functions for operating with map’s fields were added to mapper script (you can do this procedure simply editing necessary field in the map’s file with text editor): #MapTime value – map’s time in minutes; #MapNoLogOut value –possibility to log out on the map; #MapScriptModule moduleName – script, module’s name; #MapScriptFunc funcName – script, function’s name. Now it is possible to place lots of sprites on one hex. Be attentive, fallout’s tiles have the same size and if you place two tiles on the same hex, you won’t see it (only if you select it , it will be less transparent than the others). Take it into account when you place or copy-paste tiles. Function #ClearTiles can help you with this problem, it deletes superfluous tiles from the hex. So, if you operate with fallout’s tiles and you don’t need several tiles on the same hex, execute this script when you finish work. Also you can place tiles on every hex, not in two. Ability of shifting is added for tiles. To produce tile shift just make the same operations as switching between tiles, but additionally pressing shift. Also you can use the same shift procedure for items. To cancel shift, press Alt with Shift and move objects. Fixed 130 revision’s bugs. Fixed bug with absence of shifting in fofrm with one sprite. Fixed bug with error in loading sprites in scripts (LoadSprite), which caused several other bugs. Remained ini files were formatted. Rev.134 http://www2.xp-dev.com/sc/change/94227/134 Config was uploaded by mistake. Take into accont, don't use config file from 132 and 133 revisions, admin pass is "hh" there. Rev.133 http://www2.xp-dev.com/sc/change/94227/133 Redding maps fixed, quest NPC were added. Rev.132 http://www2.xp-dev.com/sc/change/94227/132 Fixed "Anger" quest, the missing dialogue was restored, now it can be finished. Added quest "Forgery". (VC, Linnet) Rev.131 http://www2.xp-dev.com/sc/change/94227/131 New quests "Anger", "Ernst Telman" were added. (VC, Linnet) Fixed bug in VC guard's AI scripts. Fixed mistakes in quest “Amnesty for Joshua” dialogues. Ability to cancel their service for mercs/companions was added if the owner exits from location to the global map. Rev.130 http://www2.xp-dev.com/sc/change/94227/130 Support of graphics files SPR, TIL, ZAR from Fallout Tactics was added. Support of data files BOS from Fallout Tactics was added (works as ZIP archieve). For loading certain animation from SPR files, state it in the name after “$” sign. E.g. loading CrouchAttackClubSwing animation from file Mutant.spr - “Mutant$CrouchAttackClubSwing.spr”. The first frame of first animation is taken without direction. Also, ability to set certain palette for ART files (graphics files from Arcanum) was added – state palette’s number (from 0 to 3) after “$” sign. E.g. to load dfmbnsba.art file with the second palette - “dfmbnsba$1.art”. First palette is taken without direction (that is 0). Operation with sprites was changed. Now all interface graphics (which is set in ini files) is represented not as one sprite, as continuously played animation. Functional for operation with currently drawn sprites on the map was added to the native client’s and mapper’s scripts. Structures: struct Sprite – displayed sprite; struct SpriteInfo – additional information about the sprite. Functions: Sprite* (*GetDrawingSprites)(uint& count); - currently drawn sprites, if no sprites (on the global, menu), then NULL is returned and count == 0; SpriteInfo* (*GetSpriteInfo)(uint sprId); - getting additional information about certain sprite; uint (*GetSpriteColor)(uint sprId, int x, int y, bool affectZoom); - getting pixel’s colour, with the ability of taking zoom into account; it isn’t available for 3d models yet; format - ARGB; bool (IsSpriteHit)(Sprite sprite, int x, int y, bool checkEgg); - test whether the point on the display matches with the current sprite with taking zoom, transparence and egg of transparence into account (optional). The reserved native global variable GameOpt was renamed to Game. Global variables int __MouseX, __MouseY for current mouse position indication were added. Function void GetMousePosition(int& x, int& y) was deleted. Indication of opened console bool __ConsoleActive was added to client’s scripts. Bug with memory leak when rendering 3d graphics to sprites was fixed. Rev.129 http://www2.xp-dev.com/sc/change/94227/129 Added ability to use robot-guards from Sierra as bodyguards (for those who had completed quest "No-sweat job" in Navarro) Added quest "Amnesty for Joshua" (VC, Amanda) Work of teleport on special encounter "Mad scientist's laboratory" was restored. Rev.128 http://www2.xp-dev.com/sc/change/94227/128 Second stable SDK assembly. For the purpose of decreasing repository's size, assemblies will be stored in another places. Links you can find in text files. Rev.127 http://www2.xp-dev.com/sc/change/94227/127 Quest "No-sweat job" in Navarro. Rev.126 http://www2.xp-dev.com/sc/change/94227/126 Mercenaries and companions mechanism (merc.fos) was updated. Now every companion has term of service. Companions don’t meddle in player’s showdowns with NPC’s. Fixed quest “Dip.Courier”. Now it can be finished. Fixed quest “Dock’s attack”. Now it can be finished after killing 5 giant insects. Added 3 new mercs for Lo Pan. Updates NPC-travellers mechanism (traveller.fos). The first NPC-traveller was added (eli.fos). Functions which cooldowns checkup for NPCs in dialogues were fixed. When character dies, all items with flag ITEM_GAG are deleted. Fixed cooldowns for quests “Hub bibliography”, “Sick Brahmin” and in the dialogue with dr.Klaus for stimpacks and first aid kits delivery. When NPC repairs an item, ammo is ejected. Script for NPC monologues realization was added. (monologue.fos) Rev.125 http://www2.xp-dev.com/sc/change/94227/125 Fixes of password encryption in the client's files. Rev.124 http://www2.xp-dev.com/sc/change/94227/124 Fixed bug with graphics loading in the previous update. Rev.123 http://www2.xp-dev.com/sc/change/94227/123 DAT2.1 (Arcanum) files support was added. ART (Arcanum) graphic format was added. Function for operating with strings splitEx was added. Principle is the same as in split, but empty elements are not included in the result array. Also spaces/tabs/string_hyphenation are deleted from the result elements. Examples: split(“A|B||D”, “|”) -> {“A”, “B”, "", “D”} splitEx(“A|B||D”, “|”) -> {“A”, “B”, “D”} split(“A| B\t\t||D| E|F ”, “|”) -> {“A”, “ B\t\t”, "", “D”, “ E”, “F ”} splitEx(“A| B\t\tC||D| E|F ”, “|”) -> {“A”, “B”, “D”, “E”, “F”} Additional DrawSprite functions for the client and mapper were added. You can transfer true with the last argument and as the result, the shift which is stored in the current file will be added to the sprite’s position. void DrawSprite(uint sprId, int sprIndex, int x, int y, uint color, bool applyOffsets) void DrawSprite(uint sprId, int sprIndex, int x, int y, int w, int h, bool scratch, bool center, uint color, bool applyOffsets) Fixed bugs with incorrect ini settings parsing in the scripts. Rev.122 http://www2.xp-dev.com/sc/change/94227/122 Client scripts updates: For the reserved function void render_iface(uint layer) was added calling with value layer 100 to give the ability of drawing on the global map. Also the next global variables were added for operating with the global map: bool __GmapActive – whether global map is active and all the variables below are correct; bool __GmapWait – whether waiting mode of encounter affirming is active; float __GmapZoom – current zoom, don’t forget it to take into account while drawing a map; int __GmapOffsetX, __GmapOffsetY – map shift from the zero-coordinate (up-left corner); int __GmapGroupX, __GmapGroupY – player’s group coordinates; int __GmapMoveX, __GmapMoveY – destination point’s coordinates; float __GmapSpeedX, __GmapSpeedY – movement speed every 50 ms, without taking relief into account For example, calculating the current pixel group’s position - (x = __GmapGroupX / __GmapZoom + __GmapOffsetX), (y = __GmapGroupY / __GmapZoom + __GmapOffsetY). Fixed bug with hanging when drawing 3d model, occurred in the last update. Fixed missing bracket in English texts. (by Kilgore) Rev.121 http://www2.xp-dev.com/sc/change/94227/121 Added more mouse sensitivity and now you can see mouse’s speed percent in the settings. Updated FOConfig.exe. Added AlwaysRun option. Possible values for option Mouse speed were corrected. Option Sleep now can be set to -1, that means switching it off (maximum performance). Added ability of redirecting keyboard’s symbol codes input. For this, use option KeyboardRemap (in FOnline.cfg). It is performed after space – X Y X Y …, where X is the code which is substituted by Y. Code numbers - http://fonline.pastebin.com/Qy3E0qwj Interface description in default.ini is formatted and commented. (by LoadRunner) Location prototypes updates: Option max_copy was deleted. Option max_players was added. It limits the amount of players who can be on the location simultaneously. Players, who can’t enter location because of exceeding the limit will see message 904 from FOGAME.MSG {904}{}{Location is overcrowded, try to enter later.} Password encryption in server *.client. files was added. Mouse shift when switching between movement modes was fixed. Also, for more accurate work, the hex mask was added – look \Client\data\art\misc\hex_mask.png. Only red colour is taken into account and when it takes on certain value, the shift to certain direction is performed (50 – 5, 100 – 0, 150 – 3, 200 – 2). The mask is optional, you can work without it. Fixed loading/saving tiles in the maps text format. Fixed global map shifting behind screen’s edge. Registration of useless clicks in mapper when switching between windows, now isn’t performed. Fixed the animation of 3d critter standing when situating them on the map. Also now 3d critters don’t play standing animation in the critter’s list. Fixed displaying of critters which have only one direction. Fixed command ~reloadscripts. Now when you mark items for deleting (DeleteItem/DeleteItems), their quantity is saved. So, in the moment when real deleting is performed, server will delete the requested number of items. Now knockout during turn-based fight leads to immediate loosing action points, not after finishing the turn. Also, frequent checks for the necessity of finishing the turn were added at the server - if critter’s dead, critter has negative AP, critter has no more AP. Scripts: Fixed critter’s flags (Critter extra flags, _defines.fos). Fixed special encounter scripts Guardian of Forever, Mad Brahmins. Script trader.fos was formatted. Reserved function was added to client scripts, which is called with attacks void hit_aim(uint8& aim) aim value can be redefined( Hit locations in _defines.fos). Function int Critter::GetScore(uint score) was added to server scripts. Specification Critter::AddScore(int score, int val) was changed to Critter::AddScore(uint score, int val). Function for calculation the size of drawn text was added to client and mapper scripts void GetTextInfo(string& text, int w, int h, int font, int flags, int& tw, int& th, int& lines) string& text – text; int w, h, font, flags – height, width, print, flags; int& tw, int& th, int& lines – total width, height and amount of strings in the current text. Rev.120 http://www2.xp-dev.com/sc/change/94227/120 Unused encounter tables for Fallout 1 and commented original’s scripts were deleted from worldmap_init.fos; Random encounters of “beasts versus beasts” type were enabled, which were presented in the scripts, but were absent in the original. Added some new kinds of non-unique random encounters. Now, if player uses to kill NPC’s of certain group or organizations on random encounters, then they become aggressive. Vault City guard’s automatic search is deactivated. Now you need to activate the dialogue to pass through. Fixes in English dialogues versions. Maps fixes. Rev.119 http://www2.xp-dev.com/sc/change/94227/119 Fixed lots of little mistakes in dialogues; Fixed bugs in some Den and Klamath quests; Maps fixes; Duplicate dialogues with different names were deleted. Rev.118 http://www2.xp-dev.com/sc/change/94227/118 Fixed modificator's argument from Parent-0-7 to Parent0-7. Rev.117 http://www2.xp-dev.com/sc/change/94227/117 Added dialogues to Arroyo doctor and his team. Slight fixes (dialogues, maps). Rev.116 http://www2.xp-dev.com/sc/change/94227/116 Library for importing different 3d models was enabled – Assimp http://assimp.sourceforge.net/ Formats that are supported: http://assimp.sourceforge.net/main_features_formats.html Built-in one is still used for X format, for other ones – this library. If you don’t need the library, you can delete it (file Assimp32.dll), client and mapper are able to work without it. Updated mechanism of linking models and animations, now you can link any animation to any skeleton from any file. fo3d format changes: Modificator ModelAnimation was deleted. Modificators Anim, RenderFrame, RenderFrames were expanded – now file name which consists needed animation is placed before the animation’s name (if you state “ModelFile”, then search is performed in the file of loaded model)/ Specification of indicating parent texture (Texture X Parent) was expanded. Now you can additionally state the mesh number and its part, from which the texture is taken - Texture X ParentY-Z, where X is the texture’s number, Y is mesh number, Z is mesh part number; parameters Y-Z are optional, you may don’t use them at all or you may use them partly (Parent, Parent0, Parent-5). Fixed bug with incorrect script processing when operating with Critter::ShowScreen. Fixed bug with incorrect operating and crashing when using Log function with some special symbols. Added Combat Armor 3d model (by Gray). Rev.115 http://www2.xp-dev.com/sc/change/94227/115 Added special encounter "Warehouse of lost doughnuts" (author - Ponchik). Scripts for some original special encounters (author - Cracker). Remade some prototypes. Windows without glasses in Vault's walls can be shooted through now. Slight fixes. Rev.114 http://www2.xp-dev.com/sc/change/94227/114 Maps for quests from the 113 revision. Rev.113 http://www2.xp-dev.com/sc/change/94227/113 Klamath: quests - "Worker searching", "Husband's alert", "Brahmins vaccination" (author - Ponchik). Slight fixes. Rev.112 http://www2.xp-dev.com/sc/change/94227/112 Finished appearance of random encounter "Ocean Trader". Slight maps, dialogues and graphics fixes. Added buttons for BarterGround, GECK town, Warehouse and Hell for the global map (author - Ponchik). Slight fixes. Rev.111 http://www2.xp-dev.com/sc/change/94227/111 Added additional mechanism for data files loading (dat, zip). It is necessary for loading data files loading before scripts initializing and processing start() function as some date is needed to be used before this (effects, prints and some other resourses). For adding files to loading – create DataFiles.cfg file in which you should list all necessary file names. The program searches for the content from the last to the first data file. This mechanism uses server, client, mapper. If list isn’t found then no alerts will be displayed. If one of the files from the list can’t be found or load error appears, then alert will be shown. Option PatchDatPath was deleted, loading of this file is moved to DataFiles.cfg. Rev.110 http://www2.xp-dev.com/sc/change/94227/110 Fixed model's borders calculating which caused nick or text shift above critter's head. Rev.109 http://www2.xp-dev.com/sc/change/94227/109 Fixed skin setting-up when registration 3d character. Fixed order of loaded packs (dat, zip) scanning while searching and parsing ini files. Addition to 106 revision – for stating specific keys for certain resolutions now are used not separate files with different names, but marks in the main file. At the start of the string write “resolution”, than min. width and height for starting using these options. By default these values are equal to zero. For example: "resolution 1024 768 key = value..." It means, that “key = value ...(and so on till the next keyword ”resolution”)” will be included in the final ini. Found data will be inserted in the main file as screen width grows. Rev.108 http://www2.xp-dev.com/sc/change/94227/108 Actual cash files. Rev.107 http://www2.xp-dev.com/sc/change/94227/107 SDK is switched to 3d players mode. Normal version will be restored after finishing mechanism debugging process. For switching off 3d players models – comment the next strings in Server\scripts\_defines.fos #define PLAYERS_3D // Enable 3d players #define PLAYERS_3D_NO_HEAD // No head slot #define PLAYERS_3D_VAULT_SUITE // Vault suite by default, not naked 3d updates: Fixed and reduced the size of attributes and weapons. Added missing attributes of opened pipboy. In the left hand now is displayed the item, which player has in the second slot. Armor’s models are divided between the current armor items in the such way, that gamer could see the difference. For example combat armor consists of power armor and the helmet, robes are replaced by jail suit and etc. Fixed animation playing during creating the new character in single mode. Added skin change processing in start intro and after Kitty’s haircut. Added skeleton’s skins. Added sound for men and women. Fixed sound name for critters parameter’s loading (CritterTypes.cfg, SoundName). Now characters walk slowly with double click if alwaysrun option is turned on. Rev.106 http://www2.xp-dev.com/sc/change/94227/106 Added ability to make 3d characters available to play for. To enable it (it is disabled as default) - comment certain strings in _defines.fos // #define PLAYERS_3D // Enable 3d players // #define PLAYERS_3D_NO_HEAD // No head slot // #define PLAYERS_3D_VAULT_SUITE // Vault suite by default, not naked Updated mechanism of working with ini files. Now, when searching for the keys, excess spaces and tabulations are skipped (now you can type “ key = value ”, previously was correct only variant “key=value”) Added function bool AppendIfaceIni(string& iniName), which enables additional ini files. If the name includes slashes, than the search is being performed from data root, if not - than from folder data/art/interface/. default.ini is added automatically by the engine, others you can enable in start() client function. Loading is performed sequentially from default.ini to ones enabled by user by turn. Every packed file is checked by the turn of loading, then in the folder. Global variable string __UserInterface was deleted. Fixed bug with incorrect parsing of animation indexes in fo3d file. Fixed bug with incorrect position of the egg of transparence in zoom mode. For better readability the next scripts were formatted: start_server_client.fos client_main.fos In the future this practice will be continued. Rev.105 http://www2.xp-dev.com/sc/change/94227/105 Documentation update - slight fixes. Rev.104 http://www2.xp-dev.com/sc/change/94227/104 Added structure of script array (ScriptArray) to native scripts. Added ability to client's native scripts of calling hex data - Field. Data is stored in Field* GameOptions::ClientMap, uint GameOptions::ClientMapWidth/ClientMapHeight. If map is loaded, than ClientMap != NULL, hex calling - ClientMap[hexY * ClientMapWidth + hexX]. Rev.103 http://www2.xp-dev.com/sc/change/94227/103 Added always run option - can be enabled in client's config file “AlwaysRun”. Disabled as default. Added global variables for AlwaysRun regulating: bool __AlwaysRun (as default - false) - enabling AlwaysRun ability; uint __AlwaysRunMoveDist (as default = 1) - run with click, if distance is equal or more than the value; uint __AlwaysRunUseDist (as default = 5) - run with using smth/dialogue/etc, if distance is equal or more than the value. TLA's mechanics is equal to original - always run with click, always run with using if distance is more than 4 hexes. Added parameter uint Critter::ItemTransferCount to native scripts. It stores the value of transferred items during the last transaction. Rev.102 http://www2.xp-dev.com/sc/change/94227/102 Optimized server operation (script calling) in one tread operation mode, performance increased up to 400%. Fixed bug with crash when calling Critter::Say* methods with parametr SAY_SAY_TITLE. Rev.101 http://www2.xp-dev.com/sc/change/94227/101 Changes in fo3d format, new specification was created - look this theme: http://www.fonline.ru/forum/showthread.php?t=19689 New format added new abilities of working with 3d objects - trasmission of texures, other paremeters, etc. Also added ability to render certain animation to sprites as for one frame, either for the whole animation. But the bug with cutting off the shade situated below the lowest edge of model still presents. Updated old fo3d files, also VanBuren's critters and weapon models were added. Changed effects structure, added effect for normal mapping (3D_NormalMapping.fx). Added transfer of real numbers through scripts, float __EffectValue0..9. Fixed bugs with loading 3ds files - miss of meshes except the first; crash if texture coordinates are not presented. Fixed bug in Mapper with data copying when copy-pasting a large number of objects. Fixed text centering of hexes amount in zoom mode. Rev.100 http://www2.xp-dev.com/sc/change/94227/100 Documentation update. Rev.99 http://www2.xp-dev.com/sc/change/94227/99 Updated documentation file, which was missed in the previous revision. Rev.98 http://www2.xp-dev.com/sc/change/94227/98 Added resourse gathering system; Documentation updating. Rev.97 http://www2.xp-dev.com/sc/change/94227/97 Fixes of "Night is tender" quest, now healing must work properly. Added preview from global map for GECK location. Rev.96 http://www2.xp-dev.com/sc/change/94227/96 Gecks counting on the location now affects its auto moving away and visibility separately; Parameter geck_enabled (Map::GeckEnabled) renamed to geck_visible (Map::GeckVisible). Rev.95 http://www2.xp-dev.com/sc/change/94227/95 Added global server function void SetChosenSendParameter(int index, bool enabled) which can denie transmitting parameters to client. Transmitting of all parameters is enabled by default. Rev.94 http://www2.xp-dev.com/sc/change/94227/94 Fixes of sea encounter maps. Rev.93 http://www2.xp-dev.com/sc/change/94227/93 Added sea encounters; Added posibility of an encounter while travelling on air/water transport; Player always have possibility of cancellation water/air encounter and never gains experience for that; Bug fix in mapper with incorrect editing critter's parameters. Rev.92 http://www2.xp-dev.com/sc/change/94227/92 Fixed displaying rating in pipboy. In mapper additional indication of cut sprites was added to make lines, which are needed for correct interaction, visible. Rev.91 http://www2.xp-dev.com/sc/change/94227/91 Added traffic encryption between server and client. Rev.90 http://www2.xp-dev.com/sc/change/94227/90 Fixed choosing automatically cut sprites in zoom mode. Rev.89 http://www2.xp-dev.com/sc/change/94227/89 Added parametr DrawOrderOffsetHexY for shifting order of drawing lower (Y axis). This is an analogue for recently deleted DrawPosOffsX. Fixed using car trunk. Different slight fixes. Rev.88 http://www2.xp-dev.com/sc/change/94227/88 Fixed exit from Redding; slight fixes. Rev.87 http://www2.xp-dev.com/sc/change/94227/87 Fix for weapon AP cost. Rev.86 http://www2.xp-dev.com/sc/change/94227/86 May be fixed bug with incorrect displaying of some tiles. Fixed bug with unworking elevators. Added restoration of effects when loosing a device (cause crashed e.g. with alt+tab) Rev.85 http://www2.xp-dev.com/sc/change/94227/85 Fixed bug with chat disappearing. Fixed AI bug when combat plans always finished with REASON_CANT_WALK. Rev.84 http://www2.xp-dev.com/sc/change/94227/84 Fix for DT params reading. Rev.83 http://www2.xp-dev.com/sc/change/94227/83 Safety checks for radio commands. Rev.82 http://www2.xp-dev.com/sc/change/94227/82 Fixes of some dialogues; translations of dialogues on Barterground; map fixes; fixes of encounter table; slight fixes. Rev.81 http://www2.xp-dev.com/sc/change/94227/81 Fixed another bug during moving on the global map. Fixed unplanned activating of b/w effect. Rev.80 http://www2.xp-dev.com/sc/change/94227/80 Fixed teleportation bug during moving on the global map. Rev.79 http://www2.xp-dev.com/sc/change/94227/79 Fixed bug with incorrect tear and wear and fuel consumption calculation during moving on the global map by car. Rev.78 http://www2.xp-dev.com/sc/change/94227/78 Fixed brightness output. Fixed outlining activation. Rev.77 http://www2.xp-dev.com/sc/change/94227/77 Added automatic sprite cutting. Main purpose – correct displaying of long walls. Parameter SpriteCut was added to prototypes and mapper (only for scenery) for modification. Cutting values: 0 – switched off, 1 – horizontal (X axis), 2 – vertical (Y axis). Wall blocks should be set manually , for that purpose six blocks with different corner types with visual indication were added. It is necessary for correct calculation of brightness and egg of transparence reaction. Numbers 6800..6805 at the end of Wall and Fast list. Fixed client instability after recent update. Primary indexes array for animations was expanded to the range ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789. For value changing use native means (structure CritterType in fonline.h). Support of effects (HLSL) loading with earlier version of compiler. Automatic attempt of compilation is performed after failure in compilation with the current library. Added data updating for client function GetIniStr in the start function (start) after each call of LoadDataFile. Mapper update: Fixed bug with error in loading tiles with extension not in lower case. Fixed algorithm of sprite displaying calculation (when big sprites were disappearing near the screen edge). Additional visual means for debugging: - Ctrl + Q: Corners type viewing; - Ctrl + W: Viewing the result of sprite cutting, linking them to hexes; - Ctrl + E: Viewing the sequence of sprites drawing. At the time of renewing NPC’s bag, only items which are not in inventory are repaired and reloaded. Added ability to set sprite shift in screen coordinates to prototypes. Fixed bug with double notification of quest state change. Rev.76 http://www2.xp-dev.com/sc/change/94227/76 Added quest “Night is tender” Rev.75 http://www2.xp-dev.com/sc/change/94227/75 Tables for sea encounters, slight fixes. Rev.74 http://www2.xp-dev.com/sc/change/94227/74 Source documentation. Rev.73 http://www2.xp-dev.com/sc/change/94227/73 SPECIAL calculating is moved to native scripts - fonline_tla.dll for server and fonline_tla_client.dll for client (must be situated in data\scripts). The other parameters which are used in the engine are needed generally for drawing GUI, but soon they’ll be moved to scripts too. Native scripts files are moved from data folder to scripts. Added bat-file make_tla.bat for their compilation (installation of MSVS8 is necessary). For example of use new methods for critter classes are added (IsInjured, IsDmgArm...), items (IsHtHAttack, IsGunAttack...) with pragma bindfunc. Example of linking global varieties of standard and native scripts is added (__HitAimEyes, __HitAimHead..., these global varieties are moved to scripts). Callback functions are added (to GameOptions) for item usage cost determination - GetUseApCost. For attack max range determination - - GetAttackDistantion. It further such functions will force out usage of critter parameters in the engine. These functions are binded at the stage of connecting of library to the engine (DllMainEx). For operating with the engine added the next functions (to GameOptions): CritterChangeParameter – for correct change of critter parameter, this function should be called firstly, then you can change the value. CritterTypes – index of CritterType structures where data from CritterTypes.cfg is stored. Added method to client’s critters for detection whether now is time of its move in the turn-based mode bool CritterCl::IsTurnBasedTurn() const Some logics of operating with turn-based mode is moved to the scripts - turn_based_process main.fos. Some recommended specifications for the reserved functions are changed - templates.fos. Min. time of dialogue or barter with NPC now is regulated by the global varieties __DlgTalkMinTime (now default 100 seconds) и __DlgBarterMinTime (now default 50 seconds). Range for all prototypes (maps, locations, items) is expanded to 30000. Fixed bug with incorrect drawing of minimap in the pipboy. Fixed bug with incorrect calculating of healing rate while registration. Fixes of Zerg’s special encounter. Rev.72 http://www2.xp-dev.com/sc/change/94227/72 Data library for script compilation (updated on 27 October) Rev.71 http://www2.xp-dev.com/sc/change/94227/71 Added Zerg special encounter. Fixed bug with incorrect names in Fixboy. Added function LoadDataFile to server scripts, analogue of client/mapper. Fixed mistiming of player movement on global map. Deleted function Critter::SendQuestVar, now alert about changing of local variable is automatic. Changed function specification void ShowScreen(int screenType, uint param, string& funcName) to void ShowScreen(int screenType, uint param, string@+ funcName), now can transmit both empty string or null. Rev.70 http://www2.xp-dev.com/sc/change/94227/70 Documentation is updated. Deleted incorrect splash-picture. Added urgent files for scripts autoaddition in Notepad++. Rev.69 http://www2.xp-dev.com/sc/change/94227/69 Added ability to use your own shaders for game graphics drawing. High Level Shader Language is used for this. Effects folder is situated in data\effects. After the first compilation they are cashed in the folder data\cache (in futher other different data will be cashed there). You can read specifications on the game engine effects in data\effects\ReadMe.txt. Added ability to link any effect to sprite or model in .fofrm and .fo3d (“effect=effect_name.fx”). For default effect changing, function void SetEffect(int effectType, int effectSubtype, string@+ effectName) was implemented into the client scripts. int effectType, effectSubtype – effect types look in _client_defines.fos (Subtype for fonts used font type); string@+ effectName – the name of the effect file (with extension) is in the folder data\effects. Added changing of detailization of game objects for demonstration. For activation press Alt+W, for return press Alt+Q. Added client function for map redrawing void RefreshMap(bool onlyTiles, bool onlyRoof, bool onlyLight) if all three parameters are false, than everything will be redrawed. Also these three parameters are incompatible. Fixed bug in mapper with impossibility of viewing 3d critters in prototypes table. At present time they can’t be ranged. Added ability to play sounds/music from different folders. void RefreshMap(bool onlyTiles, bool onlyRoof, bool onlyLight) If there isn’t slashes (‘/’,‘\’) in path name than search is performed in the folder sfx/music. If there are slashes, than in the root (“data/mysounds/mysound.ogg”). Rev.68 http://www2.xp-dev.com/sc/change/94227/68 Fixed bug in the ObjectEditor when damage type is saved incorrectly. Rev.67 http://www2.xp-dev.com/sc/change/94227/67 Fixed crashing when calling CritterCl::[Param/Stat/Perk/etc]Base in client scripts; Fixed error with recording Anydata of zero length (by Atom). Rev.66 http://www2.xp-dev.com/sc/change/94227/66 Fixed incorrect weapon prototype; errors in checking for special encounters; added decraft of the sand sack to fixboy; other little fixes. Rev.65 http://www2.xp-dev.com/sc/change/94227/65 Redding: finished map according to the last concept; - Garbage was returned to static locations; - Ammo craft on benches (beta-version); - Destruction of the sack using skill repair now gives use empty sack. - Entering Den message was moved to texts from script. Rev.64 http://www2.xp-dev.com/sc/change/94227/64 AngelScript updated to 732 revision. Added new methods for arrays: void T[]::insertAt(uint, const T&) – element inserting in specified position in the array; void T[]::removeAt(uint) – deleting the element by index; void T[]::insertFirst(const T&) – element inserting to the beginning of the array; void T[]::removeFirst() – deleting the first element; void T[]::insertLast(const T&) – element inserting to the end of the array; void T[]::removeLast() – deleting the last element; void T[]::grow(uint) – add elements (the sames as a.resize(length()+X)); void T[]::reduce(uint) – delete elements (the same as a.resize(length()-X)); T& T[]::first() – call of the first element of the array (the same as a[0]); T& T[]::last() – call of the last element of the array (the same as a[a.length()-1]). Also deleted all functions ArrayPushBack as the built-in array functional was expanded. All the scripts were fixed accordingly. Rev.63 http://www2.xp-dev.com/sc/change/94227/63 Added ability to start the server as a service. For registration/start use key “-service” (shortcut FOServerService.exe.lnk). For deleting use keys “-service -delete” (shortcut FOServerServiceDelete.exe.lnk). Added ability to log using function OutputDebugString. The log can be caught (even remotely) using program DebugView http://technet.microsoft.com/en-us/sysinternals/bb896647.aspx For switching it on in server and client configs option LoggingDebugOutput is added. Server/client/mapper will work normally now with incorrect active folders. At start you set the current folder of executable. Fixed bug with absence of replacement “x” by “ч” in built-in punto switcher. Fixed crash in turn based mode and incorrect work of Map::GetCritter(uint critterId). Rev.62 http://www2.xp-dev.com/sc/change/94227/62 Fixed bug with updating vehicle data on the global map. Fixed bug with system hanging while looking items quantity in game info. Fixed bug with the incorrect login/disconnect. Fixed bug with incorrect creating non-stacking items on the map in the number of >1. Fixed bug with incorrect critters gathering when path tracing (by Atom). CRITTER_EVENT_TALK now performed before checking NPC for settings which could restrict speaking with it. Added new mechanism for script garbage gathering (by Atom). For config file simplification, the next options were removed: ASGarbageTime, VarsGarbageTime. Deleted transfer of a group of critters into global map processing global_process, CRITTER_EVENT_GLOBAL_PROCESS. Also instead of transferring a group into global map processing global_invite, CRITTER_EVENT_GLOBAL_INVITE, now only the leader is transferred. Instead of picking group use Critter@[]@ Critter::GetGlobalGroup(). Because of that, specification methods were changed: bool Critter::EventGlobalProcess(int type, Critter@[]& group, ...) bool Critter::EventGlobalInvite(Critter@[]& group, ...) for bool Critter::EventGlobalProcess(int type, Critter& cr, ...) bool Critter::EventGlobalInvite(Critter& leader, ...) Reserved functions of critter event CRITTER_EVENT_GLOBAL_PROCESS, CRITTER_EVENT_GLOBAL_INVITE bool _FuncName(Critter& cr, int type, Critter@[]& group, ...) bool _FuncName(Critter& leader, Critter@[]& group, ...) for bool _FuncName(Critter& cr, int type, ...) bool _FuncName(Critter& leader, ...) Fixed bug with incorrect cooldown for hijacking, now it is equal for a normal lock. Added checking for unopenable door to the lock break script. Rev.61 http://www2.xp-dev.com/sc/change/94227/61 Fixed bug with incorrect reappraisal of item flags in Mapper. Fixed bug when player isn't notified about moved item. Rev.60 http://www2.xp-dev.com/sc/change/94227/60 Fixed bug with incorrect displaying of the rain on roofs. Rev.59 http://www2.xp-dev.com/sc/change/94227/59 Mapper's fix for correct operating with new folder and print's names. Rev.58 http://www2.xp-dev.com/sc/change/94227/58 For editing use program Bitmap Font Generator v1.12. http://www.angelcode.com/products/bmfont/ Print should have the next attributes - OEM RUSSIAN, Padding 1 (in all directions), Binary, all symbols should be placed on the one texture. All prints are moved in the separate folder “Client\data\fonts\”. For the example print FONT_COURIER_NEW_SMALL is added. Look _client_defines.fos, client_main.fos, CourierNewSmall.bmfc, CourierNewSmall.fnt, CourierNewSmall_0.png. Added function in client’s scripts of activating the clock which shows you the time signal comes to server and returns (ping). You can use it for restriction of input while waiting for server’s answer. Fixed crushing when looking players statistics on server. Fixed crushing of Dialogue Editor (by Atom). Rev.57 http://www2.xp-dev.com/sc/change/94227/57 Expanded mechanism of operating with ingame radio. Added flag ITEM_RADIO for radio. (in _defines.fos). Radio messages are now also sent to radios which are on the ground . For their identification engine sends them with color 0xFFFFFFFE (in map_message in client_main.fos). Realization is in script radio.fos (interface, mechanics), call from main.fos. Interface data is taken from default.ini (Radio*). You can edit it with using item or using science skill on it. Radio data is situated in general fields of several item types. That’s why it isn’t a good idea to use this flag with Doors, Keys, Cars, Weapons, Armors, Holodiscs. Transmitting and receiving functions are separated. For managing the next flags and range types are used (_defines.fos): Restriction of transmitting/receiving is stored in Item/ItemCl::RadioFlags, used by the engine: RADIO_DISABLE_SEND, RADIO_DISABLE_RECV. Restriction of switching radio state in в Item/ItemCl::RadioFlags: RADIO_DISABLE_SHIFT_SEND, RADIO_DISABLE_SHIFT_RECV - restriction of switching transmit/receive; RADIO_DISABLE_SHIFT_BC_SEND, RADIO_DISABLE_SHIFT_BC_RECV - restriction of changing distance range; RADIO_DISABLE_SHIFT_CHANNEL – restriction of channel switching. Range types are stored in Item/ItemCl::RadioBroadcastSend/RadioBroadcastRecv, are used by the engine: RADIO_BROADCAST_WORLD – works all over the world; RADIO_BROADCAST_MAP – works within the limits of the current map; RADIO_BROADCAST_LOCATION - works within the limits of the current location; RADIO_BROADCAST_ZONE(x) - works within the limits of “x” zones on the global map; RADIO_BROADCAST_FORCE_ALL – works everywhere regardless of the adjustments of transmitting or receiving radio/ Added support of these flags to the object editor (both engine and script ones). Added scripts uint16 ProtoItem::RadioChannel, uint16 ProtoItem::RadioFlags, uint8 ProtoItem::RadioBroadcastSend, uint8 ProtoItem::RadioBroadcastRecv. For holodisc marking added flag ITEM_HOLODISK (in _defines.fos). Holodisc data is situated in general fields of several item types. That’s why it isn’t a good idea to use this flag with Doors, Keys, Cars, Weapons, Armors, Holodiscs. Added support of this flag in object editor. Added script uint ProtoItem::HolodiskNum. Added ability to use built-in cartridge indicator for other purposes. Added the next parameters: uint8 ProtoItem::IndicatorStart – initial value, - Item/ItemCl::Indicator; uint8 ProtoItem::IndicatorMax – maximum available value (for correct calculation of the strip position); uint8 Item/ItemCl::Indicator – current value. Mechanism is considered activated if maximum value in the prototype isn’t equal to zero. Added support of editing of initial and maximum values in the object editor. Method Item::GetMapPosition for the items which are in the global map returns their coordinates. Fixed bug with system hanging while looking online statistics. Added storing up to 20 ip addresses for one account (fonline.h). Item prototype’s fields, which are equal to zero, now cannot be saved. All prototypes are resaved. Continued working on multithreading in game logics. Added ignoring of non-initialized maps or locations while loading save (NPC’s would be moved to global map, items - deleted). Fixed bug in the dialogue on BiX location. Updated abilities of GUI scripting. In script _defines.fos notes “Used in engine” are replaced by “Hardcoded”; point is the same - to show that this data is used by engine also. Corrected some specifications in template.fos of reserved functions. Rev.56 http://www2.xp-dev.com/sc/change/94227/56 Changes in craft: some new recipe's (new weapon, etc.), added workbenches in some town/military bases. Rev.55 http://www2.xp-dev.com/sc/change/94227/55 - Updated Redding maps; - Deleted unused graphics; - Added second entrance to NCR; - Some changes in NPC's inventories on encounters. Rev.54 http://www2.xp-dev.com/sc/change/94227/54 - Slight fixes in Hartman's and Shrim's dialogues (Vault City); - Fixed problem with immediate sending off caravans/patrols Ahe9mPDq; - Changed content of the quest variable for the quest "Third trial. Drill." - Restored functions for triggers t_DialogNpc and scenery s_TransitToMap. Rev.53 http://www2.xp-dev.com/sc/change/94227/53 Fixes of KotW location. Quest for oil can can be done by everybody in Arroyo now. Rev.52 http://www2.xp-dev.com/sc/change/94227/52 Fixes of Brok and Xander Church location (by VaultTec) Rev.51 http://www2.xp-dev.com/sc/change/94227/51 Fixed names loading (*Names.lst) with the dialogue editor. Changed extention of its config file. Rev.50 http://www2.xp-dev.com/sc/change/94227/50 Fixed bug with duplicating of time events. Rev.49 http://www2.xp-dev.com/sc/change/94227/49 Slight optimization of multi-threading. Rev.48 http://www2.xp-dev.com/sc/change/94227/48 Fixed error in loading of games variables values. Fixed loading of saves games in single player mode. Rev.47 http://www2.xp-dev.com/sc/change/94227/47 Time events changes. - function specification void EraseTimeEvent(uint num) changed to bool EraseTimeEvent(uint num) Return value shows whether deleting is done or the event isn't found. - Deleted the next functions: uint CreateTimeEvent(uint beginSecond, string& funcName, Critter& cr, bool save) uint CreateTimeEvent(uint beginSecond, string& funcName, Item& item, bool save) uint CreateTimeEvent(uint beginSecond, string& funcName, Critter@[]+ critters, Item[]@+ items, bool save) For migration just put the identificator to the critter or item. Added the next functions for operating with event's values: bool GetTimeEvent(uint num, uint& duration, uint[]@+ values) bool GetTimeEvent(uint num, uint& duration, int[]@+ values) bool SetTimeEvent(uint num, uint duration, uint[]@+ values) bool SetTimeEvent(uint num, uint duration, int[]@+ values) Parametr "duration" - time till the event is done in seconds. Return value means that operation is completed, error means that event wasn't found. These functions are thread-safe, 2 thread can't operate with the events simultaneously. Function GetTimeEvent blocks using (changing) of the event until the script is finished or until SetTimeEvent is called, which unblocks the event. GetTimeEvent writes value to the end of the array, SetTimeEvent rewrites it completely. When null is transmitted to values SetTimeEvent values are not changed. - Event function specification can be of two types now: uint e_FuncName(uint[]@ values) uint e_FuncName(int[]@ values) Fixed bug with crashing while loading 3ds file without texture coordinates. Rev.46 http://www2.xp-dev.com/sc/change/94227/46 Added next fuctional for operating with files (class "file"): - for data reading uint8 file::readUint8() uint16 file::readUint16() uint32 file::readUint32() uint64 file::readUint64() In the case of error or the end of file it returns 0. uint file::readData(uint count, uint8[]& data) If data == 0 then program read all data till the end of the file beginning from the current position. Read data is added to the end of the array. The return value shows the real amount of read bytes. - For data recording bool file::writeUint8(uint8 data) bool file::writeUint16(uint16 data) bool file::writeUint32(uint32 data) bool file::writeUint64(uint64 data) bool file::writeData(uint8[]& data, uint count) If count == 0 it records all data from an array. In the case of error it returns false. Fixed bug with incorrect output of zoom value on minimap. Rev.45 http://www2.xp-dev.com/sc/change/94227/45 Extended range of game variables: - local variable of location (LLVAR_); - local variable of map (LMVAR_); - local variable of item (LIVAR_). When using them in dialogue values are taken from: for location - current critter's location; for map - current critter's map; for item - current item in the main slot. For operating with scripts use function GetLocalVar with transmitting of needed operator. Server will delete unused variables of all types automatically. Deleted server function uint DeleteVars(uint id). Dialog editor was adapted to the last updates of game variables. Added ability to define named value (DefineNames.lst) as a value for conditions and results. Added missed translations. Translations of commit history you can find here: http://www.xp-dev.com/forum/topic/3220 Rev.44 http://www2.xp-dev.com/sc/change/94227/44 Updated format of time output in dialogue with repairer-npc; Added script for realization of npc-travellers on global map.(traveller.fos and Davine's script in sf_common.fos); Added npc-traveller explosives-seller Davine. Can be hired in GECK town; Added trade mode "cash only" MODE_BARTER_ONLY_CASH; Fixed bugs in maps structure on maps with holodiscs. Rev.43 http://www2.xp-dev.com/sc/change/94227/43 Added setting in config which defines whether to bind logic threads to the core or let OS do it. In default it is enabled (1) 1. If zero then operating system automatically manage threads between cores, else affinity thread per core LogicThreadSetAffinity=1 Continued work on multi-threading of game logics. Rev.42 http://www2.xp-dev.com/sc/change/94227/42 Fixed crashing under certain conditions; Fixed cycle counting per second. Rev.41 http://www2.xp-dev.com/sc/change/94227/41 Fixed bug connected with the last update. Rev.40 http://www2.xp-dev.com/sc/change/94227/40 Multi-threading of game logics is now supported. You can read about this in details on the forum; Fixed path of recording/reading ban files; Added seconds on the globalmap clock; Decreased permissible length of text listener of channels and maps from 5 to 2 symbols; Deleted global server function void DeleteNpcForce(Critter& npc); Changed specification of method from uint Location::GetMaps(Map@[]& maps) const to uint Location::GetMaps(Map@[]@+ maps) const Now you can know the amount of maps on the location without recording them into array; Added basic server command ~log (~37). It is intended for text listening of server log. Minimum access: administrator. For adding to text listening you should transmit arguement "+", for disconnecting "-"; Fixed basic creating locations command ~addloc (~16); Upgraded basic command of looking player's id using his name ~id (~4); Changed specifications of global functions void critter_attack(Critter& cr, Critter& target, ProtoItem& weapon, ProtoItem@ ammo, uint8 aim) -> void critter_attack(Critter& cr, Critter& target, ProtoItem& weapon, uint8 weaponMode, ProtoItem@ ammo) int to_hit(CritterCl& chosen, CritterCl& target, ProtoItem& weapon, int hitLocation) -> int to_hit(CritterCl& chosen, CritterCl& target, ProtoItem& weapon, uint8 weaponMode); Added variables for weapons which state their active mode const uint8 Item::Mode const uint8 ItemCl::Mode 4 high-order bits - sight (look Hit locations in _defines.fos), 4 low-order bits - mode (0 – primary, 1 – secondary, 2 – third); Added macroses for convenience _WeaponModeUse, _WeaponModeAim, _WeaponModeMake в _macros.fos; Added returnable value of the current mode in method GetSlotProto (urgent for weapons) ProtoItem@+ Critter/CritterCl::GetSlotProto(int slot, uint8& mode) const; Renamed parametr #define ST_RATE_ITEM (102) to #define ST_HANDS_ITEM_AND_MODE (102) value stored in it: XXXX00YY, where XXXX pid - unarmed blow, and YY - mode. Changed way of the dialogue redirecting. You should use returnable value of result function or say-mode instead of uint __ForceDialog; Added specifications of functions: uint r_FuncName(...), uint dlg_FuncName(...) which are detected by server automatically; Fixed bug with moving pushed players only in one direction; Object pointers (derivatives arrays or class members)Location, Map, Critter, Item, GameVar can't be saved in global varities now. For scripts migration save their identificators (Location::Id, Map::Id, Critter::Id, Item::Id), addresing to the objects with (GetLocation, GetMap, GetCritter, GetItem). Weapons prototypes don't save curret mode of fire (in connection with multi-threading). Changed specifications of class members ProtoItem const uint8 Weapon_Skill, const uint8 Weapon_DmgType, const uint8 Weapon_Anim2, const uint16 Weapon_DmgMin, const uint16 Weapon_DmgMax, const uint16 Weapon_MaxDist, const uint16 Weapon_Effect, const uint16 Weapon_Round, const uint8 Weapon_ApCost, const uint8 Weapon_SoundId, const bool Weapon_Remove, const bool Weapon_Aim, const uint8 Weapon_CurrentUse, void Weapon_SetUse(uint8 use) const to const uint16 Weapon_Skill_F, const uint16 Weapon_Skill_S, const uint16 Weapon_Skill_T, const uint16 Weapon_DmgType_F, const uint16 Weapon_DmgType_S, const uint16 Weapon_DmgType_T, const uint16 Weapon_Anim2_F, const uint16 Weapon_Anim2_S, const uint16 Weapon_Anim2_T, const uint16 Weapon_DmgMin_F, const uint16 Weapon_DmgMin_S, const uint16 Weapon_DmgMin_T, const uint16 Weapon_DmgMax_F, const uint16 Weapon_DmgMax_S, const uint16 Weapon_DmgMax_T, const uint16 Weapon_MaxDist_F, const uint16 Weapon_MaxDist_S, const uint16 Weapon_MaxDist_T, const uint16 Weapon_Effect_F, const uint16 Weapon_Effect_S, const uint16 Weapon_Effect_T, const uint16 Weapon_Round_F, const uint16 Weapon_Round_S, const uint16 Weapon_Round_T, const uint16 Weapon_ApCost_F, const uint16 Weapon_ApCost_S, const uint16 Weapon_ApCost_T, const uint8 Weapon_SoundId_F, const uint8 Weapon_SoundId_S, const uint8 Weapon_SoundId_T, const bool Weapon_Remove_F, const bool Weapon_Remove_S, const bool Weapon_Remove_T, const bool Weapon_Aim_F, const bool Weapon_Aim_S, const bool Weapon_Aim_T Added special macros for convenience (Weapon in _macros.fos) _WeaponIsPrimaryAviable, _WeaponIsSecondaryAviable, _WeaponIsThirdAviable, _WeaponSkill, _WeaponDmgType, _WeaponAnim2, _WeaponDmgMin, _WeaponDmgMax, _WeaponMaxDist, _WeaponEffect, _WeaponRound, _WeaponApCost, _WeaponSoundId, _WeaponRemove, _WeaponAim, _WeaponModeUse, _WeaponModeAim, _WeaponModeMake Mapper updates: string@ MapperObject::PicMap/PicInv now return prototype's picturename if other isn't set up; Added const uint16 MapperMap::Width, const uint16 MapperMap::Height for storing current map sizes; Fixed function GetMapFileNames(...). Rev.39 http://www2.xp-dev.com/sc/change/94227/39 Slight fixes of quests in Den, Klamath Improved closed location in Redding Rev.38 http://www2.xp-dev.com/sc/change/94227/38 Slight fixes of quests from string "Guard"; Added services for guardsmen: doc. Troy can heal player; give stimpacks; Valery repairs items; Added universal repairing script for npc (repairer.fos). E.g. in the dialogue vc_valery.foldg 3 new special encounters with holodiscs; Several deleted functions from stdlib are returned. Rev.37 http://www2.xp-dev.com/sc/change/94227/37 Fix of calculating amount of dead NPC on location when necessity of attack is being determinated. Fix of amount loss allies counter when finishing the quest. Output of messages to log is disabled in quest “The drill”. Fix of limit of times amount quest “Dangerous hunt” can be done. Descriptions of deleted maps were returned, which made server restart impossible without saves clearing. Rev.36 http://www2.xp-dev.com/sc/change/94227/36 Fix of Hartman’s dialog. The wrong requirement was deleted. Rev.35 http://www2.xp-dev.com/sc/change/94227/35 New quests from string “Guard” in Vaultcity - Vaultcity guard. Third trial. Drill. - Easy walk. - Go there, don’t know where. - Dangerous hunt. - Diplomatic courier. Fix of caravan’s and patrol’s departure time. Relative departure time was substituted for absolute. Added ability of caravan’s instant departure from the dialog. Fix of items that were generated in encounters 0 in number. (It was impossible to throw out them) Fix of quest “Hub bibliography”. Player need 7 books to gain reputation instead of 6. Rev.34 http://www2.xp-dev.com/sc/change/94227/34 - Maps fixes - Fixed reaction of BG guards on explosives activation Rev.33 http://www2.xp-dev.com/sc/change/94227/33 - Graphics fixes - Non-used files were deleted - Original map of BG was returned Rev.32 http://www2.xp-dev.com/sc/change/94227/32 Private car parking in geck town is disabled till the problem with car boot is solved. Rev.31 http://www2.xp-dev.com/sc/change/94227/31 Added first quests of string “Guardsman”, VaultCity. (Clearing of server saves is needed) Added template for making quests-combats with npc. (fighter_quest.fos, e.g. “Guard. First trial.”) Added ability to take quest “Hub bibliography” again if player failed to finish it at previous time. Fixed incorrect condition in Dappo’s dialogue in quest “Lot of defective rifles”. Added verification of addressee in “Postman” quest, now player can’t bring letter to any npc of type stated in the letter. Rev.30 http://www2.xp-dev.com/sc/change/94227/30 Deleted not used MSG files - FOSCRIPT.MSG. Rev.29 http://www2.xp-dev.com/sc/change/94227/29 Updates of way of making records into log. Added ability to look the name of the thread which made a record. Option in config – LoggingThread. You can also turn on output in the server application using “Logging with thread”. Changed format of time output. Now it is not “time in ms”, but “hours:minutes:seconds:milliseconds”. Rev.28 http://www2.xp-dev.com/sc/change/94227/28 Fix and formatting. Rev.27 http://www2.xp-dev.com/sc/change/94227/27 Fixed mistakes in calculating karma in quest "Returning of the fugitive". Rev.26 http://www2.xp-dev.com/sc/change/94227/26 Changes on Church of Brok and Xander location: - fixed Preacher, Scientist, repairer Alechandro, Cook, Mickey dialogs; - quests work correctly now; - repairer Alechandro identifies items correctly; - ability to record the information about Church was added (after completing Preacher's quest). Rev.25 http://www2.xp-dev.com/sc/change/94227/25 Activating time of dynamite was fixed. Rev.24 http://www2.xp-dev.com/sc/change/94227/24 New algorithm of generating of pseudorandom variables was added (Mersenne twister). Previously was standart C algorythm srand/rand. Rev.23 http://www2.xp-dev.com/sc/change/94227/23 Energy barrier on the entrance of GECK town was improved. Rev.22 http://www2.xp-dev.com/sc/change/94227/22 Fixed client crashing on start. For preventing this bug in future the control system of versions of cashed scripts in the client has been added. Rev.21 http://www2.xp-dev.com/sc/change/94227/21 Fixed problem when it was impossible to add players to GECK town after removing them with option "Clear list". Rev.20 http://www2.xp-dev.com/sc/change/94227/20 Fixed cooldown of the Postman quest. Rev.19 http://www2.xp-dev.com/sc/change/94227/19 Wrongly deleted dialogs are returned. Rev.18 http://www2.xp-dev.com/sc/change/94227/18 Fixes Deleted not used files. Fixed errors when player removes child killer karma additional times. Fixed error with incorrect name of script of map_v15_village map. Added output of message of increasing trade skill when finishing “Farm vermins” quest to the log. Weakened the giant wasp in the quest in Modoc. Rev.17 http://www2.xp-dev.com/sc/change/94227/17 AngelScript was updated to rev.684, v. 2.19.2 Added global variables to the client: bool __ShowTile, __ShowRoof, __ShowItem, __ShowScen, __ShowWall, __ShowCrit, __ShowFast, __ShowPlayerNames, __ShowNpcNames, __ShowCritId. Deleted limit of min. time of using Map::SetLoopTime (it was 1 second). Fixed registration of the global variables of string type (pragma globalvar). Fixed using reserved global variables string type. Added global variables to mapper: string __ClientPath, __ServerPath. Deleted constant modificators in client from string CritterlCl::Name, CritterlCl::Lexems. Added variable CritterlCl::NameOnHead, which if is not empty, outputted above critter’s head. Rev.16 http://www2.xp-dev.com/sc/change/94227/16 Fixed reclearing of child killer status. Rev.15 http://www2.xp-dev.com/sc/change/94227/15 Fixes: - Fixed names of Giant Wasps and bugs in kills statistic; - Reduced requirements of amount of killed mobs and intelligence in Broken Hills quests (bh_marcus.fodlg, bh_super.fodlg); - Reduced requirement of intelligence for “Fresh blood” quest (vc_doctor_troy.foldg); - Fixed possibility of gaining experience multiple times in “Cabbage” quest in Modoc (mod_farmer_q.fodlg); - Player receives reputation in NCR for quest “True cowboy” even if only one Brahmin is brought (ncr_felix.fodlg); - Michael’s miniquest in NCR can be done by every player only once (ncr_michael.fodlg); - Added requirement of 16 level for “buggy” quest (ncr_ratch.fodlg); - Fixed amount of gaining experience when player rejects gratuity in “Postman” quest (q_mail_reciever.fodlg); - Fixed cooldown of “Postman” quest; - Cave mobs – spawn point near the exit grid was removed in the smallest cave; - Fixes of several dialogues in Vault City; - New quest – “Fugitive returning” – when finished, status “Child killer” is removed. Hubbologist in Redding bank offers this quest; - New quest “Farm vermines”. It is offered by Joe in Modoc (mod_joe.fodlg); - Fixed energy barrier in GECK town; - Added computer for breaking of energy barrier inside the town; - Added car lots for GECK town citizens (not more than 2); - Added ability of clearing of citizens list by town leader using the terminal. Rev.14 http://www2.xp-dev.com/sc/change/94227/14 Update for Notepad++ (Syntax_highlighting, autocomplete, function parameters hints) Rev.13 http://www2.xp-dev.com/sc/change/94227/13 First stable version.h3. Your title here...

1 year ago
SidleJinks picture

Description: Rev.185 http://www2.xp-dev.com/sc/change/94227/185 NO_LOOT and NO_DROP mode were switched off for the giant bugs. Rev.184 http://www2.xp-dev.com/sc/change/94227/184 In connection with porting the server (*nix and 64bit) the next changes were made: Operating with net was rebuilded. Libevent library is used. http://monkey.org/~provos/libevent/ http://en.wikipedia.org/wiki/Libevent http://ru.wikipedia.org/wiki/Libevent Operating with GUI was remade. FLTK library is used. http://fltk.org/ http://en.wikipedia.org/wiki/FLTK http://ru.wikipedia.org/wiki/FLTK Operating with threads was remade. Pthreads is used http://sources.redhat.com/pthreads-win32/ (Windows port) http://en.wikipedia.org/wiki/Pthreads http://ru.wikipedia.org/wiki/Pthreads Changes are serious and can cause unstable work. Memory leak when loading maps was fixed in server. Loading maps with items in containers/inventories in mapper was fixed. Don’t use mapper of 171-182 revisions for editing old maps. Now parameters values for critters in mapper are applies only if they are not equal to zero. Initially value is taken from defaults (from .fopro), then from the map’s data if !=0. Critter’s names in mapper are now taken only by prototype number without accounting dialogue’s number. Old specification of Log function which was changed in 174 revision was returned to native scripts. Server’s GUI now ‘Courier New’ type, option in config was deleted. Option for changing server’s window size and its elements was added GUI size modifier GUISize=0 E.g. if GUISize=-50 then server’s window and all its elements will be 50% smaller, if GUISize=30 then 30% larger. Log in server window is unrolled as defaults. Also, the information from the log can be copied and scrolling is stopped if it is focused. Client’s crashing when playing items animation was fixed. Paths make_tla.bat were converted to Visual Studio 2008 (9.0). Rev.183 http://www2.xp-dev.com/sc/change/94227/183 Lo Pan’s mercenaries call leader’s name correctly now. Nancy and Sid’s quest location now is deleted after leaving it (previously it wasn’t deleted and hanged in the memory). SF docs were excluded from NoPvP locations. Letters generation in Postman quest was fixed. Holodisk with combat robot’s video recordings can be given to Buster now. Shaneman’s documents now have description in “Diplomatic mission” quest. A dialogue between bar clients in outer Vault City was added (wipe is required). Mini quest “Seduce art” was added in Klamath (wipe is required). Rev.182 http://www2.xp-dev.com/sc/change/94227/182 NPC-travellers will no longer take dead characters to the global map. Atoll was removed from Eli’s destinations. Skill displaying when increasing it through the dialogue was fixed. The mistakes in the newcomer’s dialogues in “Anger” quest were fixed. The mistake in mercenaries script which caused the leaving the employer earlier was fixed. Rev.181 http://www2.xp-dev.com/sc/change/94227/181 Reading nicknames from ignor list file was fixed. Console command for adding a player to the ignor list was added ~ignore PlayerName. Rev.180 http://www2.xp-dev.com/sc/change/94227/180 Mechanism of reputation calculation was switched off due to its incorrect work. Now all the list will be visible, but will work correctly. Rev.179 http://www2.xp-dev.com/sc/change/94227/179 Network protocol bug which caused short hangs up was fixed. Client's script was fixed which could cause null parameter call. Rev.178 http://www2.xp-dev.com/sc/change/94227/178 Superfluous rifles on offer were fixed. Rev.177 http://www2.xp-dev.com/sc/change/94227/177 Game version increment. Rev.176 http://www2.xp-dev.com/sc/change/94227/176 Sequence of handlers calling was fixed MAP_EVENT_OUT_CRITTER, MAP_EVENT_IN_CRITTER now the first one is called initially, then the second On intro_init map static lighting was set. Group moving indication on the global map was fixed (previous update bug). Rev.175 http://www2.xp-dev.com/sc/change/94227/175 Console command ~globalmap was added. It moves player to global map. It works only on noPvP maps for players not in combat mode and with noPvP mode turned on. In caravans and travellers scripts functions of moving to final destination's map were updated. Rev.174 http://www2.xp-dev.com/sc/change/94227/174 Porting game to Linux was started. Also supporting of 64 bit platforms. Client’s native libraries are now transmitted automatically. They are stored in ‘Client/data/cache’. Folder with scripts ‘Client/data/scripts’ is not used anymore and was deleted. To the server’s folder library STLPort (http://www.stlport.org/) was added. Client’s libraries are now compiling with it’s help. It is connected with porting to other platforms. Additional methods of moving were added to critters in server scripts bool Critter::TransitToMap(uint mapId, uint16 hexX, uint16 hexY, uint8 dir, bool withGroup) bool Critter::TransitToMap(uint mapId, int entireNum, bool withGroup) bool withGroup – when moving from global map to local map, all the group will be moved. Regular TransitToMap (without bool withGroup) work as with withGroup == false. Previously they worked as как withGroup == true, what led to moving all the group when replicating, if dead critter was on the global map. 3d critters were switched off. For switching on see PLAYERS_3D in _defines.fos. Constants for operating with game constants were added(see 168 revision, http://www2.xp-dev.com/sc/change/94227/168). Specification for the reserved function Log in native scripts was changed. Now the first returned parameter is function’s name from which it was called. Rev.173 http://www2.xp-dev.com/sc/change/94227/173 Traders were added to Atoll and Redding. Barterground was moved to position 690:760 as it isn’t needed anymore in north-west region due to noPvP mode. Locations “BiX Church” and “Atom’s Church” were moved to special encounters class. Fixed rewards in some quests. Maps fixes. Biscuit on Modoc can be received only once now (as in Fallout 2). Rev.172 http://www2.xp-dev.com/sc/change/94227/172 noPvP mode was activated on some TLA maps. It will be used on the next TLA session. For switching it off on your server set global variable __NoPvpMaps=false; in script config.fos Ability of making a list of ignored players, it works similarly NameColorizing. It needs manual adding nickname of ignored player to IgnoreList.txt For refreshing the list of ignored players in game use console command ~ignorelist. Rev.171 http://www2.xp-dev.com/sc/change/94227/171 Derivative objects system for mapper was updated. When placing base object, all his derivatives are placed automatically. If one object from the group is being selected - all others are being selected too. If the prototype or position of the derivative object is changed, changes will be automatically applied by mapper or server when loading. For the example see cars, at the present time they have one derivative object – their trunk. Now when placing the car, it will be created automatically, also it will be moved with it and if base or derivative object is deleted, all the group will be deleted too. The system of moving selected objects in mapper was upgraded. Now in hexagonal system the selected objects will be moved without being tearing apart. Also the selected objects, when being moved, will stop at the map’s edge, so they won’t mix into a pile. The problem with detecting whether items in container belong to their inventory or container. Previously items were placing on the hex and if you place two containers on the same hex, all the items will stack in one container. Now it is fixed. Item::TrapValue initialization through mapper was fixed. If rewriting is performed on prototypes loading, alert is displayed. It was added for items and critters prototypes. In object’s structure in mapper was deleted field const bool Item_InContainer and added const uint UID, ContainerUID, ParentUID, ParentChildIndex Rev.170 http://www2.xp-dev.com/sc/change/94227/170 Now server doesn't block client's libraries while working. Previously you needed to stop the server to replace client's dll (Server/scripts/fonline_tla_client.dll). Rev.169 http://www2.xp-dev.com/sc/change/94227/169 Combined content of MASTER.DAT + CRITTER.DAT. Size - 201 MB! Rev.168 http://www2.xp-dev.com/sc/change/94227/168 Client and Mapper are no longer bounded with Fallout’s data files - MASTER.DAT and CRITTER.DAT. These files content is combined (excess data is deleted) and packed into fallout.dat (will be uploaded with the next update) and defined in DataFiles.cfg. Global variables string __MasterPath, __CritterPath were deleted. The configurator (FOConfig.exe) is updated accordingly fixes above. Critter’s lighting in the death moment and flat items lighting was fixed. To server/client/mapper scripts the next functions for operating with the constants (*Names.lst) were added: int GetConstantValue(int constCollection, string@+ name) – identifying constant’s value by the name; string@ GetConstantName(int constCollection, int value) - identifying constant’s name by the value; void AddConstant(int constCollection, string@+ name, int value) – adding separate constant to the collection; bool LoadConstants(int constCollection, string@+ fileName, int pathType) – loading/reloading the collection; int constCollection – collection’s number, see Constants collections in _defines.fos, also you can define your own collections; string@+ name – constant’s name; int value - constant’s value; string@+ fileName, int pathType – collection file’s name and folder path. Rev.167 http://www2.xp-dev.com/sc/change/94227/167 Bug with error of name/password in login menu if it exceeds 12 symbols was fixed. Screen centering on the player when loading map in right-angle geometry was fixed. Copying objects in Mapper from smaller map to the bigger one was fixed. Mapper hanging up when Sleep < 0 was fixed. Crashes when loading ART files were fixed. Principe of transparency defining with parameter ‘”t” was changed, now it isn’t equal to 255 – paletteIndex, but to max(R, G, B). Rev.166 http://www2.xp-dev.com/sc/change/94227/166 System of operating with items prototypes was updated (ProtoItem). Ability to add your own fields to proto class was added. New pragma ‘bindfield’ is used for this, e.g.: #pragma bindfield "const int ProtoItem::MyValue -> 400" it means creation of field MyValue of int type with offset 400 (considering thas int is 4 byte, it will occupy bytes 400, 401, 402, 403). Totally for user’s fields 500 bytes are available. Field is equal to zero as defaults, but it is possible to change the value by defining value (in the current case MyValue=111 or MyValue=SkillBigGuns) in proto file (.fopro), number (if it contains only numbers) or path to the file (it is identified by the presence of ‘/’ or ‘\’ symbols). For now fields which are not used by the engine are taken out to scripts, see _defines.fos Item prototypes fields. Changes in structure ProtoItem. All next methods are deleted uint8 GetType() const uint16 GetProtoId() const bool IsGrouped() const bool IsWeared() const bool Container_IsGroundLevel() const List of new fields which are registered in the engine (part of them is renamed, some were deleted) http://pastebin.com/8R4QkP3h The other fields are registered with #pragma bindfield in _defines.fos. Now all items can stack and wear out, for this Boolean fields are added to the prototypes bool ProtoItem::IsStackable bool ProtoItem::IsDeteriorable Item type ITEM_MISC_EX was deleted, it is combined with ITEM_MISC (miscex.fopro is deleted). Vehicles are taken out to separate type ITEM_CAR (car.fopro was added). Also now user can define any type numbers for the items. Former fields uint MiscEx_StartVal0..9 of the start values for Item::Val0..9 were moved to common area named StartValue0..9, and with these values Item::Val0..9 are initialized. Metod bool Item::IsCar() const was deleted, instead of it use GetType()==ITEM_CAR. The next methods are renamed bool Item::IsGrouped() const -> bool Item::IsStackable() const bool Item::IsWeared() const -> bool Item::IsDeteriorable() const The next fields are renamed uint16 Item/ItemCl::BrokenWear -> Item/ItemCl::Deterioration uint16 Item/ItemCl::CarDeteoration -> Item/ItemCl::CarDeterioration uint8 MapperObject::Item_DeteorationFlags -> uint8 MapperObject::Item_BrokenFlags uint8 MapperObject::Item_DeteorationCount -> uint8 MapperObject::Item_BrokenCount uint16 MapperObject::Item_DeteorationValue -> uint16 MapperObject::Item_Deterioration Mechanism of affiliated objects was moved for common use. Previously it was available only for vehicle’s trunk. One object can have up to five derivatives. Numbers of the derivative objects are defined in uint16 ProtoItem::ChildPid_0..4. By creation of base object, derivatives are created automatically. For now Mapper doesn’t create affiliated obkects automatically, but it will be fixed in further. For setting the place of situation, special field ChildLines_0..4 is used (former MiscEx.Car.Bag_0..1, see below by recording format). Also it is possible now to define automatic blocking for any objects, not only for vehicles – field BlockLines (former MiscEx.Car.Blockers). Recording format for Child/BlockLines – XYXYXY..., where X is direction number (0..5/7), Y is the amount of steps (1..9) in this direction (previously for vehicle’s trunk for another recording format - XXXX...). Maximum amount of steps for BlockLines – 50, for ChildLines – 6. For operating with derivative objects use methods Item@+ Item::GetChild(uint childIndex) const (бывшая Item@+ Item::CarGetBag(int numBag)) bool Map::CheckPlaceForItem(uint16 hexX, uint16 hexY, uint16 pid) const (bool Map::CheckPlaceForCar(uint16 hexX, uint16 hexY, uint16 pid) const) Fields renaming affected lots of scripts, be attentive. Old proto format is converted to the new one automatically, but Object Editor (ObjectEditor.exe) still operates only with old format. It will be fixed soon. To replication.fos and entires.fos scripts the influence of right-angled geometry was added. Script main_planes.fos is formatted as a separate module. All pragmas were move to the end of _defines.fos. Drop of FPS when switching on view/attack borders was fixed. Rev.165 http://www2.xp-dev.com/sc/change/94227/165 Fix for the ASCompiler. Rev.164 http://www2.xp-dev.com/sc/change/94227/164 Changed ASCompiler output format to “filename(linenumber) : message”. Such output is recognized by a number of IDEs and allow jumping to the code by a double-click on the output line. Rev.163 http://www2.xp-dev.com/sc/change/94227/163 Tabs management system was added to Mapper. Now one tab can have numerous subtabs. Tabs names and its filling is defined in mappers scripts. But some tabs already have initial filling. Item – items prototypes by defaults (items.lst); Tile – tiles by default, search is performed in ‘art/tiles/’; Crit – critters prototypes by defaults (critters.lst); Fast – displays often used objects, initial state is defined in scripts (InitializeTabs in mapper_main.fos); Ign – Ignore, shows ignored objects which are not shown on the map; Inv, Msg, Map – special tabs which have nothing to do with the mechanism, but it is possible to change its name throug TabSetName (see below). The tab can have subtabs only of one type – tiles, critters or items (displayed in priority order). For items and critters the subtab’s name is chosen by user, for the tiles it is performed automatically. The lowest subtab “all” contains all prototypes (or tiles) on a list above. For activation the menu of tab choosing – perform a double click on it. If positions are numerous then use mouse wheel for navigation (scroll speed: normal – 4, with pressed shift – 8, with pressed ctrl – 20, with pressed alt – 50). For tabs management use scripts, functions Tab* uint TabGetTileDirs(int tab, string@[]+ dirNames, bool[]+ includeSubdirs) uint TabGetItemPids(int tab, string@+ subTab, uint16[]@+ itemPids) uint TabGetCritterPids(int tab, string@+ subTab, uint16[]@+ critterPids) void TabSetTileDirs(int tab, string@[]+ dirNames, bool[]+ includeSubdirs) void TabSetItemPids(int tab, string@+ subTab, uint16[]@+ itemPids) void TabSetCritterPids(int tab, string@+ subTab, uint16[]@+ critterPids) void TabDelete(int tab) void TabSelect(int tab, string@+ subTab) void TabSetName(int tab, string@+ tabName) int tab – tab’s number (see Tabs in _mapper_defines.fos); string@[]@+ dirNames – folder’s names for tiles searching; bool[]@+ includeSubdirs – turn on search in subfolders; string@+ subTab – subtab’s name; uint16[]@+ itemPids – item’s prototype numbers array; uint16[]@+ critterPids - critters’s prototype numbers array; string@+ subName – tab’s name. Global variable was added bool __SplitTilesCollection = true It defines whether tiles should be divided into groups in the folders. The group is defined as a string in the file’s name before the first number (e.g. abc12.png - group abc), if the number is absent, then group is defined as '<other>'. In connection with these changes, the global functions are deleted uint GetFastPrototypes(uint16[]@+ pids) void SetFastPrototypes(uint16[]@+ pids) Other updates. Fixed incorrect work of server/client which caused some bugs. Global variable int __GeometryType was added to _defines.fos for the indication of chosen geometry. See constants in _defines.fos Geometry. Depending on its value, tab with Tactics and Arcanum is added. Ability to work with file names which include spaces is added. When loading ART files, it is possible to flip them vertical or horizontal. Parameters in the file name - ‘v’/‘V’ and ‘h’/‘H’. When loading SPR file, if you define in changing color parameter – layer’s number -1, then the modificator will be applied to all four layers. Rev.162 http://www2.xp-dev.com/sc/change/94227/162 Quest perks “Midnight Child”, “Nosderatu Blood” were added (Modoc, “Night’s tender”). Now new home position is set for NPC-travelers (Devin, Eli) when they enter new location. Female characters now can finish quest of removing childkiller status. Allies HP and resistances were increased in “Dangerous hunt” quest. Also a simple dialogue is added to them. The forged letter is now removed from the inventory when finishing quest “Forgery”. Edvin in Klamath tells with a popup phrase when starting gathering items. A delay was added to the prisoner giving the cues in “Ernst Telman” quest. Ability of intimidating the NPC visitor if it’s a woman was deleted in quest “Wrath”. Barcus now reacts with popup phrases to the futher meetings with the player who have done quest “Amnesty for Joshua”. Upon the receiving lieutenant rank of Vaultcity’s Guard, player is awarded with a black combat armor. In “Diplomatic Courier” quest time (24 hours) which Sheiman takes for the thoughts now is calculated correctly. Upon finishing this quest, player receives +1 reputation in NCR. Sell price of the buggy which player receives upon finishing the quest in NCR was set to zero. Dialogue launch when player uses an antidote in quest “Poisoned Regulator” in Redding was fixed. Players who gained Vaultcity citizenship now can trade with Randal with no restrictions. Reputation calculation in quests “Real Cowboy”, “Hub Bibliography” in NCR was fixed. If player refuses the reward in “Hub Bibliography” quest, he gains +2 reputation (was +1) when he delivers 5 books. Increasing raider’s resistances and skills every new attack on NCR was switched off. Ability of crafting and buying chitin armor was added. Giant beetles drop chitin. Items with ITEM_GAG flag deletion upon player’s death was fixed. Rev.161 http://www2.xp-dev.com/sc/change/94227/161 Ability to customize game geometry was added, either the support of isometric projection with quadrangles was. For customization use global variables bool __MapHexagonal – isometry type: true - hexagonal, false - quadrangular; int __MapHexWidth – hex width; int __MapHexHeight – hex height; int __MapHexLineHeight – hex line height; int __MapTileOffsX/Y – ground tiles offset; int __MapRoofOffsX/Y – roof tiles offset; int __MapRoofSkipSize – amount of hex per one roof tile (necessary for its correct hiding); float __MapCameraAngle – 3d model rendering angle; bool __MapSmoothPath – path smoothing when moving; string __MapDataPrefix – path and prefix for the geometry files. Operational sprites for geometry are situated in art/geometry/. Quadrangular isometry use 8 directions, hexagonal – 6. In script config.fos in function InitializeGeometry(), necessary adjustments for 3 games (Fallout1/2, Fallout Tactics and Arcanum) are added. This function can be called in server, client and mapper scripts, as all three of them need geometry information. Global variables uint __LookDir4, uint __LookSneakDir4 were added for 8-directional geometry. Fixed Tactics SPR files loading. Mode MODE_NO_TALK was added. It affects ability to talk and appearance of the icon in the context menu. Double click on hex, affecting avatar’s moving, was fixed. Creation of descriptions for critters prototypes (FODLG.MSG) with high identifiers was fixed. Image of elephant gun was added in 3d. Rev.160 http://www2.xp-dev.com/sc/change/94227/160 Fixed a bug with server and client communication. Fixed a bug with wrong sprites display. Rev.159 http://www2.xp-dev.com/sc/change/94227/159 Documentation's update, mistakes fixes. Rev.158 http://www2.xp-dev.com/sc/change/94227/158 Script start_server_client.fos was renamed to config.fos and now it isn't simply pasted into function start(), but presented as a separate module with function InitializeGame(). Macros for operating with time were moved from _macros.fos to separate module _time.fos. Slight fix of drugs.fos. Rev.157 http://www2.xp-dev.com/sc/change/94227/157 Errors messages in server log when operating with functions GetPlayerName/GetPlayerId were removed. Also GetPlayerName returns null now, if the player wasn't found. Bugs of reputation calculation were fixed. Rev.156 http://www2.xp-dev.com/sc/change/94227/156 Ability to affect the colors when loading Tactics sprites was added. To make color shift, define necessary values in file name’s parameters (“$”). Format: fileName$[index,r,g,b]animName.spr (can be any amount of shifts […]) where index – body part’s number (0 - miscellaneous, 1 - skin, 2 -hair, 3 - armor); r,g,b – color shift for the each component, can be negative Example: someSprite$[2,50,-30,-20]anim1.spr – load sprite someSprite.spr, with animation anim1 and hair’s color shift in RGB (50,-30,-20). Additional flags for operating with color’s shift were added for Tactics critters (_animation.fos, animation.fos). Use macros ANIM1_COLOR_SKIN(index), ANIM1_COLOR_HAIR(index), ANIM1_COLOR_ARMOR(index) for values defining. Index can take on value from 0 to 15, appropriate to it values of color shift look in array colorOffsets of animation.fos script. For ability testing you can use text function void ColorOffset(Critter& cr, int skin, int hair, int armor) in test.fos. Rev.155 Some native structures were fixed. Rev.154 http://www2.xp-dev.com/sc/change/94227/154 AngleScript is updated to revision 822. Ability of sorting is added to scripts arrays Ascending sort void array::sortAsc() void array::sortAsc(uint index, uint count) Descending sort void array::sortDesc() void array::sortDesc(uint index, uint count) For user’s classes sorting realize opCmp method http://www.angelcode.com/angelscript/sdk/docs/manual/doc_script_class_ops.html Vehicle animations on the global map and item’s animations in Mapper are fixed. Some points in operating with critter’s animations are fixed (animation.fos). Global variable __GmapActive is fixed. Global variable for setting min. offline time after that client will completely exit from the game was added. uint __MinimumOfflineTime = 180000; // 3 minutes Rev.153 http://www2.xp-dev.com/sc/change/94227/153 Additional constants for operating with Chosen's actions were updated (Get/SetChosenActions, for CHOSEN_USE_ITEM). Rev.152 http://www2.xp-dev.com/sc/change/94227/152 Additional constants for operating with Chosen's actions were added (Get/SetChosenActions). Rev.151 http://www2.xp-dev.com/sc/change/94227/151 Bugs with incorrect files's names path detecting were fixed. Rev.150 http://www2.xp-dev.com/sc/change/94227/150 3d models loading was fixed. 3d models rendering to sprites was fixed. Critters animations were fixed (death in 2d and 3d modes). Shift calculation for some models was fixed. SAY_DIALOG/SAY_APPEND mechanics was fixed. (by Atom) Server’s config loading in Mapper was fixed. (by Atom) File HashNames.lst was added to client. Names of files which contain parameters (‘$params’) should be entered in it. If you use such names in the prototypes, Mapper or scripts GetStrHash), then include this name to this list. Format of writing: [any number] [file’s name] [end of string] E.g. 0 art\scenery\BrazureFire$t.ART 0 art\scenery\BrazureFire$t3.ART In further it is possible to detect and transmit such names automatically, but for the present use this system. Roof disappearing if it is situated in odd hex in two axis. Rev.149 http://www2.xp-dev.com/sc/change/94227/149 Documentation was updated. Some fixes in Arroyo (Minoc’s quest about raiders). Usage mode was added for sledgehammer and supersledge (for resources mining). Guard lib was brought into common standard of scripts formatting. Rev.148 http://www2.xp-dev.com/sc/change/94227/148 Two reserved variables were added to HLSL effects float AnimPosProc – current animation’s per cent 0%..100%, [0,1); float AnimPosTime – current animation’s time in seconds. Client’s hanging under certain circumstances was fixed (e.g. receiving item’s data when player in process of moving between maps). Dump generation when closing server application without stopping was switched off. Generation of unnecessary messages to log in function animation_ animation.fos was fixed. Rev.147 http://www2.xp-dev.com/sc/change/94227/147 Parameters for critter’s movement controlling were added. Time for moving in milliseconds: #define ST_WALK_TIME (117) #define ST_RUN_TIME (118) Ability to move #define MODE_NO_WALK (539) #define MODE_NO_RUN (540) If these parameters are equal to zero, then data is taken from CritterTypes.cfg. Loading of some ART files was fixed (Arcanum). Ability of specifying special image processing was added. Palette elements will be transparent depending on its index in the palette (alpha = 255 – index). To chose this loading type - use symbol “t” (or “T”) in file name parameters. E.g. ‘filename$t.art’; also you can combine with palette, e.g. ‘filename$1t.art’. Ignoring of spec.symbol “/r” was additionally added for splitEx function. In functions void DrawSprite(... bool applyOffsets) if applyOffsets == true there were additionally added shifting of width/2 and height of the image. Unnecessary fo3d files were deleted. Palette influence for Arcanum critters was fixed. Rev.146 http://www2.xp-dev.com/sc/change/94227/146 One more fix of incorrect critter displaying. Rev.145 http://www2.xp-dev.com/sc/change/94227/145 Quest “Communicated” was added (Redding). Caravaneers phrases were fixed, now they tell correct departure dates. Quest “Honomer’s bodyguard” was added (San Francisco). Retina scanner in GECK town was fixed. Slight fixes of the hubbolog’s map in San Francisco. Special result function for skill rise calculation through a dialogue was added.(dialog@r_SkillUp) The script for quest locations creating was fixed (hostile_location_quest.fos), allies and enemies scripts now work correctly. Resetting of a quest variable when deleting the location was fixed. Script for realization a dialogue between several npc’s with popping up phrases was added. (npc_dialog.fos) Story line implementation was continued. Maps numeration in the location with mutants was fixed (quest string “Guardian”). Rev.144 http://www2.xp-dev.com/sc/change/94227/144 Critter’s hitpoints regeneration was moved to scripts, you can look realization in function critter_idle main.fos. Global function for critters sampling from the global map was added to server scripts. uint GetGlobalMapCritters(uint16 worldX, uint16 worldY, uint radius, int findType, Critter@[]@+ critters) Additionally to methods bool Map::GetNearEntireCoords(int& entire, uint16& hexX, uint16& hexY) const bool Map::GetEntireCoords(int entire, uint skip, uint16& hexX, uint16& hexY) const were added methods bool Map::GetNearEntireCoords(int& entire, uint16& hexX, uint16& hexY, uint8& dir) const bool Map::GetEntireCoords(int entire, uint skip, uint16& hexX, uint16& hexY, uint8& dir) const which return direction. Global variable which specifies if the password in the client’s login window should be hidden was added bool __HidePassword = true Incorrect critters creation in Mapper was fixed. Displaying of switching critter’s type 3d->2d on the client’s side was fixed. Rev.143 http://www2.xp-dev.com/sc/change/94227/143 Fixed critters loading in Mapper (141 revision's bug). Rev.142 http://www2.xp-dev.com/sc/change/94227/142 Fixed server loading (the previous revision bug). Rev.141 http://www2.xp-dev.com/sc/change/94227/141 Mechanism for identifying critter’s animation file name was added. Now you can operate with critter’s animations from Tactics and Arcanum without any conversions. All data files which you need for enabling one or another critters are cited in CritterTypes.cfg comments. The next critters were added to SDK: Humanoid, Behemoth, MTT, Pacification. They are repacked to the separate archive ftrobots.bos. But all available critters from Tactics and Arcanum are added to CritterTypes.cfg with correctly defined parameters for them (by Tabloid), so you can enable the needed data files and use the critters. All animations are transformed to the general appearance (ANIM2_2D*, ANIM2_3D* -> ANIM2*). The functional for operating with them is moved to scripts. In some places where these values are used, numeric literals are replaced by string constants, which description you can find in DefineNames.lst. Fixes were made in weapons prototypes (weapons.fopro) and fo3d templates for 3d critters from VanBuren (_VBHuman.fo3d, _VBMob.fo3d, _VBWeapon.fo3d). Now three sets of primary and secondary animations are used for critters, for three condition types – alive, knockout, dead const uint Critter/CritterCl::Anim1/2Life/Knockout/Dead (const uint Critter/CritterCl::Anim1/2 were deleted). These values are used for animations as default. Pay attention that Anim1 additionally is summed up with animation of the weapon in the active slot, bit-by-bit OR. It is necessary for assignation certain values on continuing basis (e.g. sitting, lying position). For changing these values the next method is used void Critter::SetAnims(int cond, uint anim1, uint anim2) int cond – defines the position to apply values to (COND_* in _defines.fos), if null it is applied to all three; uint anim1, anim2 – animation values. Deleted const uint8 Critter/CritterCl::CondExt Accordingly all COND_*_* for them are deleted. Now position is differentiated by the animations. In connection with it, the next methods specifications were changed void ToDead(uint anim2, Critter@+ killer) bool ToKnockout(uint anim2begin, uint anim2idle, uint anim2end, uint lostAp, uint16 knockHx, uint16 knockHy) void EventKnockout(uint anim2begin, uint anim2idle, uint anim2end, uint lostAp, uint knockDist) void EventSmthKnockout(Critter& fromCr, uint anim2begin, uint anim2idle, uint anim2end, uint lostAp, uint knockDist) uint anim2begin, anim2idle, anim2end – animations of the knockout begging, staying in it and coming to yourself. Standard macroses are defined for the transfer KNOCKOUT_ANIM2_DEFAULT, KNOCKOUT_ANIM2_STUNNED (in _animation.fos). Also Mapper operates now not with CondExt, but with Anim1/Anim2 for the current Cond. Global variables for client/mapper for defining combat mode animations were added uint __Anim2CombatBegin = ANIM2_BEGIN_COMBAT uint __Anim2CombatIdle = ANIM2_IDLE_COMBAT uint __Anim2CombatEnd = ANIM2_END_COMBAT The next reserved client/mapper functions were added (animation.fos): - string@ critter_animation(int animType, uint crType, uint anim1, uint anim2, uint& pass, uint& flags, int& ox, int& oy) Function which is called when loading necessary animation. Returned value - file’s path and name. int animType – critter’s animation type (new parameter which is set in CritterTypes.cfg); uint crType – critter’s type; uint anim1, anim2 – animation’s indexes; uint& pass – function call’s number, is changed by the user. If animation loading failed and this parameter was changed, then function will be recalled (in certain cases you should try to load different files for the one animation); uint& flags – flags, at the present moment two of them – to take the first or the last frame from the animation ( Anim loading flags in _animation.fos); int& ox, &oy – shifts for the animation, in pixels. - bool critter_animation_substitute(int animType, uint crTypeBase, uint anim1Base, uint anim2Base, uint& crType, uint& anim1, uint& anim2) If animation loading failed (and uint& pass wasn’t changed), then this function is called for animation substitute detection (e.g. left hook can be replaced by the right hook). true is returned if the substitute was found (engine also additionally checks if crType, anim1, anim2 were really changed), false – no substitute, animation won’t be loaded and played. int animType – see above; uint crTypeBase, anim1Base, anim2Base – base critter’s and animation’s type, which were at the start; uint& crType, &anim1, &anim2 - critter’s and the current animation’s type for the substitution - bool critter_animation_fallout(uint crType, uint& anim1, uint& anim2, uint& anim1ex, uint& anim2ex, uint& flags) As Fallout’s animations are still loaded by the engine (additional shifts calculation and animations pasting together is needed), for determining animations conformity this function is called, i.e. instead of critter_animation for fallout’s animations this function is called. true is returned if animation is presented, false – not. Method bool Critter::IsAnim3d() const is deleted, use instead of it the global function int GetCritterAnimType(uint crType) values look in Anim types _animation.fos. Critters actions sounds now are played in the scripts, in animation_2d/3d_process. New mechanism for sound file name identification was made, look PlayAnimSound in animation.fos. Critters prototypes were divided into fallout’s (fallout2.fopro) and TLA's (tla.fopro). Bug with roof’s non-transparency in Mapper was fixed. Name indication of chosen critter or tile prototype in mapper was added. Format fo3d now recognizes named constants DefineNames.fos, namely for modificators Mesh, Subset, Layer, Value, DisableLayer, DisableSubset, Texture, EffDef (для Dword), Anim, AnimSpeed, AnimEqual. Global server variable for determining call frequency was added GLOBAL_PROCESS_MOVE uint __EncounterTime = 5000 Global client variable for determining frequency of foolish trick animation call was added uint __CritterFidgetTime = 50000 is deleted using formula Random(__CritterFidgetTime, __CritterFidgetTime * 2) Item prototype’s parameter was deleted bool ProtoItem::Weapon_RequiresActivation now if animation doesn’t exist, it is just not played. Parameters uint16 MapperObject::Scenery_ToMapX/Y were deleted, in mapper also. Moving between locations is performed by entery points. In weapons prototypes types of action animations were substituted from numeric by string constants (accordance look in DefineNames.lst). Appropriate changes were performed in ObjectEditor. Client functions PlaySound andPlayMusic now return bool, signalizing if file was found or not. Global functions for server/client/mapper which return appropriate values from CritterTypes.fos were added uint GetCritterAlias(uint crType) string@ GetCritterTypeName(uint crType) string@ GetCritterSoundName(uint crType) Mapper’s scripts were moved to server’s scripts folder. Also the whole set of functions for operating with CritterTypes.fos was added to Mapper bool IsCritterCanWalk(uint crType) bool IsCritterCanRun(uint crType) bool IsCritterCanRotate(uint crType) bool IsCritterCanAim(uint crType) bool IsCritterAnim1(uint crType, uint anim1) int GetCritterAnimType(uint crType) uint GetCritterAlias(uint crType) string@ GetCritterTypeName(uint crType) string@ GetCritterSoundName(uint crType) Specifications of client’s reserved functions were changed animation2d_process, animation3d_process parameter bool animateStay was added to the beginning. It indicates if any action is performed now (false) or stand animation (true). Reaction for global map’s interface buttons pressing when the size of map’s area (GmapMap) covers the buttons area was fixed. Bug with incorrect loading/saving maps in which script’s or function’s name consists of spaces was fixed. Bug with potential server crashing when using AI_PLANE_MISC was fixed. Rev.140 http://www2.xp-dev.com/sc/change/94227/140 Some robots from Fallout Tactics (look the next revision). Rev.139 http://www2.xp-dev.com/sc/change/94227/139 The next quests were added in San Francisco: “Introduction into Hubbology”, “Hub’s justice”. Transport to Atoll is available for the players who are doing “Introduction into Hubbology” quest (npc is in the docs area of San Fracisco); Automatic transfer to the command center of GECK city citizens when entering the map was removed. Now citizens can choose spawn point. Quest location “Hubbologists laboratory” was added (author JunoReactor). Rev.138 http://www2.xp-dev.com/sc/change/94227/138 Arroyo: Quest “Evidence of Chosen’s death” was added (Todd Stewart); Two courier quests were added (Cassidy, Todd Stewart); Encounter fixes: Fixed bugs of the 120 revision; Fixed random encounters where normally aggressive npc’s didn’t attack after fighting with the other npc’s; Fixed bug with unlimited experience in Den; Fixed mistakes in NCR quests cooldowns; Slight dialogues fixes. Rev.137 http://www2.xp-dev.com/sc/change/94227/137 Ability to specify the layer of tiles/roof to organize correct query of displaying. Totally there can be 5 layers, from 0 to 4. You can switch between them with pressing shift and pressing appropriate key (from 0 to 4). Indication of the current layer is specified in the map’s supplemental information (in upper right corner). Specification of MapperMap AddTile/AddTileName methods was expanded, also layer parameter was added void AddTile(uint16 hexX, uint16 hexY, int offsX, int offsY, int layer, bool roof, uint picHash) void AddTileName(uint16 hexX, uint16 hexY, int offsX, int offsY, int layer, bool roof, string@+ picName) Functions for hash calculation by file’s name and inverse function were added to the native scripts const char* (*GetNameByHash)(uint hash); // Get name of file by hash uint (* GetHashByName)(const char* name); // Get hash of file name The functional for operating with the chosen’s actions was added to the client’s scripts. For taking or specifying the actions use functions uint GetChosenActions(uint[]@+ actions) void SetChosenActions(uint[]@+ actions) This array consists of blocks of seven variables, the first is the type, the other are the parameters. Values of types and parameters look in _client_defines.fos Chosen actions. Argument with the location was added to the reserved function for checking the entries into this location bool entrance_FuncName(Location& loc, Critter@[]& critters, uint8 entrance) The next events were added for critters CRITTER_EVENT_USE_ITEM_ON_ME bool EventUseItemOnMe(Critter& whoUse, Item& item) CRITTER_EVENT_USE_SKILL_ON_ME bool EventUseSkillOnMe(Critter& whoUse, int skill) In the calls stack it is situated between CRITTER_EVENT_USE_* and the global handler. That is CRITTER_EVENT_USE_ITEM for the player + CRITTER_EVENT_SMTH_USE_ITEM for those who can see the player. CRITTER_EVENT_USE_ITEM_ON_ME The global handler critter_use_item. and CRITTER_EVENT_USE_SKILL for the player + CRITTER_EVENT_SMTH_USE_SKILL for those who can see the player. CRITTER_EVENT_USE_SKILL_ON_ME The global handler critter_use_skill. The supplemental information (current hex, fps, etc.) in Mapper is presented in the upper right corner. Bug of 135 revision with transparent tiles when placing them was fixed. Data connected with unfinished mechanism of textured grid was deleted. Rev.136 http://www2.xp-dev.com/sc/change/94227/136 Maps converted to text format. Rev.135 http://www2.xp-dev.com/sc/change/94227/135 Now only text format is used for maps, it is binary only for loading. All maps are converted to the text format (they will be uploaded with the next revision). Extension of this format is “fomap”. To convert your own maps to the new format – execute in Mapper ““#ConvertMaps”, then you should manually or using Mapper set required values in Time, NoLogOut, ScriptModule, ScriptFunc fields, which values you can see in file Maps.cfg. File Maps.cfg is not used anymore, locations prototype numbers are defined opposite to their name in file Locations.cfg, as in the most cases the one map prototype is used for the one location. According to these changes, the next MapperMap methods are deleted: uint GetTile(uint16 tileX, uint16 tileY, bool roof) const void SetTile(uint16 tileX, uint16 tileY, bool roof, uint picHash) string@ GetTileName(uint16 tileX, uint16 tileY, bool roof) const void SetTileName(uint16 tileX, uint16 tileY, bool roof, string@+ picName) And the next are added: uint GetTilesCount(uint16 hexX, uint16 hexY, bool roof) const void DeleteTile(uint16 hexX, uint16 hexY, bool roof, uint index) uint GetTile(uint16 hexX, uint16 hexY, bool roof, uint index) const void AddTile(uint16 hexX, uint16 hexY, int offsX, int offsY, bool roof, uint picHash) string@ GetTileName(uint16 hexX, uint16 hexY, bool roof, uint index) const void AddTileName(uint16 hexX, uint16 hexY, int offsX, int offsY, bool roof, string@+ picName) Also the next fields are added: const int WorkHexX const int WorkHexY int Time bool NoLogOut string ScriptModule string ScriptFunc The next methods are deleted (as their technology is not good enough for now): string@ GetTerrainName(uint16 tileX, uint16 tileY) cons void SetTerrainName(uint16 tileX, uint16 tileY, string@+ terrainName). Function bool SaveMap(MapperMap@+ map, string& fileName, int pathType, bool text, bool pack) now looks as bool SaveMap(MapperMap@+ map, string& fileName, int pathType). The ability to transmit commands /text /pack when saving by the console is deleted respectively. Several functions for operating with map’s fields were added to mapper script (you can do this procedure simply editing necessary field in the map’s file with text editor): #MapTime value – map’s time in minutes; #MapNoLogOut value –possibility to log out on the map; #MapScriptModule moduleName – script, module’s name; #MapScriptFunc funcName – script, function’s name. Now it is possible to place lots of sprites on one hex. Be attentive, fallout’s tiles have the same size and if you place two tiles on the same hex, you won’t see it (only if you select it , it will be less transparent than the others). Take it into account when you place or copy-paste tiles. Function #ClearTiles can help you with this problem, it deletes superfluous tiles from the hex. So, if you operate with fallout’s tiles and you don’t need several tiles on the same hex, execute this script when you finish work. Also you can place tiles on every hex, not in two. Ability of shifting is added for tiles. To produce tile shift just make the same operations as switching between tiles, but additionally pressing shift. Also you can use the same shift procedure for items. To cancel shift, press Alt with Shift and move objects. Fixed 130 revision’s bugs. Fixed bug with absence of shifting in fofrm with one sprite. Fixed bug with error in loading sprites in scripts (LoadSprite), which caused several other bugs. Remained ini files were formatted. Rev.134 http://www2.xp-dev.com/sc/change/94227/134 Config was uploaded by mistake. Take into accont, don't use config file from 132 and 133 revisions, admin pass is "hh" there. Rev.133 http://www2.xp-dev.com/sc/change/94227/133 Redding maps fixed, quest NPC were added. Rev.132 http://www2.xp-dev.com/sc/change/94227/132 Fixed "Anger" quest, the missing dialogue was restored, now it can be finished. Added quest "Forgery". (VC, Linnet) Rev.131 http://www2.xp-dev.com/sc/change/94227/131 New quests "Anger", "Ernst Telman" were added. (VC, Linnet) Fixed bug in VC guard's AI scripts. Fixed mistakes in quest “Amnesty for Joshua” dialogues. Ability to cancel their service for mercs/companions was added if the owner exits from location to the global map. Rev.130 http://www2.xp-dev.com/sc/change/94227/130 Support of graphics files SPR, TIL, ZAR from Fallout Tactics was added. Support of data files BOS from Fallout Tactics was added (works as ZIP archieve). For loading certain animation from SPR files, state it in the name after “$” sign. E.g. loading CrouchAttackClubSwing animation from file Mutant.spr - “Mutant$CrouchAttackClubSwing.spr”. The first frame of first animation is taken without direction. Also, ability to set certain palette for ART files (graphics files from Arcanum) was added – state palette’s number (from 0 to 3) after “$” sign. E.g. to load dfmbnsba.art file with the second palette - “dfmbnsba$1.art”. First palette is taken without direction (that is 0). Operation with sprites was changed. Now all interface graphics (which is set in ini files) is represented not as one sprite, as continuously played animation. Functional for operation with currently drawn sprites on the map was added to the native client’s and mapper’s scripts. Structures: struct Sprite – displayed sprite; struct SpriteInfo – additional information about the sprite. Functions: Sprite* (*GetDrawingSprites)(uint& count); - currently drawn sprites, if no sprites (on the global, menu), then NULL is returned and count == 0; SpriteInfo* (*GetSpriteInfo)(uint sprId); - getting additional information about certain sprite; uint (*GetSpriteColor)(uint sprId, int x, int y, bool affectZoom); - getting pixel’s colour, with the ability of taking zoom into account; it isn’t available for 3d models yet; format - ARGB; bool (IsSpriteHit)(Sprite sprite, int x, int y, bool checkEgg); - test whether the point on the display matches with the current sprite with taking zoom, transparence and egg of transparence into account (optional). The reserved native global variable GameOpt was renamed to Game. Global variables int __MouseX, __MouseY for current mouse position indication were added. Function void GetMousePosition(int& x, int& y) was deleted. Indication of opened console bool __ConsoleActive was added to client’s scripts. Bug with memory leak when rendering 3d graphics to sprites was fixed. Rev.129 http://www2.xp-dev.com/sc/change/94227/129 Added ability to use robot-guards from Sierra as bodyguards (for those who had completed quest "No-sweat job" in Navarro) Added quest "Amnesty for Joshua" (VC, Amanda) Work of teleport on special encounter "Mad scientist's laboratory" was restored. Rev.128 http://www2.xp-dev.com/sc/change/94227/128 Second stable SDK assembly. For the purpose of decreasing repository's size, assemblies will be stored in another places. Links you can find in text files. Rev.127 http://www2.xp-dev.com/sc/change/94227/127 Quest "No-sweat job" in Navarro. Rev.126 http://www2.xp-dev.com/sc/change/94227/126 Mercenaries and companions mechanism (merc.fos) was updated. Now every companion has term of service. Companions don’t meddle in player’s showdowns with NPC’s. Fixed quest “Dip.Courier”. Now it can be finished. Fixed quest “Dock’s attack”. Now it can be finished after killing 5 giant insects. Added 3 new mercs for Lo Pan. Updates NPC-travellers mechanism (traveller.fos). The first NPC-traveller was added (eli.fos). Functions which cooldowns checkup for NPCs in dialogues were fixed. When character dies, all items with flag ITEM_GAG are deleted. Fixed cooldowns for quests “Hub bibliography”, “Sick Brahmin” and in the dialogue with dr.Klaus for stimpacks and first aid kits delivery. When NPC repairs an item, ammo is ejected. Script for NPC monologues realization was added. (monologue.fos) Rev.125 http://www2.xp-dev.com/sc/change/94227/125 Fixes of password encryption in the client's files. Rev.124 http://www2.xp-dev.com/sc/change/94227/124 Fixed bug with graphics loading in the previous update. Rev.123 http://www2.xp-dev.com/sc/change/94227/123 DAT2.1 (Arcanum) files support was added. ART (Arcanum) graphic format was added. Function for operating with strings splitEx was added. Principle is the same as in split, but empty elements are not included in the result array. Also spaces/tabs/string_hyphenation are deleted from the result elements. Examples: split(“A|B||D”, “|”) -> {“A”, “B”, "", “D”} splitEx(“A|B||D”, “|”) -> {“A”, “B”, “D”} split(“A| B\t\t||D| E|F ”, “|”) -> {“A”, “ B\t\t”, "", “D”, “ E”, “F ”} splitEx(“A| B\t\tC||D| E|F ”, “|”) -> {“A”, “B”, “D”, “E”, “F”} Additional DrawSprite functions for the client and mapper were added. You can transfer true with the last argument and as the result, the shift which is stored in the current file will be added to the sprite’s position. void DrawSprite(uint sprId, int sprIndex, int x, int y, uint color, bool applyOffsets) void DrawSprite(uint sprId, int sprIndex, int x, int y, int w, int h, bool scratch, bool center, uint color, bool applyOffsets) Fixed bugs with incorrect ini settings parsing in the scripts. Rev.122 http://www2.xp-dev.com/sc/change/94227/122 Client scripts updates: For the reserved function void render_iface(uint layer) was added calling with value layer 100 to give the ability of drawing on the global map. Also the next global variables were added for operating with the global map: bool __GmapActive – whether global map is active and all the variables below are correct; bool __GmapWait – whether waiting mode of encounter affirming is active; float __GmapZoom – current zoom, don’t forget it to take into account while drawing a map; int __GmapOffsetX, __GmapOffsetY – map shift from the zero-coordinate (up-left corner); int __GmapGroupX, __GmapGroupY – player’s group coordinates; int __GmapMoveX, __GmapMoveY – destination point’s coordinates; float __GmapSpeedX, __GmapSpeedY – movement speed every 50 ms, without taking relief into account For example, calculating the current pixel group’s position - (x = __GmapGroupX / __GmapZoom + __GmapOffsetX), (y = __GmapGroupY / __GmapZoom + __GmapOffsetY). Fixed bug with hanging when drawing 3d model, occurred in the last update. Fixed missing bracket in English texts. (by Kilgore) Rev.121 http://www2.xp-dev.com/sc/change/94227/121 Added more mouse sensitivity and now you can see mouse’s speed percent in the settings. Updated FOConfig.exe. Added AlwaysRun option. Possible values for option Mouse speed were corrected. Option Sleep now can be set to -1, that means switching it off (maximum performance). Added ability of redirecting keyboard’s symbol codes input. For this, use option KeyboardRemap (in FOnline.cfg). It is performed after space – X Y X Y …, where X is the code which is substituted by Y. Code numbers - http://fonline.pastebin.com/Qy3E0qwj Interface description in default.ini is formatted and commented. (by LoadRunner) Location prototypes updates: Option max_copy was deleted. Option max_players was added. It limits the amount of players who can be on the location simultaneously. Players, who can’t enter location because of exceeding the limit will see message 904 from FOGAME.MSG {904}{}{Location is overcrowded, try to enter later.} Password encryption in server *.client. files was added. Mouse shift when switching between movement modes was fixed. Also, for more accurate work, the hex mask was added – look \Client\data\art\misc\hex_mask.png. Only red colour is taken into account and when it takes on certain value, the shift to certain direction is performed (50 – 5, 100 – 0, 150 – 3, 200 – 2). The mask is optional, you can work without it. Fixed loading/saving tiles in the maps text format. Fixed global map shifting behind screen’s edge. Registration of useless clicks in mapper when switching between windows, now isn’t performed. Fixed the animation of 3d critter standing when situating them on the map. Also now 3d critters don’t play standing animation in the critter’s list. Fixed displaying of critters which have only one direction. Fixed command ~reloadscripts. Now when you mark items for deleting (DeleteItem/DeleteItems), their quantity is saved. So, in the moment when real deleting is performed, server will delete the requested number of items. Now knockout during turn-based fight leads to immediate loosing action points, not after finishing the turn. Also, frequent checks for the necessity of finishing the turn were added at the server - if critter’s dead, critter has negative AP, critter has no more AP. Scripts: Fixed critter’s flags (Critter extra flags, _defines.fos). Fixed special encounter scripts Guardian of Forever, Mad Brahmins. Script trader.fos was formatted. Reserved function was added to client scripts, which is called with attacks void hit_aim(uint8& aim) aim value can be redefined( Hit locations in _defines.fos). Function int Critter::GetScore(uint score) was added to server scripts. Specification Critter::AddScore(int score, int val) was changed to Critter::AddScore(uint score, int val). Function for calculation the size of drawn text was added to client and mapper scripts void GetTextInfo(string& text, int w, int h, int font, int flags, int& tw, int& th, int& lines) string& text – text; int w, h, font, flags – height, width, print, flags; int& tw, int& th, int& lines – total width, height and amount of strings in the current text. Rev.120 http://www2.xp-dev.com/sc/change/94227/120 Unused encounter tables for Fallout 1 and commented original’s scripts were deleted from worldmap_init.fos; Random encounters of “beasts versus beasts” type were enabled, which were presented in the scripts, but were absent in the original. Added some new kinds of non-unique random encounters. Now, if player uses to kill NPC’s of certain group or organizations on random encounters, then they become aggressive. Vault City guard’s automatic search is deactivated. Now you need to activate the dialogue to pass through. Fixes in English dialogues versions. Maps fixes. Rev.119 http://www2.xp-dev.com/sc/change/94227/119 Fixed lots of little mistakes in dialogues; Fixed bugs in some Den and Klamath quests; Maps fixes; Duplicate dialogues with different names were deleted. Rev.118 http://www2.xp-dev.com/sc/change/94227/118 Fixed modificator's argument from Parent-0-7 to Parent0-7. Rev.117 http://www2.xp-dev.com/sc/change/94227/117 Added dialogues to Arroyo doctor and his team. Slight fixes (dialogues, maps). Rev.116 http://www2.xp-dev.com/sc/change/94227/116 Library for importing different 3d models was enabled – Assimp http://assimp.sourceforge.net/ Formats that are supported: http://assimp.sourceforge.net/main_features_formats.html Built-in one is still used for X format, for other ones – this library. If you don’t need the library, you can delete it (file Assimp32.dll), client and mapper are able to work without it. Updated mechanism of linking models and animations, now you can link any animation to any skeleton from any file. fo3d format changes: Modificator ModelAnimation was deleted. Modificators Anim, RenderFrame, RenderFrames were expanded – now file name which consists needed animation is placed before the animation’s name (if you state “ModelFile”, then search is performed in the file of loaded model)/ Specification of indicating parent texture (Texture X Parent) was expanded. Now you can additionally state the mesh number and its part, from which the texture is taken - Texture X ParentY-Z, where X is the texture’s number, Y is mesh number, Z is mesh part number; parameters Y-Z are optional, you may don’t use them at all or you may use them partly (Parent, Parent0, Parent-5). Fixed bug with incorrect script processing when operating with Critter::ShowScreen. Fixed bug with incorrect operating and crashing when using Log function with some special symbols. Added Combat Armor 3d model (by Gray). Rev.115 http://www2.xp-dev.com/sc/change/94227/115 Added special encounter "Warehouse of lost doughnuts" (author - Ponchik). Scripts for some original special encounters (author - Cracker). Remade some prototypes. Windows without glasses in Vault's walls can be shooted through now. Slight fixes. Rev.114 http://www2.xp-dev.com/sc/change/94227/114 Maps for quests from the 113 revision. Rev.113 http://www2.xp-dev.com/sc/change/94227/113 Klamath: quests - "Worker searching", "Husband's alert", "Brahmins vaccination" (author - Ponchik). Slight fixes. Rev.112 http://www2.xp-dev.com/sc/change/94227/112 Finished appearance of random encounter "Ocean Trader". Slight maps, dialogues and graphics fixes. Added buttons for BarterGround, GECK town, Warehouse and Hell for the global map (author - Ponchik). Slight fixes. Rev.111 http://www2.xp-dev.com/sc/change/94227/111 Added additional mechanism for data files loading (dat, zip). It is necessary for loading data files loading before scripts initializing and processing start() function as some date is needed to be used before this (effects, prints and some other resourses). For adding files to loading – create DataFiles.cfg file in which you should list all necessary file names. The program searches for the content from the last to the first data file. This mechanism uses server, client, mapper. If list isn’t found then no alerts will be displayed. If one of the files from the list can’t be found or load error appears, then alert will be shown. Option PatchDatPath was deleted, loading of this file is moved to DataFiles.cfg. Rev.110 http://www2.xp-dev.com/sc/change/94227/110 Fixed model's borders calculating which caused nick or text shift above critter's head. Rev.109 http://www2.xp-dev.com/sc/change/94227/109 Fixed skin setting-up when registration 3d character. Fixed order of loaded packs (dat, zip) scanning while searching and parsing ini files. Addition to 106 revision – for stating specific keys for certain resolutions now are used not separate files with different names, but marks in the main file. At the start of the string write “resolution”, than min. width and height for starting using these options. By default these values are equal to zero. For example: "resolution 1024 768 key = value..." It means, that “key = value ...(and so on till the next keyword ”resolution”)” will be included in the final ini. Found data will be inserted in the main file as screen width grows. Rev.108 http://www2.xp-dev.com/sc/change/94227/108 Actual cash files. Rev.107 http://www2.xp-dev.com/sc/change/94227/107 SDK is switched to 3d players mode. Normal version will be restored after finishing mechanism debugging process. For switching off 3d players models – comment the next strings in Server\scripts\_defines.fos #define PLAYERS_3D // Enable 3d players #define PLAYERS_3D_NO_HEAD // No head slot #define PLAYERS_3D_VAULT_SUITE // Vault suite by default, not naked 3d updates: Fixed and reduced the size of attributes and weapons. Added missing attributes of opened pipboy. In the left hand now is displayed the item, which player has in the second slot. Armor’s models are divided between the current armor items in the such way, that gamer could see the difference. For example combat armor consists of power armor and the helmet, robes are replaced by jail suit and etc. Fixed animation playing during creating the new character in single mode. Added skin change processing in start intro and after Kitty’s haircut. Added skeleton’s skins. Added sound for men and women. Fixed sound name for critters parameter’s loading (CritterTypes.cfg, SoundName). Now characters walk slowly with double click if alwaysrun option is turned on. Rev.106 http://www2.xp-dev.com/sc/change/94227/106 Added ability to make 3d characters available to play for. To enable it (it is disabled as default) - comment certain strings in _defines.fos // #define PLAYERS_3D // Enable 3d players // #define PLAYERS_3D_NO_HEAD // No head slot // #define PLAYERS_3D_VAULT_SUITE // Vault suite by default, not naked Updated mechanism of working with ini files. Now, when searching for the keys, excess spaces and tabulations are skipped (now you can type “ key = value ”, previously was correct only variant “key=value”) Added function bool AppendIfaceIni(string& iniName), which enables additional ini files. If the name includes slashes, than the search is being performed from data root, if not - than from folder data/art/interface/. default.ini is added automatically by the engine, others you can enable in start() client function. Loading is performed sequentially from default.ini to ones enabled by user by turn. Every packed file is checked by the turn of loading, then in the folder. Global variable string __UserInterface was deleted. Fixed bug with incorrect parsing of animation indexes in fo3d file. Fixed bug with incorrect position of the egg of transparence in zoom mode. For better readability the next scripts were formatted: start_server_client.fos client_main.fos In the future this practice will be continued. Rev.105 http://www2.xp-dev.com/sc/change/94227/105 Documentation update - slight fixes. Rev.104 http://www2.xp-dev.com/sc/change/94227/104 Added structure of script array (ScriptArray) to native scripts. Added ability to client's native scripts of calling hex data - Field. Data is stored in Field* GameOptions::ClientMap, uint GameOptions::ClientMapWidth/ClientMapHeight. If map is loaded, than ClientMap != NULL, hex calling - ClientMap[hexY * ClientMapWidth + hexX]. Rev.103 http://www2.xp-dev.com/sc/change/94227/103 Added always run option - can be enabled in client's config file “AlwaysRun”. Disabled as default. Added global variables for AlwaysRun regulating: bool __AlwaysRun (as default - false) - enabling AlwaysRun ability; uint __AlwaysRunMoveDist (as default = 1) - run with click, if distance is equal or more than the value; uint __AlwaysRunUseDist (as default = 5) - run with using smth/dialogue/etc, if distance is equal or more than the value. TLA's mechanics is equal to original - always run with click, always run with using if distance is more than 4 hexes. Added parameter uint Critter::ItemTransferCount to native scripts. It stores the value of transferred items during the last transaction. Rev.102 http://www2.xp-dev.com/sc/change/94227/102 Optimized server operation (script calling) in one tread operation mode, performance increased up to 400%. Fixed bug with crash when calling Critter::Say* methods with parametr SAY_SAY_TITLE. Rev.101 http://www2.xp-dev.com/sc/change/94227/101 Changes in fo3d format, new specification was created - look this theme: http://www.fonline.ru/forum/showthread.php?t=19689 New format added new abilities of working with 3d objects - trasmission of texures, other paremeters, etc. Also added ability to render certain animation to sprites as for one frame, either for the whole animation. But the bug with cutting off the shade situated below the lowest edge of model still presents. Updated old fo3d files, also VanBuren's critters and weapon models were added. Changed effects structure, added effect for normal mapping (3D_NormalMapping.fx). Added transfer of real numbers through scripts, float __EffectValue0..9. Fixed bugs with loading 3ds files - miss of meshes except the first; crash if texture coordinates are not presented. Fixed bug in Mapper with data copying when copy-pasting a large number of objects. Fixed text centering of hexes amount in zoom mode. Rev.100 http://www2.xp-dev.com/sc/change/94227/100 Documentation update. Rev.99 http://www2.xp-dev.com/sc/change/94227/99 Updated documentation file, which was missed in the previous revision. Rev.98 http://www2.xp-dev.com/sc/change/94227/98 Added resourse gathering system; Documentation updating. Rev.97 http://www2.xp-dev.com/sc/change/94227/97 Fixes of "Night is tender" quest, now healing must work properly. Added preview from global map for GECK location. Rev.96 http://www2.xp-dev.com/sc/change/94227/96 Gecks counting on the location now affects its auto moving away and visibility separately; Parameter geck_enabled (Map::GeckEnabled) renamed to geck_visible (Map::GeckVisible). Rev.95 http://www2.xp-dev.com/sc/change/94227/95 Added global server function void SetChosenSendParameter(int index, bool enabled) which can denie transmitting parameters to client. Transmitting of all parameters is enabled by default. Rev.94 http://www2.xp-dev.com/sc/change/94227/94 Fixes of sea encounter maps. Rev.93 http://www2.xp-dev.com/sc/change/94227/93 Added sea encounters; Added posibility of an encounter while travelling on air/water transport; Player always have possibility of cancellation water/air encounter and never gains experience for that; Bug fix in mapper with incorrect editing critter's parameters. Rev.92 http://www2.xp-dev.com/sc/change/94227/92 Fixed displaying rating in pipboy. In mapper additional indication of cut sprites was added to make lines, which are needed for correct interaction, visible. Rev.91 http://www2.xp-dev.com/sc/change/94227/91 Added traffic encryption between server and client. Rev.90 http://www2.xp-dev.com/sc/change/94227/90 Fixed choosing automatically cut sprites in zoom mode. Rev.89 http://www2.xp-dev.com/sc/change/94227/89 Added parametr DrawOrderOffsetHexY for shifting order of drawing lower (Y axis). This is an analogue for recently deleted DrawPosOffsX. Fixed using car trunk. Different slight fixes. Rev.88 http://www2.xp-dev.com/sc/change/94227/88 Fixed exit from Redding; slight fixes. Rev.87 http://www2.xp-dev.com/sc/change/94227/87 Fix for weapon AP cost. Rev.86 http://www2.xp-dev.com/sc/change/94227/86 May be fixed bug with incorrect displaying of some tiles. Fixed bug with unworking elevators. Added restoration of effects when loosing a device (cause crashed e.g. with alt+tab) Rev.85 http://www2.xp-dev.com/sc/change/94227/85 Fixed bug with chat disappearing. Fixed AI bug when combat plans always finished with REASON_CANT_WALK. Rev.84 http://www2.xp-dev.com/sc/change/94227/84 Fix for DT params reading. Rev.83 http://www2.xp-dev.com/sc/change/94227/83 Safety checks for radio commands. Rev.82 http://www2.xp-dev.com/sc/change/94227/82 Fixes of some dialogues; translations of dialogues on Barterground; map fixes; fixes of encounter table; slight fixes. Rev.81 http://www2.xp-dev.com/sc/change/94227/81 Fixed another bug during moving on the global map. Fixed unplanned activating of b/w effect. Rev.80 http://www2.xp-dev.com/sc/change/94227/80 Fixed teleportation bug during moving on the global map. Rev.79 http://www2.xp-dev.com/sc/change/94227/79 Fixed bug with incorrect tear and wear and fuel consumption calculation during moving on the global map by car. Rev.78 http://www2.xp-dev.com/sc/change/94227/78 Fixed brightness output. Fixed outlining activation. Rev.77 http://www2.xp-dev.com/sc/change/94227/77 Added automatic sprite cutting. Main purpose – correct displaying of long walls. Parameter SpriteCut was added to prototypes and mapper (only for scenery) for modification. Cutting values: 0 – switched off, 1 – horizontal (X axis), 2 – vertical (Y axis). Wall blocks should be set manually , for that purpose six blocks with different corner types with visual indication were added. It is necessary for correct calculation of brightness and egg of transparence reaction. Numbers 6800..6805 at the end of Wall and Fast list. Fixed client instability after recent update. Primary indexes array for animations was expanded to the range ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789. For value changing use native means (structure CritterType in fonline.h). Support of effects (HLSL) loading with earlier version of compiler. Automatic attempt of compilation is performed after failure in compilation with the current library. Added data updating for client function GetIniStr in the start function (start) after each call of LoadDataFile. Mapper update: Fixed bug with error in loading tiles with extension not in lower case. Fixed algorithm of sprite displaying calculation (when big sprites were disappearing near the screen edge). Additional visual means for debugging: - Ctrl + Q: Corners type viewing; - Ctrl + W: Viewing the result of sprite cutting, linking them to hexes; - Ctrl + E: Viewing the sequence of sprites drawing. At the time of renewing NPC’s bag, only items which are not in inventory are repaired and reloaded. Added ability to set sprite shift in screen coordinates to prototypes. Fixed bug with double notification of quest state change. Rev.76 http://www2.xp-dev.com/sc/change/94227/76 Added quest “Night is tender” Rev.75 http://www2.xp-dev.com/sc/change/94227/75 Tables for sea encounters, slight fixes. Rev.74 http://www2.xp-dev.com/sc/change/94227/74 Source documentation. Rev.73 http://www2.xp-dev.com/sc/change/94227/73 SPECIAL calculating is moved to native scripts - fonline_tla.dll for server and fonline_tla_client.dll for client (must be situated in data\scripts). The other parameters which are used in the engine are needed generally for drawing GUI, but soon they’ll be moved to scripts too. Native scripts files are moved from data folder to scripts. Added bat-file make_tla.bat for their compilation (installation of MSVS8 is necessary). For example of use new methods for critter classes are added (IsInjured, IsDmgArm...), items (IsHtHAttack, IsGunAttack...) with pragma bindfunc. Example of linking global varieties of standard and native scripts is added (__HitAimEyes, __HitAimHead..., these global varieties are moved to scripts). Callback functions are added (to GameOptions) for item usage cost determination - GetUseApCost. For attack max range determination - - GetAttackDistantion. It further such functions will force out usage of critter parameters in the engine. These functions are binded at the stage of connecting of library to the engine (DllMainEx). For operating with the engine added the next functions (to GameOptions): CritterChangeParameter – for correct change of critter parameter, this function should be called firstly, then you can change the value. CritterTypes – index of CritterType structures where data from CritterTypes.cfg is stored. Added method to client’s critters for detection whether now is time of its move in the turn-based mode bool CritterCl::IsTurnBasedTurn() const Some logics of operating with turn-based mode is moved to the scripts - turn_based_process main.fos. Some recommended specifications for the reserved functions are changed - templates.fos. Min. time of dialogue or barter with NPC now is regulated by the global varieties __DlgTalkMinTime (now default 100 seconds) и __DlgBarterMinTime (now default 50 seconds). Range for all prototypes (maps, locations, items) is expanded to 30000. Fixed bug with incorrect drawing of minimap in the pipboy. Fixed bug with incorrect calculating of healing rate while registration. Fixes of Zerg’s special encounter. Rev.72 http://www2.xp-dev.com/sc/change/94227/72 Data library for script compilation (updated on 27 October) Rev.71 http://www2.xp-dev.com/sc/change/94227/71 Added Zerg special encounter. Fixed bug with incorrect names in Fixboy. Added function LoadDataFile to server scripts, analogue of client/mapper. Fixed mistiming of player movement on global map. Deleted function Critter::SendQuestVar, now alert about changing of local variable is automatic. Changed function specification void ShowScreen(int screenType, uint param, string& funcName) to void ShowScreen(int screenType, uint param, string@+ funcName), now can transmit both empty string or null. Rev.70 http://www2.xp-dev.com/sc/change/94227/70 Documentation is updated. Deleted incorrect splash-picture. Added urgent files for scripts autoaddition in Notepad++. Rev.69 http://www2.xp-dev.com/sc/change/94227/69 Added ability to use your own shaders for game graphics drawing. High Level Shader Language is used for this. Effects folder is situated in data\effects. After the first compilation they are cashed in the folder data\cache (in futher other different data will be cashed there). You can read specifications on the game engine effects in data\effects\ReadMe.txt. Added ability to link any effect to sprite or model in .fofrm and .fo3d (“effect=effect_name.fx”). For default effect changing, function void SetEffect(int effectType, int effectSubtype, string@+ effectName) was implemented into the client scripts. int effectType, effectSubtype – effect types look in _client_defines.fos (Subtype for fonts used font type); string@+ effectName – the name of the effect file (with extension) is in the folder data\effects. Added changing of detailization of game objects for demonstration. For activation press Alt+W, for return press Alt+Q. Added client function for map redrawing void RefreshMap(bool onlyTiles, bool onlyRoof, bool onlyLight) if all three parameters are false, than everything will be redrawed. Also these three parameters are incompatible. Fixed bug in mapper with impossibility of viewing 3d critters in prototypes table. At present time they can’t be ranged. Added ability to play sounds/music from different folders. void RefreshMap(bool onlyTiles, bool onlyRoof, bool onlyLight) If there isn’t slashes (‘/’,‘\’) in path name than search is performed in the folder sfx/music. If there are slashes, than in the root (“data/mysounds/mysound.ogg”). Rev.68 http://www2.xp-dev.com/sc/change/94227/68 Fixed bug in the ObjectEditor when damage type is saved incorrectly. Rev.67 http://www2.xp-dev.com/sc/change/94227/67 Fixed crashing when calling CritterCl::[Param/Stat/Perk/etc]Base in client scripts; Fixed error with recording Anydata of zero length (by Atom). Rev.66 http://www2.xp-dev.com/sc/change/94227/66 Fixed incorrect weapon prototype; errors in checking for special encounters; added decraft of the sand sack to fixboy; other little fixes. Rev.65 http://www2.xp-dev.com/sc/change/94227/65 Redding: finished map according to the last concept; - Garbage was returned to static locations; - Ammo craft on benches (beta-version); - Destruction of the sack using skill repair now gives use empty sack. - Entering Den message was moved to texts from script. Rev.64 http://www2.xp-dev.com/sc/change/94227/64 AngelScript updated to 732 revision. Added new methods for arrays: void T[]::insertAt(uint, const T&) – element inserting in specified position in the array; void T[]::removeAt(uint) – deleting the element by index; void T[]::insertFirst(const T&) – element inserting to the beginning of the array; void T[]::removeFirst() – deleting the first element; void T[]::insertLast(const T&) – element inserting to the end of the array; void T[]::removeLast() – deleting the last element; void T[]::grow(uint) – add elements (the sames as a.resize(length()+X)); void T[]::reduce(uint) – delete elements (the same as a.resize(length()-X)); T& T[]::first() – call of the first element of the array (the same as a[0]); T& T[]::last() – call of the last element of the array (the same as a[a.length()-1]). Also deleted all functions ArrayPushBack as the built-in array functional was expanded. All the scripts were fixed accordingly. Rev.63 http://www2.xp-dev.com/sc/change/94227/63 Added ability to start the server as a service. For registration/start use key “-service” (shortcut FOServerService.exe.lnk). For deleting use keys “-service -delete” (shortcut FOServerServiceDelete.exe.lnk). Added ability to log using function OutputDebugString. The log can be caught (even remotely) using program DebugView http://technet.microsoft.com/en-us/sysinternals/bb896647.aspx For switching it on in server and client configs option LoggingDebugOutput is added. Server/client/mapper will work normally now with incorrect active folders. At start you set the current folder of executable. Fixed bug with absence of replacement “x” by “ч” in built-in punto switcher. Fixed crash in turn based mode and incorrect work of Map::GetCritter(uint critterId). Rev.62 http://www2.xp-dev.com/sc/change/94227/62 Fixed bug with updating vehicle data on the global map. Fixed bug with system hanging while looking items quantity in game info. Fixed bug with the incorrect login/disconnect. Fixed bug with incorrect creating non-stacking items on the map in the number of >1. Fixed bug with incorrect critters gathering when path tracing (by Atom). CRITTER_EVENT_TALK now performed before checking NPC for settings which could restrict speaking with it. Added new mechanism for script garbage gathering (by Atom). For config file simplification, the next options were removed: ASGarbageTime, VarsGarbageTime. Deleted transfer of a group of critters into global map processing global_process, CRITTER_EVENT_GLOBAL_PROCESS. Also instead of transferring a group into global map processing global_invite, CRITTER_EVENT_GLOBAL_INVITE, now only the leader is transferred. Instead of picking group use Critter@[]@ Critter::GetGlobalGroup(). Because of that, specification methods were changed: bool Critter::EventGlobalProcess(int type, Critter@[]& group, ...) bool Critter::EventGlobalInvite(Critter@[]& group, ...) for bool Critter::EventGlobalProcess(int type, Critter& cr, ...) bool Critter::EventGlobalInvite(Critter& leader, ...) Reserved functions of critter event CRITTER_EVENT_GLOBAL_PROCESS, CRITTER_EVENT_GLOBAL_INVITE bool _FuncName(Critter& cr, int type, Critter@[]& group, ...) bool _FuncName(Critter& leader, Critter@[]& group, ...) for bool _FuncName(Critter& cr, int type, ...) bool _FuncName(Critter& leader, ...) Fixed bug with incorrect cooldown for hijacking, now it is equal for a normal lock. Added checking for unopenable door to the lock break script. Rev.61 http://www2.xp-dev.com/sc/change/94227/61 Fixed bug with incorrect reappraisal of item flags in Mapper. Fixed bug when player isn't notified about moved item. Rev.60 http://www2.xp-dev.com/sc/change/94227/60 Fixed bug with incorrect displaying of the rain on roofs. Rev.59 http://www2.xp-dev.com/sc/change/94227/59 Mapper's fix for correct operating with new folder and print's names. Rev.58 http://www2.xp-dev.com/sc/change/94227/58 For editing use program Bitmap Font Generator v1.12. http://www.angelcode.com/products/bmfont/ Print should have the next attributes - OEM RUSSIAN, Padding 1 (in all directions), Binary, all symbols should be placed on the one texture. All prints are moved in the separate folder “Client\data\fonts\”. For the example print FONT_COURIER_NEW_SMALL is added. Look _client_defines.fos, client_main.fos, CourierNewSmall.bmfc, CourierNewSmall.fnt, CourierNewSmall_0.png. Added function in client’s scripts of activating the clock which shows you the time signal comes to server and returns (ping). You can use it for restriction of input while waiting for server’s answer. Fixed crushing when looking players statistics on server. Fixed crushing of Dialogue Editor (by Atom). Rev.57 http://www2.xp-dev.com/sc/change/94227/57 Expanded mechanism of operating with ingame radio. Added flag ITEM_RADIO for radio. (in _defines.fos). Radio messages are now also sent to radios which are on the ground . For their identification engine sends them with color 0xFFFFFFFE (in map_message in client_main.fos). Realization is in script radio.fos (interface, mechanics), call from main.fos. Interface data is taken from default.ini (Radio*). You can edit it with using item or using science skill on it. Radio data is situated in general fields of several item types. That’s why it isn’t a good idea to use this flag with Doors, Keys, Cars, Weapons, Armors, Holodiscs. Transmitting and receiving functions are separated. For managing the next flags and range types are used (_defines.fos): Restriction of transmitting/receiving is stored in Item/ItemCl::RadioFlags, used by the engine: RADIO_DISABLE_SEND, RADIO_DISABLE_RECV. Restriction of switching radio state in в Item/ItemCl::RadioFlags: RADIO_DISABLE_SHIFT_SEND, RADIO_DISABLE_SHIFT_RECV - restriction of switching transmit/receive; RADIO_DISABLE_SHIFT_BC_SEND, RADIO_DISABLE_SHIFT_BC_RECV - restriction of changing distance range; RADIO_DISABLE_SHIFT_CHANNEL – restriction of channel switching. Range types are stored in Item/ItemCl::RadioBroadcastSend/RadioBroadcastRecv, are used by the engine: RADIO_BROADCAST_WORLD – works all over the world; RADIO_BROADCAST_MAP – works within the limits of the current map; RADIO_BROADCAST_LOCATION - works within the limits of the current location; RADIO_BROADCAST_ZONE(x) - works within the limits of “x” zones on the global map; RADIO_BROADCAST_FORCE_ALL – works everywhere regardless of the adjustments of transmitting or receiving radio/ Added support of these flags to the object editor (both engine and script ones). Added scripts uint16 ProtoItem::RadioChannel, uint16 ProtoItem::RadioFlags, uint8 ProtoItem::RadioBroadcastSend, uint8 ProtoItem::RadioBroadcastRecv. For holodisc marking added flag ITEM_HOLODISK (in _defines.fos). Holodisc data is situated in general fields of several item types. That’s why it isn’t a good idea to use this flag with Doors, Keys, Cars, Weapons, Armors, Holodiscs. Added support of this flag in object editor. Added script uint ProtoItem::HolodiskNum. Added ability to use built-in cartridge indicator for other purposes. Added the next parameters: uint8 ProtoItem::IndicatorStart – initial value, - Item/ItemCl::Indicator; uint8 ProtoItem::IndicatorMax – maximum available value (for correct calculation of the strip position); uint8 Item/ItemCl::Indicator – current value. Mechanism is considered activated if maximum value in the prototype isn’t equal to zero. Added support of editing of initial and maximum values in the object editor. Method Item::GetMapPosition for the items which are in the global map returns their coordinates. Fixed bug with system hanging while looking online statistics. Added storing up to 20 ip addresses for one account (fonline.h). Item prototype’s fields, which are equal to zero, now cannot be saved. All prototypes are resaved. Continued working on multithreading in game logics. Added ignoring of non-initialized maps or locations while loading save (NPC’s would be moved to global map, items - deleted). Fixed bug in the dialogue on BiX location. Updated abilities of GUI scripting. In script _defines.fos notes “Used in engine” are replaced by “Hardcoded”; point is the same - to show that this data is used by engine also. Corrected some specifications in template.fos of reserved functions. Rev.56 http://www2.xp-dev.com/sc/change/94227/56 Changes in craft: some new recipe's (new weapon, etc.), added workbenches in some town/military bases. Rev.55 http://www2.xp-dev.com/sc/change/94227/55 - Updated Redding maps; - Deleted unused graphics; - Added second entrance to NCR; - Some changes in NPC's inventories on encounters. Rev.54 http://www2.xp-dev.com/sc/change/94227/54 - Slight fixes in Hartman's and Shrim's dialogues (Vault City); - Fixed problem with immediate sending off caravans/patrols Ahe9mPDq; - Changed content of the quest variable for the quest "Third trial. Drill." - Restored functions for triggers t_DialogNpc and scenery s_TransitToMap. Rev.53 http://www2.xp-dev.com/sc/change/94227/53 Fixes of KotW location. Quest for oil can can be done by everybody in Arroyo now. Rev.52 http://www2.xp-dev.com/sc/change/94227/52 Fixes of Brok and Xander Church location (by VaultTec) Rev.51 http://www2.xp-dev.com/sc/change/94227/51 Fixed names loading (*Names.lst) with the dialogue editor. Changed extention of its config file. Rev.50 http://www2.xp-dev.com/sc/change/94227/50 Fixed bug with duplicating of time events. Rev.49 http://www2.xp-dev.com/sc/change/94227/49 Slight optimization of multi-threading. Rev.48 http://www2.xp-dev.com/sc/change/94227/48 Fixed error in loading of games variables values. Fixed loading of saves games in single player mode. Rev.47 http://www2.xp-dev.com/sc/change/94227/47 Time events changes. - function specification void EraseTimeEvent(uint num) changed to bool EraseTimeEvent(uint num) Return value shows whether deleting is done or the event isn't found. - Deleted the next functions: uint CreateTimeEvent(uint beginSecond, string& funcName, Critter& cr, bool save) uint CreateTimeEvent(uint beginSecond, string& funcName, Item& item, bool save) uint CreateTimeEvent(uint beginSecond, string& funcName, Critter@[]+ critters, Item[]@+ items, bool save) For migration just put the identificator to the critter or item. Added the next functions for operating with event's values: bool GetTimeEvent(uint num, uint& duration, uint[]@+ values) bool GetTimeEvent(uint num, uint& duration, int[]@+ values) bool SetTimeEvent(uint num, uint duration, uint[]@+ values) bool SetTimeEvent(uint num, uint duration, int[]@+ values) Parametr "duration" - time till the event is done in seconds. Return value means that operation is completed, error means that event wasn't found. These functions are thread-safe, 2 thread can't operate with the events simultaneously. Function GetTimeEvent blocks using (changing) of the event until the script is finished or until SetTimeEvent is called, which unblocks the event. GetTimeEvent writes value to the end of the array, SetTimeEvent rewrites it completely. When null is transmitted to values SetTimeEvent values are not changed. - Event function specification can be of two types now: uint e_FuncName(uint[]@ values) uint e_FuncName(int[]@ values) Fixed bug with crashing while loading 3ds file without texture coordinates. Rev.46 http://www2.xp-dev.com/sc/change/94227/46 Added next fuctional for operating with files (class "file"): - for data reading uint8 file::readUint8() uint16 file::readUint16() uint32 file::readUint32() uint64 file::readUint64() In the case of error or the end of file it returns 0. uint file::readData(uint count, uint8[]& data) If data == 0 then program read all data till the end of the file beginning from the current position. Read data is added to the end of the array. The return value shows the real amount of read bytes. - For data recording bool file::writeUint8(uint8 data) bool file::writeUint16(uint16 data) bool file::writeUint32(uint32 data) bool file::writeUint64(uint64 data) bool file::writeData(uint8[]& data, uint count) If count == 0 it records all data from an array. In the case of error it returns false. Fixed bug with incorrect output of zoom value on minimap. Rev.45 http://www2.xp-dev.com/sc/change/94227/45 Extended range of game variables: - local variable of location (LLVAR_); - local variable of map (LMVAR_); - local variable of item (LIVAR_). When using them in dialogue values are taken from: for location - current critter's location; for map - current critter's map; for item - current item in the main slot. For operating with scripts use function GetLocalVar with transmitting of needed operator. Server will delete unused variables of all types automatically. Deleted server function uint DeleteVars(uint id). Dialog editor was adapted to the last updates of game variables. Added ability to define named value (DefineNames.lst) as a value for conditions and results. Added missed translations. Translations of commit history you can find here: http://www.xp-dev.com/forum/topic/3220 Rev.44 http://www2.xp-dev.com/sc/change/94227/44 Updated format of time output in dialogue with repairer-npc; Added script for realization of npc-travellers on global map.(traveller.fos and Davine's script in sf_common.fos); Added npc-traveller explosives-seller Davine. Can be hired in GECK town; Added trade mode "cash only" MODE_BARTER_ONLY_CASH; Fixed bugs in maps structure on maps with holodiscs. Rev.43 http://www2.xp-dev.com/sc/change/94227/43 Added setting in config which defines whether to bind logic threads to the core or let OS do it. In default it is enabled (1) 1. If zero then operating system automatically manage threads between cores, else affinity thread per core LogicThreadSetAffinity=1 Continued work on multi-threading of game logics. Rev.42 http://www2.xp-dev.com/sc/change/94227/42 Fixed crashing under certain conditions; Fixed cycle counting per second. Rev.41 http://www2.xp-dev.com/sc/change/94227/41 Fixed bug connected with the last update. Rev.40 http://www2.xp-dev.com/sc/change/94227/40 Multi-threading of game logics is now supported. You can read about this in details on the forum; Fixed path of recording/reading ban files; Added seconds on the globalmap clock; Decreased permissible length of text listener of channels and maps from 5 to 2 symbols; Deleted global server function void DeleteNpcForce(Critter& npc); Changed specification of method from uint Location::GetMaps(Map@[]& maps) const to uint Location::GetMaps(Map@[]@+ maps) const Now you can know the amount of maps on the location without recording them into array; Added basic server command ~log (~37). It is intended for text listening of server log. Minimum access: administrator. For adding to text listening you should transmit arguement "+", for disconnecting "-"; Fixed basic creating locations command ~addloc (~16); Upgraded basic command of looking player's id using his name ~id (~4); Changed specifications of global functions void critter_attack(Critter& cr, Critter& target, ProtoItem& weapon, ProtoItem@ ammo, uint8 aim) -> void critter_attack(Critter& cr, Critter& target, ProtoItem& weapon, uint8 weaponMode, ProtoItem@ ammo) int to_hit(CritterCl& chosen, CritterCl& target, ProtoItem& weapon, int hitLocation) -> int to_hit(CritterCl& chosen, CritterCl& target, ProtoItem& weapon, uint8 weaponMode); Added variables for weapons which state their active mode const uint8 Item::Mode const uint8 ItemCl::Mode 4 high-order bits - sight (look Hit locations in _defines.fos), 4 low-order bits - mode (0 – primary, 1 – secondary, 2 – third); Added macroses for convenience _WeaponModeUse, _WeaponModeAim, _WeaponModeMake в _macros.fos; Added returnable value of the current mode in method GetSlotProto (urgent for weapons) ProtoItem@+ Critter/CritterCl::GetSlotProto(int slot, uint8& mode) const; Renamed parametr #define ST_RATE_ITEM (102) to #define ST_HANDS_ITEM_AND_MODE (102) value stored in it: XXXX00YY, where XXXX pid - unarmed blow, and YY - mode. Changed way of the dialogue redirecting. You should use returnable value of result function or say-mode instead of uint __ForceDialog; Added specifications of functions: uint r_FuncName(...), uint dlg_FuncName(...) which are detected by server automatically; Fixed bug with moving pushed players only in one direction; Object pointers (derivatives arrays or class members)Location, Map, Critter, Item, GameVar can't be saved in global varities now. For scripts migration save their identificators (Location::Id, Map::Id, Critter::Id, Item::Id), addresing to the objects with (GetLocation, GetMap, GetCritter, GetItem). Weapons prototypes don't save curret mode of fire (in connection with multi-threading). Changed specifications of class members ProtoItem const uint8 Weapon_Skill, const uint8 Weapon_DmgType, const uint8 Weapon_Anim2, const uint16 Weapon_DmgMin, const uint16 Weapon_DmgMax, const uint16 Weapon_MaxDist, const uint16 Weapon_Effect, const uint16 Weapon_Round, const uint8 Weapon_ApCost, const uint8 Weapon_SoundId, const bool Weapon_Remove, const bool Weapon_Aim, const uint8 Weapon_CurrentUse, void Weapon_SetUse(uint8 use) const to const uint16 Weapon_Skill_F, const uint16 Weapon_Skill_S, const uint16 Weapon_Skill_T, const uint16 Weapon_DmgType_F, const uint16 Weapon_DmgType_S, const uint16 Weapon_DmgType_T, const uint16 Weapon_Anim2_F, const uint16 Weapon_Anim2_S, const uint16 Weapon_Anim2_T, const uint16 Weapon_DmgMin_F, const uint16 Weapon_DmgMin_S, const uint16 Weapon_DmgMin_T, const uint16 Weapon_DmgMax_F, const uint16 Weapon_DmgMax_S, const uint16 Weapon_DmgMax_T, const uint16 Weapon_MaxDist_F, const uint16 Weapon_MaxDist_S, const uint16 Weapon_MaxDist_T, const uint16 Weapon_Effect_F, const uint16 Weapon_Effect_S, const uint16 Weapon_Effect_T, const uint16 Weapon_Round_F, const uint16 Weapon_Round_S, const uint16 Weapon_Round_T, const uint16 Weapon_ApCost_F, const uint16 Weapon_ApCost_S, const uint16 Weapon_ApCost_T, const uint8 Weapon_SoundId_F, const uint8 Weapon_SoundId_S, const uint8 Weapon_SoundId_T, const bool Weapon_Remove_F, const bool Weapon_Remove_S, const bool Weapon_Remove_T, const bool Weapon_Aim_F, const bool Weapon_Aim_S, const bool Weapon_Aim_T Added special macros for convenience (Weapon in _macros.fos) _WeaponIsPrimaryAviable, _WeaponIsSecondaryAviable, _WeaponIsThirdAviable, _WeaponSkill, _WeaponDmgType, _WeaponAnim2, _WeaponDmgMin, _WeaponDmgMax, _WeaponMaxDist, _WeaponEffect, _WeaponRound, _WeaponApCost, _WeaponSoundId, _WeaponRemove, _WeaponAim, _WeaponModeUse, _WeaponModeAim, _WeaponModeMake Mapper updates: string@ MapperObject::PicMap/PicInv now return prototype's picturename if other isn't set up; Added const uint16 MapperMap::Width, const uint16 MapperMap::Height for storing current map sizes; Fixed function GetMapFileNames(...). Rev.39 http://www2.xp-dev.com/sc/change/94227/39 Slight fixes of quests in Den, Klamath Improved closed location in Redding Rev.38 http://www2.xp-dev.com/sc/change/94227/38 Slight fixes of quests from string "Guard"; Added services for guardsmen: doc. Troy can heal player; give stimpacks; Valery repairs items; Added universal repairing script for npc (repairer.fos). E.g. in the dialogue vc_valery.foldg 3 new special encounters with holodiscs; Several deleted functions from stdlib are returned. Rev.37 http://www2.xp-dev.com/sc/change/94227/37 Fix of calculating amount of dead NPC on location when necessity of attack is being determinated. Fix of amount loss allies counter when finishing the quest. Output of messages to log is disabled in quest “The drill”. Fix of limit of times amount quest “Dangerous hunt” can be done. Descriptions of deleted maps were returned, which made server restart impossible without saves clearing. Rev.36 http://www2.xp-dev.com/sc/change/94227/36 Fix of Hartman’s dialog. The wrong requirement was deleted. Rev.35 http://www2.xp-dev.com/sc/change/94227/35 New quests from string “Guard” in Vaultcity - Vaultcity guard. Third trial. Drill. - Easy walk. - Go there, don’t know where. - Dangerous hunt. - Diplomatic courier. Fix of caravan’s and patrol’s departure time. Relative departure time was substituted for absolute. Added ability of caravan’s instant departure from the dialog. Fix of items that were generated in encounters 0 in number. (It was impossible to throw out them) Fix of quest “Hub bibliography”. Player need 7 books to gain reputation instead of 6. Rev.34 http://www2.xp-dev.com/sc/change/94227/34 - Maps fixes - Fixed reaction of BG guards on explosives activation Rev.33 http://www2.xp-dev.com/sc/change/94227/33 - Graphics fixes - Non-used files were deleted - Original map of BG was returned Rev.32 http://www2.xp-dev.com/sc/change/94227/32 Private car parking in geck town is disabled till the problem with car boot is solved. Rev.31 http://www2.xp-dev.com/sc/change/94227/31 Added first quests of string “Guardsman”, VaultCity. (Clearing of server saves is needed) Added template for making quests-combats with npc. (fighter_quest.fos, e.g. “Guard. First trial.”) Added ability to take quest “Hub bibliography” again if player failed to finish it at previous time. Fixed incorrect condition in Dappo’s dialogue in quest “Lot of defective rifles”. Added verification of addressee in “Postman” quest, now player can’t bring letter to any npc of type stated in the letter. Rev.30 http://www2.xp-dev.com/sc/change/94227/30 Deleted not used MSG files - FOSCRIPT.MSG. Rev.29 http://www2.xp-dev.com/sc/change/94227/29 Updates of way of making records into log. Added ability to look the name of the thread which made a record. Option in config – LoggingThread. You can also turn on output in the server application using “Logging with thread”. Changed format of time output. Now it is not “time in ms”, but “hours:minutes:seconds:milliseconds”. Rev.28 http://www2.xp-dev.com/sc/change/94227/28 Fix and formatting. Rev.27 http://www2.xp-dev.com/sc/change/94227/27 Fixed mistakes in calculating karma in quest "Returning of the fugitive". Rev.26 http://www2.xp-dev.com/sc/change/94227/26 Changes on Church of Brok and Xander location: - fixed Preacher, Scientist, repairer Alechandro, Cook, Mickey dialogs; - quests work correctly now; - repairer Alechandro identifies items correctly; - ability to record the information about Church was added (after completing Preacher's quest). Rev.25 http://www2.xp-dev.com/sc/change/94227/25 Activating time of dynamite was fixed. Rev.24 http://www2.xp-dev.com/sc/change/94227/24 New algorithm of generating of pseudorandom variables was added (Mersenne twister). Previously was standart C algorythm srand/rand. Rev.23 http://www2.xp-dev.com/sc/change/94227/23 Energy barrier on the entrance of GECK town was improved. Rev.22 http://www2.xp-dev.com/sc/change/94227/22 Fixed client crashing on start. For preventing this bug in future the control system of versions of cashed scripts in the client has been added. Rev.21 http://www2.xp-dev.com/sc/change/94227/21 Fixed problem when it was impossible to add players to GECK town after removing them with option "Clear list". Rev.20 http://www2.xp-dev.com/sc/change/94227/20 Fixed cooldown of the Postman quest. Rev.19 http://www2.xp-dev.com/sc/change/94227/19 Wrongly deleted dialogs are returned. Rev.18 http://www2.xp-dev.com/sc/change/94227/18 Fixes Deleted not used files. Fixed errors when player removes child killer karma additional times. Fixed error with incorrect name of script of map_v15_village map. Added output of message of increasing trade skill when finishing “Farm vermins” quest to the log. Weakened the giant wasp in the quest in Modoc. Rev.17 http://www2.xp-dev.com/sc/change/94227/17 AngelScript was updated to rev.684, v. 2.19.2 Added global variables to the client: bool __ShowTile, __ShowRoof, __ShowItem, __ShowScen, __ShowWall, __ShowCrit, __ShowFast, __ShowPlayerNames, __ShowNpcNames, __ShowCritId. Deleted limit of min. time of using Map::SetLoopTime (it was 1 second). Fixed registration of the global variables of string type (pragma globalvar). Fixed using reserved global variables string type. Added global variables to mapper: string __ClientPath, __ServerPath. Deleted constant modificators in client from string CritterlCl::Name, CritterlCl::Lexems. Added variable CritterlCl::NameOnHead, which if is not empty, outputted above critter’s head. Rev.16 http://www2.xp-dev.com/sc/change/94227/16 Fixed reclearing of child killer status. Rev.15 http://www2.xp-dev.com/sc/change/94227/15 Fixes: - Fixed names of Giant Wasps and bugs in kills statistic; - Reduced requirements of amount of killed mobs and intelligence in Broken Hills quests (bh_marcus.fodlg, bh_super.fodlg); - Reduced requirement of intelligence for “Fresh blood” quest (vc_doctor_troy.foldg); - Fixed possibility of gaining experience multiple times in “Cabbage” quest in Modoc (mod_farmer_q.fodlg); - Player receives reputation in NCR for quest “True cowboy” even if only one Brahmin is brought (ncr_felix.fodlg); - Michael’s miniquest in NCR can be done by every player only once (ncr_michael.fodlg); - Added requirement of 16 level for “buggy” quest (ncr_ratch.fodlg); - Fixed amount of gaining experience when player rejects gratuity in “Postman” quest (q_mail_reciever.fodlg); - Fixed cooldown of “Postman” quest; - Cave mobs – spawn point near the exit grid was removed in the smallest cave; - Fixes of several dialogues in Vault City; - New quest – “Fugitive returning” – when finished, status “Child killer” is removed. Hubbologist in Redding bank offers this quest; - New quest “Farm vermines”. It is offered by Joe in Modoc (mod_joe.fodlg); - Fixed energy barrier in GECK town; - Added computer for breaking of energy barrier inside the town; - Added car lots for GECK town citizens (not more than 2); - Added ability of clearing of citizens list by town leader using the terminal. Rev.14 http://www2.xp-dev.com/sc/change/94227/14 Update for Notepad++ (Syntax_highlighting, autocomplete, function parameters hints) Rev.13 http://www2.xp-dev.com/sc/change/94227/13 First stable version.h3. Your title here...Rev.187 http://www2.xp-dev.com/sc/change/94227/187 Some actions were performed to fix server's hanging up. Rev.186 http://www2.xp-dev.com/sc/change/94227/186 Some actions were performed to fix server's hanging up. Not adding function's name to log was fixed. Levelcap was removed in the scripts. Rev.185 http://www2.xp-dev.com/sc/change/94227/185 NO_LOOT and NO_DROP mode were switched off for the giant bugs. Rev.184 http://www2.xp-dev.com/sc/change/94227/184 In connection with porting the server (*nix and 64bit) the next changes were made: Operating with net was rebuilded. Libevent library is used. http://monkey.org/~provos/libevent/ http://en.wikipedia.org/wiki/Libevent http://ru.wikipedia.org/wiki/Libevent Operating with GUI was remade. FLTK library is used. http://fltk.org/ http://en.wikipedia.org/wiki/FLTK http://ru.wikipedia.org/wiki/FLTK Operating with threads was remade. Pthreads is used http://sources.redhat.com/pthreads-win32/ (Windows port) http://en.wikipedia.org/wiki/Pthreads http://ru.wikipedia.org/wiki/Pthreads Changes are serious and can cause unstable work. Memory leak when loading maps was fixed in server. Loading maps with items in containers/inventories in mapper was fixed. Don’t use mapper of 171-182 revisions for editing old maps. Now parameters values for critters in mapper are applies only if they are not equal to zero. Initially value is taken from defaults (from .fopro), then from the map’s data if !=0. Critter’s names in mapper are now taken only by prototype number without accounting dialogue’s number. Old specification of Log function which was changed in 174 revision was returned to native scripts. Server’s GUI now ‘Courier New’ type, option in config was deleted. Option for changing server’s window size and its elements was added GUI size modifier GUISize=0 E.g. if GUISize=-50 then server’s window and all its elements will be 50% smaller, if GUISize=30 then 30% larger. Log in server window is unrolled as defaults. Also, the information from the log can be copied and scrolling is stopped if it is focused. Client’s crashing when playing items animation was fixed. Paths make_tla.bat were converted to Visual Studio 2008 (9.0). Rev.183 http://www2.xp-dev.com/sc/change/94227/183 Lo Pan’s mercenaries call leader’s name correctly now. Nancy and Sid’s quest location now is deleted after leaving it (previously it wasn’t deleted and hanged in the memory). SF docs were excluded from NoPvP locations. Letters generation in Postman quest was fixed. Holodisk with combat robot’s video recordings can be given to Buster now. Shaneman’s documents now have description in “Diplomatic mission” quest. A dialogue between bar clients in outer Vault City was added (wipe is required). Mini quest “Seduce art” was added in Klamath (wipe is required). Rev.182 http://www2.xp-dev.com/sc/change/94227/182 NPC-travellers will no longer take dead characters to the global map. Atoll was removed from Eli’s destinations. Skill displaying when increasing it through the dialogue was fixed. The mistakes in the newcomer’s dialogues in “Anger” quest were fixed. The mistake in mercenaries script which caused the leaving the employer earlier was fixed. Rev.181 http://www2.xp-dev.com/sc/change/94227/181 Reading nicknames from ignor list file was fixed. Console command for adding a player to the ignor list was added ~ignore PlayerName. Rev.180 http://www2.xp-dev.com/sc/change/94227/180 Mechanism of reputation calculation was switched off due to its incorrect work. Now all the list will be visible, but will work correctly. Rev.179 http://www2.xp-dev.com/sc/change/94227/179 Network protocol bug which caused short hangs up was fixed. Client's script was fixed which could cause null parameter call. Rev.178 http://www2.xp-dev.com/sc/change/94227/178 Superfluous rifles on offer were fixed. Rev.177 http://www2.xp-dev.com/sc/change/94227/177 Game version increment. Rev.176 http://www2.xp-dev.com/sc/change/94227/176 Sequence of handlers calling was fixed MAP_EVENT_OUT_CRITTER, MAP_EVENT_IN_CRITTER now the first one is called initially, then the second On intro_init map static lighting was set. Group moving indication on the global map was fixed (previous update bug). Rev.175 http://www2.xp-dev.com/sc/change/94227/175 Console command ~globalmap was added. It moves player to global map. It works only on noPvP maps for players not in combat mode and with noPvP mode turned on. In caravans and travellers scripts functions of moving to final destination's map were updated. Rev.174 http://www2.xp-dev.com/sc/change/94227/174 Porting game to Linux was started. Also supporting of 64 bit platforms. Client’s native libraries are now transmitted automatically. They are stored in ‘Client/data/cache’. Folder with scripts ‘Client/data/scripts’ is not used anymore and was deleted. To the server’s folder library STLPort (http://www.stlport.org/) was added. Client’s libraries are now compiling with it’s help. It is connected with porting to other platforms. Additional methods of moving were added to critters in server scripts bool Critter::TransitToMap(uint mapId, uint16 hexX, uint16 hexY, uint8 dir, bool withGroup) bool Critter::TransitToMap(uint mapId, int entireNum, bool withGroup) bool withGroup – when moving from global map to local map, all the group will be moved. Regular TransitToMap (without bool withGroup) work as with withGroup == false. Previously they worked as как withGroup == true, what led to moving all the group when replicating, if dead critter was on the global map. 3d critters were switched off. For switching on see PLAYERS_3D in _defines.fos. Constants for operating with game constants were added(see 168 revision, http://www2.xp-dev.com/sc/change/94227/168). Specification for the reserved function Log in native scripts was changed. Now the first returned parameter is function’s name from which it was called. Rev.173 http://www2.xp-dev.com/sc/change/94227/173 Traders were added to Atoll and Redding. Barterground was moved to position 690:760 as it isn’t needed anymore in north-west region due to noPvP mode. Locations “BiX Church” and “Atom’s Church” were moved to special encounters class. Fixed rewards in some quests. Maps fixes. Biscuit on Modoc can be received only once now (as in Fallout 2). Rev.172 http://www2.xp-dev.com/sc/change/94227/172 noPvP mode was activated on some TLA maps. It will be used on the next TLA session. For switching it off on your server set global variable __NoPvpMaps=false; in script config.fos Ability of making a list of ignored players, it works similarly NameColorizing. It needs manual adding nickname of ignored player to IgnoreList.txt For refreshing the list of ignored players in game use console command ~ignorelist. Rev.171 http://www2.xp-dev.com/sc/change/94227/171 Derivative objects system for mapper was updated. When placing base object, all his derivatives are placed automatically. If one object from the group is being selected - all others are being selected too. If the prototype or position of the derivative object is changed, changes will be automatically applied by mapper or server when loading. For the example see cars, at the present time they have one derivative object – their trunk. Now when placing the car, it will be created automatically, also it will be moved with it and if base or derivative object is deleted, all the group will be deleted too. The system of moving selected objects in mapper was upgraded. Now in hexagonal system the selected objects will be moved without being tearing apart. Also the selected objects, when being moved, will stop at the map’s edge, so they won’t mix into a pile. The problem with detecting whether items in container belong to their inventory or container. Previously items were placing on the hex and if you place two containers on the same hex, all the items will stack in one container. Now it is fixed. Item::TrapValue initialization through mapper was fixed. If rewriting is performed on prototypes loading, alert is displayed. It was added for items and critters prototypes. In object’s structure in mapper was deleted field const bool Item_InContainer and added const uint UID, ContainerUID, ParentUID, ParentChildIndex Rev.170 http://www2.xp-dev.com/sc/change/94227/170 Now server doesn't block client's libraries while working. Previously you needed to stop the server to replace client's dll (Server/scripts/fonline_tla_client.dll). Rev.169 http://www2.xp-dev.com/sc/change/94227/169 Combined content of MASTER.DAT + CRITTER.DAT. Size - 201 MB! Rev.168 http://www2.xp-dev.com/sc/change/94227/168 Client and Mapper are no longer bounded with Fallout’s data files - MASTER.DAT and CRITTER.DAT. These files content is combined (excess data is deleted) and packed into fallout.dat (will be uploaded with the next update) and defined in DataFiles.cfg. Global variables string __MasterPath, __CritterPath were deleted. The configurator (FOConfig.exe) is updated accordingly fixes above. Critter’s lighting in the death moment and flat items lighting was fixed. To server/client/mapper scripts the next functions for operating with the constants (*Names.lst) were added: int GetConstantValue(int constCollection, string@+ name) – identifying constant’s value by the name; string@ GetConstantName(int constCollection, int value) - identifying constant’s name by the value; void AddConstant(int constCollection, string@+ name, int value) – adding separate constant to the collection; bool LoadConstants(int constCollection, string@+ fileName, int pathType) – loading/reloading the collection; int constCollection – collection’s number, see Constants collections in _defines.fos, also you can define your own collections; string@+ name – constant’s name; int value - constant’s value; string@+ fileName, int pathType – collection file’s name and folder path. Rev.167 http://www2.xp-dev.com/sc/change/94227/167 Bug with error of name/password in login menu if it exceeds 12 symbols was fixed. Screen centering on the player when loading map in right-angle geometry was fixed. Copying objects in Mapper from smaller map to the bigger one was fixed. Mapper hanging up when Sleep < 0 was fixed. Crashes when loading ART files were fixed. Principe of transparency defining with parameter ‘”t” was changed, now it isn’t equal to 255 – paletteIndex, but to max(R, G, B). Rev.166 http://www2.xp-dev.com/sc/change/94227/166 System of operating with items prototypes was updated (ProtoItem). Ability to add your own fields to proto class was added. New pragma ‘bindfield’ is used for this, e.g.: #pragma bindfield "const int ProtoItem::MyValue -> 400" it means creation of field MyValue of int type with offset 400 (considering thas int is 4 byte, it will occupy bytes 400, 401, 402, 403). Totally for user’s fields 500 bytes are available. Field is equal to zero as defaults, but it is possible to change the value by defining value (in the current case MyValue=111 or MyValue=SkillBigGuns) in proto file (.fopro), number (if it contains only numbers) or path to the file (it is identified by the presence of ‘/’ or ‘\’ symbols). For now fields which are not used by the engine are taken out to scripts, see _defines.fos Item prototypes fields. Changes in structure ProtoItem. All next methods are deleted uint8 GetType() const uint16 GetProtoId() const bool IsGrouped() const bool IsWeared() const bool Container_IsGroundLevel() const List of new fields which are registered in the engine (part of them is renamed, some were deleted) http://pastebin.com/8R4QkP3h The other fields are registered with #pragma bindfield in _defines.fos. Now all items can stack and wear out, for this Boolean fields are added to the prototypes bool ProtoItem::IsStackable bool ProtoItem::IsDeteriorable Item type ITEM_MISC_EX was deleted, it is combined with ITEM_MISC (miscex.fopro is deleted). Vehicles are taken out to separate type ITEM_CAR (car.fopro was added). Also now user can define any type numbers for the items. Former fields uint MiscEx_StartVal0..9 of the start values for Item::Val0..9 were moved to common area named StartValue0..9, and with these values Item::Val0..9 are initialized. Metod bool Item::IsCar() const was deleted, instead of it use GetType()==ITEM_CAR. The next methods are renamed bool Item::IsGrouped() const -> bool Item::IsStackable() const bool Item::IsWeared() const -> bool Item::IsDeteriorable() const The next fields are renamed uint16 Item/ItemCl::BrokenWear -> Item/ItemCl::Deterioration uint16 Item/ItemCl::CarDeteoration -> Item/ItemCl::CarDeterioration uint8 MapperObject::Item_DeteorationFlags -> uint8 MapperObject::Item_BrokenFlags uint8 MapperObject::Item_DeteorationCount -> uint8 MapperObject::Item_BrokenCount uint16 MapperObject::Item_DeteorationValue -> uint16 MapperObject::Item_Deterioration Mechanism of affiliated objects was moved for common use. Previously it was available only for vehicle’s trunk. One object can have up to five derivatives. Numbers of the derivative objects are defined in uint16 ProtoItem::ChildPid_0..4. By creation of base object, derivatives are created automatically. For now Mapper doesn’t create affiliated obkects automatically, but it will be fixed in further. For setting the place of situation, special field ChildLines_0..4 is used (former MiscEx.Car.Bag_0..1, see below by recording format). Also it is possible now to define automatic blocking for any objects, not only for vehicles – field BlockLines (former MiscEx.Car.Blockers). Recording format for Child/BlockLines – XYXYXY..., where X is direction number (0..5/7), Y is the amount of steps (1..9) in this direction (previously for vehicle’s trunk for another recording format - XXXX...). Maximum amount of steps for BlockLines – 50, for ChildLines – 6. For operating with derivative objects use methods Item@+ Item::GetChild(uint childIndex) const (бывшая Item@+ Item::CarGetBag(int numBag)) bool Map::CheckPlaceForItem(uint16 hexX, uint16 hexY, uint16 pid) const (bool Map::CheckPlaceForCar(uint16 hexX, uint16 hexY, uint16 pid) const) Fields renaming affected lots of scripts, be attentive. Old proto format is converted to the new one automatically, but Object Editor (ObjectEditor.exe) still operates only with old format. It will be fixed soon. To replication.fos and entires.fos scripts the influence of right-angled geometry was added. Script main_planes.fos is formatted as a separate module. All pragmas were move to the end of _defines.fos. Drop of FPS when switching on view/attack borders was fixed. Rev.165 http://www2.xp-dev.com/sc/change/94227/165 Fix for the ASCompiler. Rev.164 http://www2.xp-dev.com/sc/change/94227/164 Changed ASCompiler output format to “filename(linenumber) : message”. Such output is recognized by a number of IDEs and allow jumping to the code by a double-click on the output line. Rev.163 http://www2.xp-dev.com/sc/change/94227/163 Tabs management system was added to Mapper. Now one tab can have numerous subtabs. Tabs names and its filling is defined in mappers scripts. But some tabs already have initial filling. Item – items prototypes by defaults (items.lst); Tile – tiles by default, search is performed in ‘art/tiles/’; Crit – critters prototypes by defaults (critters.lst); Fast – displays often used objects, initial state is defined in scripts (InitializeTabs in mapper_main.fos); Ign – Ignore, shows ignored objects which are not shown on the map; Inv, Msg, Map – special tabs which have nothing to do with the mechanism, but it is possible to change its name throug TabSetName (see below). The tab can have subtabs only of one type – tiles, critters or items (displayed in priority order). For items and critters the subtab’s name is chosen by user, for the tiles it is performed automatically. The lowest subtab “all” contains all prototypes (or tiles) on a list above. For activation the menu of tab choosing – perform a double click on it. If positions are numerous then use mouse wheel for navigation (scroll speed: normal – 4, with pressed shift – 8, with pressed ctrl – 20, with pressed alt – 50). For tabs management use scripts, functions Tab* uint TabGetTileDirs(int tab, string@[]+ dirNames, bool[]+ includeSubdirs) uint TabGetItemPids(int tab, string@+ subTab, uint16[]@+ itemPids) uint TabGetCritterPids(int tab, string@+ subTab, uint16[]@+ critterPids) void TabSetTileDirs(int tab, string@[]+ dirNames, bool[]+ includeSubdirs) void TabSetItemPids(int tab, string@+ subTab, uint16[]@+ itemPids) void TabSetCritterPids(int tab, string@+ subTab, uint16[]@+ critterPids) void TabDelete(int tab) void TabSelect(int tab, string@+ subTab) void TabSetName(int tab, string@+ tabName) int tab – tab’s number (see Tabs in _mapper_defines.fos); string@[]@+ dirNames – folder’s names for tiles searching; bool[]@+ includeSubdirs – turn on search in subfolders; string@+ subTab – subtab’s name; uint16[]@+ itemPids – item’s prototype numbers array; uint16[]@+ critterPids - critters’s prototype numbers array; string@+ subName – tab’s name. Global variable was added bool __SplitTilesCollection = true It defines whether tiles should be divided into groups in the folders. The group is defined as a string in the file’s name before the first number (e.g. abc12.png - group abc), if the number is absent, then group is defined as '<other>'. In connection with these changes, the global functions are deleted uint GetFastPrototypes(uint16[]@+ pids) void SetFastPrototypes(uint16[]@+ pids) Other updates. Fixed incorrect work of server/client which caused some bugs. Global variable int __GeometryType was added to _defines.fos for the indication of chosen geometry. See constants in _defines.fos Geometry. Depending on its value, tab with Tactics and Arcanum is added. Ability to work with file names which include spaces is added. When loading ART files, it is possible to flip them vertical or horizontal. Parameters in the file name - ‘v’/‘V’ and ‘h’/‘H’. When loading SPR file, if you define in changing color parameter – layer’s number -1, then the modificator will be applied to all four layers. Rev.162 http://www2.xp-dev.com/sc/change/94227/162 Quest perks “Midnight Child”, “Nosderatu Blood” were added (Modoc, “Night’s tender”). Now new home position is set for NPC-travelers (Devin, Eli) when they enter new location. Female characters now can finish quest of removing childkiller status. Allies HP and resistances were increased in “Dangerous hunt” quest. Also a simple dialogue is added to them. The forged letter is now removed from the inventory when finishing quest “Forgery”. Edvin in Klamath tells with a popup phrase when starting gathering items. A delay was added to the prisoner giving the cues in “Ernst Telman” quest. Ability of intimidating the NPC visitor if it’s a woman was deleted in quest “Wrath”. Barcus now reacts with popup phrases to the futher meetings with the player who have done quest “Amnesty for Joshua”. Upon the receiving lieutenant rank of Vaultcity’s Guard, player is awarded with a black combat armor. In “Diplomatic Courier” quest time (24 hours) which Sheiman takes for the thoughts now is calculated correctly. Upon finishing this quest, player receives +1 reputation in NCR. Sell price of the buggy which player receives upon finishing the quest in NCR was set to zero. Dialogue launch when player uses an antidote in quest “Poisoned Regulator” in Redding was fixed. Players who gained Vaultcity citizenship now can trade with Randal with no restrictions. Reputation calculation in quests “Real Cowboy”, “Hub Bibliography” in NCR was fixed. If player refuses the reward in “Hub Bibliography” quest, he gains +2 reputation (was +1) when he delivers 5 books. Increasing raider’s resistances and skills every new attack on NCR was switched off. Ability of crafting and buying chitin armor was added. Giant beetles drop chitin. Items with ITEM_GAG flag deletion upon player’s death was fixed. Rev.161 http://www2.xp-dev.com/sc/change/94227/161 Ability to customize game geometry was added, either the support of isometric projection with quadrangles was. For customization use global variables bool __MapHexagonal – isometry type: true - hexagonal, false - quadrangular; int __MapHexWidth – hex width; int __MapHexHeight – hex height; int __MapHexLineHeight – hex line height; int __MapTileOffsX/Y – ground tiles offset; int __MapRoofOffsX/Y – roof tiles offset; int __MapRoofSkipSize – amount of hex per one roof tile (necessary for its correct hiding); float __MapCameraAngle – 3d model rendering angle; bool __MapSmoothPath – path smoothing when moving; string __MapDataPrefix – path and prefix for the geometry files. Operational sprites for geometry are situated in art/geometry/. Quadrangular isometry use 8 directions, hexagonal – 6. In script config.fos in function InitializeGeometry(), necessary adjustments for 3 games (Fallout1/2, Fallout Tactics and Arcanum) are added. This function can be called in server, client and mapper scripts, as all three of them need geometry information. Global variables uint __LookDir4, uint __LookSneakDir4 were added for 8-directional geometry. Fixed Tactics SPR files loading. Mode MODE_NO_TALK was added. It affects ability to talk and appearance of the icon in the context menu. Double click on hex, affecting avatar’s moving, was fixed. Creation of descriptions for critters prototypes (FODLG.MSG) with high identifiers was fixed. Image of elephant gun was added in 3d. Rev.160 http://www2.xp-dev.com/sc/change/94227/160 Fixed a bug with server and client communication. Fixed a bug with wrong sprites display. Rev.159 http://www2.xp-dev.com/sc/change/94227/159 Documentation's update, mistakes fixes. Rev.158 http://www2.xp-dev.com/sc/change/94227/158 Script start_server_client.fos was renamed to config.fos and now it isn't simply pasted into function start(), but presented as a separate module with function InitializeGame(). Macros for operating with time were moved from _macros.fos to separate module _time.fos. Slight fix of drugs.fos. Rev.157 http://www2.xp-dev.com/sc/change/94227/157 Errors messages in server log when operating with functions GetPlayerName/GetPlayerId were removed. Also GetPlayerName returns null now, if the player wasn't found. Bugs of reputation calculation were fixed. Rev.156 http://www2.xp-dev.com/sc/change/94227/156 Ability to affect the colors when loading Tactics sprites was added. To make color shift, define necessary values in file name’s parameters (“$”). Format: fileName$[index,r,g,b]animName.spr (can be any amount of shifts […]) where index – body part’s number (0 - miscellaneous, 1 - skin, 2 -hair, 3 - armor); r,g,b – color shift for the each component, can be negative Example: someSprite$[2,50,-30,-20]anim1.spr – load sprite someSprite.spr, with animation anim1 and hair’s color shift in RGB (50,-30,-20). Additional flags for operating with color’s shift were added for Tactics critters (_animation.fos, animation.fos). Use macros ANIM1_COLOR_SKIN(index), ANIM1_COLOR_HAIR(index), ANIM1_COLOR_ARMOR(index) for values defining. Index can take on value from 0 to 15, appropriate to it values of color shift look in array colorOffsets of animation.fos script. For ability testing you can use text function void ColorOffset(Critter& cr, int skin, int hair, int armor) in test.fos. Rev.155 Some native structures were fixed. Rev.154 http://www2.xp-dev.com/sc/change/94227/154 AngleScript is updated to revision 822. Ability of sorting is added to scripts arrays Ascending sort void array::sortAsc() void array::sortAsc(uint index, uint count) Descending sort void array::sortDesc() void array::sortDesc(uint index, uint count) For user’s classes sorting realize opCmp method http://www.angelcode.com/angelscript/sdk/docs/manual/doc_script_class_ops.html Vehicle animations on the global map and item’s animations in Mapper are fixed. Some points in operating with critter’s animations are fixed (animation.fos). Global variable __GmapActive is fixed. Global variable for setting min. offline time after that client will completely exit from the game was added. uint __MinimumOfflineTime = 180000; // 3 minutes Rev.153 http://www2.xp-dev.com/sc/change/94227/153 Additional constants for operating with Chosen's actions were updated (Get/SetChosenActions, for CHOSEN_USE_ITEM). Rev.152 http://www2.xp-dev.com/sc/change/94227/152 Additional constants for operating with Chosen's actions were added (Get/SetChosenActions). Rev.151 http://www2.xp-dev.com/sc/change/94227/151 Bugs with incorrect files's names path detecting were fixed. Rev.150 http://www2.xp-dev.com/sc/change/94227/150 3d models loading was fixed. 3d models rendering to sprites was fixed. Critters animations were fixed (death in 2d and 3d modes). Shift calculation for some models was fixed. SAY_DIALOG/SAY_APPEND mechanics was fixed. (by Atom) Server’s config loading in Mapper was fixed. (by Atom) File HashNames.lst was added to client. Names of files which contain parameters (‘$params’) should be entered in it. If you use such names in the prototypes, Mapper or scripts GetStrHash), then include this name to this list. Format of writing: [any number] [file’s name] [end of string] E.g. 0 art\scenery\BrazureFire$t.ART 0 art\scenery\BrazureFire$t3.ART In further it is possible to detect and transmit such names automatically, but for the present use this system. Roof disappearing if it is situated in odd hex in two axis. Rev.149 http://www2.xp-dev.com/sc/change/94227/149 Documentation was updated. Some fixes in Arroyo (Minoc’s quest about raiders). Usage mode was added for sledgehammer and supersledge (for resources mining). Guard lib was brought into common standard of scripts formatting. Rev.148 http://www2.xp-dev.com/sc/change/94227/148 Two reserved variables were added to HLSL effects float AnimPosProc – current animation’s per cent 0%..100%, [0,1); float AnimPosTime – current animation’s time in seconds. Client’s hanging under certain circumstances was fixed (e.g. receiving item’s data when player in process of moving between maps). Dump generation when closing server application without stopping was switched off. Generation of unnecessary messages to log in function animation_ animation.fos was fixed. Rev.147 http://www2.xp-dev.com/sc/change/94227/147 Parameters for critter’s movement controlling were added. Time for moving in milliseconds: #define ST_WALK_TIME (117) #define ST_RUN_TIME (118) Ability to move #define MODE_NO_WALK (539) #define MODE_NO_RUN (540) If these parameters are equal to zero, then data is taken from CritterTypes.cfg. Loading of some ART files was fixed (Arcanum). Ability of specifying special image processing was added. Palette elements will be transparent depending on its index in the palette (alpha = 255 – index). To chose this loading type - use symbol “t” (or “T”) in file name parameters. E.g. ‘filename$t.art’; also you can combine with palette, e.g. ‘filename$1t.art’. Ignoring of spec.symbol “/r” was additionally added for splitEx function. In functions void DrawSprite(... bool applyOffsets) if applyOffsets == true there were additionally added shifting of width/2 and height of the image. Unnecessary fo3d files were deleted. Palette influence for Arcanum critters was fixed. Rev.146 http://www2.xp-dev.com/sc/change/94227/146 One more fix of incorrect critter displaying. Rev.145 http://www2.xp-dev.com/sc/change/94227/145 Quest “Communicated” was added (Redding). Caravaneers phrases were fixed, now they tell correct departure dates. Quest “Honomer’s bodyguard” was added (San Francisco). Retina scanner in GECK town was fixed. Slight fixes of the hubbolog’s map in San Francisco. Special result function for skill rise calculation through a dialogue was added.(dialog@r_SkillUp) The script for quest locations creating was fixed (hostile_location_quest.fos), allies and enemies scripts now work correctly. Resetting of a quest variable when deleting the location was fixed. Script for realization a dialogue between several npc’s with popping up phrases was added. (npc_dialog.fos) Story line implementation was continued. Maps numeration in the location with mutants was fixed (quest string “Guardian”). Rev.144 http://www2.xp-dev.com/sc/change/94227/144 Critter’s hitpoints regeneration was moved to scripts, you can look realization in function critter_idle main.fos. Global function for critters sampling from the global map was added to server scripts. uint GetGlobalMapCritters(uint16 worldX, uint16 worldY, uint radius, int findType, Critter@[]@+ critters) Additionally to methods bool Map::GetNearEntireCoords(int& entire, uint16& hexX, uint16& hexY) const bool Map::GetEntireCoords(int entire, uint skip, uint16& hexX, uint16& hexY) const were added methods bool Map::GetNearEntireCoords(int& entire, uint16& hexX, uint16& hexY, uint8& dir) const bool Map::GetEntireCoords(int entire, uint skip, uint16& hexX, uint16& hexY, uint8& dir) const which return direction. Global variable which specifies if the password in the client’s login window should be hidden was added bool __HidePassword = true Incorrect critters creation in Mapper was fixed. Displaying of switching critter’s type 3d->2d on the client’s side was fixed. Rev.143 http://www2.xp-dev.com/sc/change/94227/143 Fixed critters loading in Mapper (141 revision's bug). Rev.142 http://www2.xp-dev.com/sc/change/94227/142 Fixed server loading (the previous revision bug). Rev.141 http://www2.xp-dev.com/sc/change/94227/141 Mechanism for identifying critter’s animation file name was added. Now you can operate with critter’s animations from Tactics and Arcanum without any conversions. All data files which you need for enabling one or another critters are cited in CritterTypes.cfg comments. The next critters were added to SDK: Humanoid, Behemoth, MTT, Pacification. They are repacked to the separate archive ftrobots.bos. But all available critters from Tactics and Arcanum are added to CritterTypes.cfg with correctly defined parameters for them (by Tabloid), so you can enable the needed data files and use the critters. All animations are transformed to the general appearance (ANIM2_2D*, ANIM2_3D* -> ANIM2*). The functional for operating with them is moved to scripts. In some places where these values are used, numeric literals are replaced by string constants, which description you can find in DefineNames.lst. Fixes were made in weapons prototypes (weapons.fopro) and fo3d templates for 3d critters from VanBuren (_VBHuman.fo3d, _VBMob.fo3d, _VBWeapon.fo3d). Now three sets of primary and secondary animations are used for critters, for three condition types – alive, knockout, dead const uint Critter/CritterCl::Anim1/2Life/Knockout/Dead (const uint Critter/CritterCl::Anim1/2 were deleted). These values are used for animations as default. Pay attention that Anim1 additionally is summed up with animation of the weapon in the active slot, bit-by-bit OR. It is necessary for assignation certain values on continuing basis (e.g. sitting, lying position). For changing these values the next method is used void Critter::SetAnims(int cond, uint anim1, uint anim2) int cond – defines the position to apply values to (COND_* in _defines.fos), if null it is applied to all three; uint anim1, anim2 – animation values. Deleted const uint8 Critter/CritterCl::CondExt Accordingly all COND_*_* for them are deleted. Now position is differentiated by the animations. In connection with it, the next methods specifications were changed void ToDead(uint anim2, Critter@+ killer) bool ToKnockout(uint anim2begin, uint anim2idle, uint anim2end, uint lostAp, uint16 knockHx, uint16 knockHy) void EventKnockout(uint anim2begin, uint anim2idle, uint anim2end, uint lostAp, uint knockDist) void EventSmthKnockout(Critter& fromCr, uint anim2begin, uint anim2idle, uint anim2end, uint lostAp, uint knockDist) uint anim2begin, anim2idle, anim2end – animations of the knockout begging, staying in it and coming to yourself. Standard macroses are defined for the transfer KNOCKOUT_ANIM2_DEFAULT, KNOCKOUT_ANIM2_STUNNED (in _animation.fos). Also Mapper operates now not with CondExt, but with Anim1/Anim2 for the current Cond. Global variables for client/mapper for defining combat mode animations were added uint __Anim2CombatBegin = ANIM2_BEGIN_COMBAT uint __Anim2CombatIdle = ANIM2_IDLE_COMBAT uint __Anim2CombatEnd = ANIM2_END_COMBAT The next reserved client/mapper functions were added (animation.fos): - string@ critter_animation(int animType, uint crType, uint anim1, uint anim2, uint& pass, uint& flags, int& ox, int& oy) Function which is called when loading necessary animation. Returned value - file’s path and name. int animType – critter’s animation type (new parameter which is set in CritterTypes.cfg); uint crType – critter’s type; uint anim1, anim2 – animation’s indexes; uint& pass – function call’s number, is changed by the user. If animation loading failed and this parameter was changed, then function will be recalled (in certain cases you should try to load different files for the one animation); uint& flags – flags, at the present moment two of them – to take the first or the last frame from the animation ( Anim loading flags in _animation.fos); int& ox, &oy – shifts for the animation, in pixels. - bool critter_animation_substitute(int animType, uint crTypeBase, uint anim1Base, uint anim2Base, uint& crType, uint& anim1, uint& anim2) If animation loading failed (and uint& pass wasn’t changed), then this function is called for animation substitute detection (e.g. left hook can be replaced by the right hook). true is returned if the substitute was found (engine also additionally checks if crType, anim1, anim2 were really changed), false – no substitute, animation won’t be loaded and played. int animType – see above; uint crTypeBase, anim1Base, anim2Base – base critter’s and animation’s type, which were at the start; uint& crType, &anim1, &anim2 - critter’s and the current animation’s type for the substitution - bool critter_animation_fallout(uint crType, uint& anim1, uint& anim2, uint& anim1ex, uint& anim2ex, uint& flags) As Fallout’s animations are still loaded by the engine (additional shifts calculation and animations pasting together is needed), for determining animations conformity this function is called, i.e. instead of critter_animation for fallout’s animations this function is called. true is returned if animation is presented, false – not. Method bool Critter::IsAnim3d() const is deleted, use instead of it the global function int GetCritterAnimType(uint crType) values look in Anim types _animation.fos. Critters actions sounds now are played in the scripts, in animation_2d/3d_process. New mechanism for sound file name identification was made, look PlayAnimSound in animation.fos. Critters prototypes were divided into fallout’s (fallout2.fopro) and TLA's (tla.fopro). Bug with roof’s non-transparency in Mapper was fixed. Name indication of chosen critter or tile prototype in mapper was added. Format fo3d now recognizes named constants DefineNames.fos, namely for modificators Mesh, Subset, Layer, Value, DisableLayer, DisableSubset, Texture, EffDef (для Dword), Anim, AnimSpeed, AnimEqual. Global server variable for determining call frequency was added GLOBAL_PROCESS_MOVE uint __EncounterTime = 5000 Global client variable for determining frequency of foolish trick animation call was added uint __CritterFidgetTime = 50000 is deleted using formula Random(__CritterFidgetTime, __CritterFidgetTime * 2) Item prototype’s parameter was deleted bool ProtoItem::Weapon_RequiresActivation now if animation doesn’t exist, it is just not played. Parameters uint16 MapperObject::Scenery_ToMapX/Y were deleted, in mapper also. Moving between locations is performed by entery points. In weapons prototypes types of action animations were substituted from numeric by string constants (accordance look in DefineNames.lst). Appropriate changes were performed in ObjectEditor. Client functions PlaySound andPlayMusic now return bool, signalizing if file was found or not. Global functions for server/client/mapper which return appropriate values from CritterTypes.fos were added uint GetCritterAlias(uint crType) string@ GetCritterTypeName(uint crType) string@ GetCritterSoundName(uint crType) Mapper’s scripts were moved to server’s scripts folder. Also the whole set of functions for operating with CritterTypes.fos was added to Mapper bool IsCritterCanWalk(uint crType) bool IsCritterCanRun(uint crType) bool IsCritterCanRotate(uint crType) bool IsCritterCanAim(uint crType) bool IsCritterAnim1(uint crType, uint anim1) int GetCritterAnimType(uint crType) uint GetCritterAlias(uint crType) string@ GetCritterTypeName(uint crType) string@ GetCritterSoundName(uint crType) Specifications of client’s reserved functions were changed animation2d_process, animation3d_process parameter bool animateStay was added to the beginning. It indicates if any action is performed now (false) or stand animation (true). Reaction for global map’s interface buttons pressing when the size of map’s area (GmapMap) covers the buttons area was fixed. Bug with incorrect loading/saving maps in which script’s or function’s name consists of spaces was fixed. Bug with potential server crashing when using AI_PLANE_MISC was fixed. Rev.140 http://www2.xp-dev.com/sc/change/94227/140 Some robots from Fallout Tactics (look the next revision). Rev.139 http://www2.xp-dev.com/sc/change/94227/139 The next quests were added in San Francisco: “Introduction into Hubbology”, “Hub’s justice”. Transport to Atoll is available for the players who are doing “Introduction into Hubbology” quest (npc is in the docs area of San Fracisco); Automatic transfer to the command center of GECK city citizens when entering the map was removed. Now citizens can choose spawn point. Quest location “Hubbologists laboratory” was added (author JunoReactor). Rev.138 http://www2.xp-dev.com/sc/change/94227/138 Arroyo: Quest “Evidence of Chosen’s death” was added (Todd Stewart); Two courier quests were added (Cassidy, Todd Stewart); Encounter fixes: Fixed bugs of the 120 revision; Fixed random encounters where normally aggressive npc’s didn’t attack after fighting with the other npc’s; Fixed bug with unlimited experience in Den; Fixed mistakes in NCR quests cooldowns; Slight dialogues fixes. Rev.137 http://www2.xp-dev.com/sc/change/94227/137 Ability to specify the layer of tiles/roof to organize correct query of displaying. Totally there can be 5 layers, from 0 to 4. You can switch between them with pressing shift and pressing appropriate key (from 0 to 4). Indication of the current layer is specified in the map’s supplemental information (in upper right corner). Specification of MapperMap AddTile/AddTileName methods was expanded, also layer parameter was added void AddTile(uint16 hexX, uint16 hexY, int offsX, int offsY, int layer, bool roof, uint picHash) void AddTileName(uint16 hexX, uint16 hexY, int offsX, int offsY, int layer, bool roof, string@+ picName) Functions for hash calculation by file’s name and inverse function were added to the native scripts const char* (*GetNameByHash)(uint hash); // Get name of file by hash uint (* GetHashByName)(const char* name); // Get hash of file name The functional for operating with the chosen’s actions was added to the client’s scripts. For taking or specifying the actions use functions uint GetChosenActions(uint[]@+ actions) void SetChosenActions(uint[]@+ actions) This array consists of blocks of seven variables, the first is the type, the other are the parameters. Values of types and parameters look in _client_defines.fos Chosen actions. Argument with the location was added to the reserved function for checking the entries into this location bool entrance_FuncName(Location& loc, Critter@[]& critters, uint8 entrance) The next events were added for critters CRITTER_EVENT_USE_ITEM_ON_ME bool EventUseItemOnMe(Critter& whoUse, Item& item) CRITTER_EVENT_USE_SKILL_ON_ME bool EventUseSkillOnMe(Critter& whoUse, int skill) In the calls stack it is situated between CRITTER_EVENT_USE_* and the global handler. That is CRITTER_EVENT_USE_ITEM for the player + CRITTER_EVENT_SMTH_USE_ITEM for those who can see the player. CRITTER_EVENT_USE_ITEM_ON_ME The global handler critter_use_item. and CRITTER_EVENT_USE_SKILL for the player + CRITTER_EVENT_SMTH_USE_SKILL for those who can see the player. CRITTER_EVENT_USE_SKILL_ON_ME The global handler critter_use_skill. The supplemental information (current hex, fps, etc.) in Mapper is presented in the upper right corner. Bug of 135 revision with transparent tiles when placing them was fixed. Data connected with unfinished mechanism of textured grid was deleted. Rev.136 http://www2.xp-dev.com/sc/change/94227/136 Maps converted to text format. Rev.135 http://www2.xp-dev.com/sc/change/94227/135 Now only text format is used for maps, it is binary only for loading. All maps are converted to the text format (they will be uploaded with the next revision). Extension of this format is “fomap”. To convert your own maps to the new format – execute in Mapper ““#ConvertMaps”, then you should manually or using Mapper set required values in Time, NoLogOut, ScriptModule, ScriptFunc fields, which values you can see in file Maps.cfg. File Maps.cfg is not used anymore, locations prototype numbers are defined opposite to their name in file Locations.cfg, as in the most cases the one map prototype is used for the one location. According to these changes, the next MapperMap methods are deleted: uint GetTile(uint16 tileX, uint16 tileY, bool roof) const void SetTile(uint16 tileX, uint16 tileY, bool roof, uint picHash) string@ GetTileName(uint16 tileX, uint16 tileY, bool roof) const void SetTileName(uint16 tileX, uint16 tileY, bool roof, string@+ picName) And the next are added: uint GetTilesCount(uint16 hexX, uint16 hexY, bool roof) const void DeleteTile(uint16 hexX, uint16 hexY, bool roof, uint index) uint GetTile(uint16 hexX, uint16 hexY, bool roof, uint index) const void AddTile(uint16 hexX, uint16 hexY, int offsX, int offsY, bool roof, uint picHash) string@ GetTileName(uint16 hexX, uint16 hexY, bool roof, uint index) const void AddTileName(uint16 hexX, uint16 hexY, int offsX, int offsY, bool roof, string@+ picName) Also the next fields are added: const int WorkHexX const int WorkHexY int Time bool NoLogOut string ScriptModule string ScriptFunc The next methods are deleted (as their technology is not good enough for now): string@ GetTerrainName(uint16 tileX, uint16 tileY) cons void SetTerrainName(uint16 tileX, uint16 tileY, string@+ terrainName). Function bool SaveMap(MapperMap@+ map, string& fileName, int pathType, bool text, bool pack) now looks as bool SaveMap(MapperMap@+ map, string& fileName, int pathType). The ability to transmit commands /text /pack when saving by the console is deleted respectively. Several functions for operating with map’s fields were added to mapper script (you can do this procedure simply editing necessary field in the map’s file with text editor): #MapTime value – map’s time in minutes; #MapNoLogOut value –possibility to log out on the map; #MapScriptModule moduleName – script, module’s name; #MapScriptFunc funcName – script, function’s name. Now it is possible to place lots of sprites on one hex. Be attentive, fallout’s tiles have the same size and if you place two tiles on the same hex, you won’t see it (only if you select it , it will be less transparent than the others). Take it into account when you place or copy-paste tiles. Function #ClearTiles can help you with this problem, it deletes superfluous tiles from the hex. So, if you operate with fallout’s tiles and you don’t need several tiles on the same hex, execute this script when you finish work. Also you can place tiles on every hex, not in two. Ability of shifting is added for tiles. To produce tile shift just make the same operations as switching between tiles, but additionally pressing shift. Also you can use the same shift procedure for items. To cancel shift, press Alt with Shift and move objects. Fixed 130 revision’s bugs. Fixed bug with absence of shifting in fofrm with one sprite. Fixed bug with error in loading sprites in scripts (LoadSprite), which caused several other bugs. Remained ini files were formatted. Rev.134 http://www2.xp-dev.com/sc/change/94227/134 Config was uploaded by mistake. Take into accont, don't use config file from 132 and 133 revisions, admin pass is "hh" there. Rev.133 http://www2.xp-dev.com/sc/change/94227/133 Redding maps fixed, quest NPC were added. Rev.132 http://www2.xp-dev.com/sc/change/94227/132 Fixed "Anger" quest, the missing dialogue was restored, now it can be finished. Added quest "Forgery". (VC, Linnet) Rev.131 http://www2.xp-dev.com/sc/change/94227/131 New quests "Anger", "Ernst Telman" were added. (VC, Linnet) Fixed bug in VC guard's AI scripts. Fixed mistakes in quest “Amnesty for Joshua” dialogues. Ability to cancel their service for mercs/companions was added if the owner exits from location to the global map. Rev.130 http://www2.xp-dev.com/sc/change/94227/130 Support of graphics files SPR, TIL, ZAR from Fallout Tactics was added. Support of data files BOS from Fallout Tactics was added (works as ZIP archieve). For loading certain animation from SPR files, state it in the name after “$” sign. E.g. loading CrouchAttackClubSwing animation from file Mutant.spr - “Mutant$CrouchAttackClubSwing.spr”. The first frame of first animation is taken without direction. Also, ability to set certain palette for ART files (graphics files from Arcanum) was added – state palette’s number (from 0 to 3) after “$” sign. E.g. to load dfmbnsba.art file with the second palette - “dfmbnsba$1.art”. First palette is taken without direction (that is 0). Operation with sprites was changed. Now all interface graphics (which is set in ini files) is represented not as one sprite, as continuously played animation. Functional for operation with currently drawn sprites on the map was added to the native client’s and mapper’s scripts. Structures: struct Sprite – displayed sprite; struct SpriteInfo – additional information about the sprite. Functions: Sprite* (*GetDrawingSprites)(uint& count); - currently drawn sprites, if no sprites (on the global, menu), then NULL is returned and count == 0; SpriteInfo* (*GetSpriteInfo)(uint sprId); - getting additional information about certain sprite; uint (*GetSpriteColor)(uint sprId, int x, int y, bool affectZoom); - getting pixel’s colour, with the ability of taking zoom into account; it isn’t available for 3d models yet; format - ARGB; bool (IsSpriteHit)(Sprite sprite, int x, int y, bool checkEgg); - test whether the point on the display matches with the current sprite with taking zoom, transparence and egg of transparence into account (optional). The reserved native global variable GameOpt was renamed to Game. Global variables int __MouseX, __MouseY for current mouse position indication were added. Function void GetMousePosition(int& x, int& y) was deleted. Indication of opened console bool __ConsoleActive was added to client’s scripts. Bug with memory leak when rendering 3d graphics to sprites was fixed. Rev.129 http://www2.xp-dev.com/sc/change/94227/129 Added ability to use robot-guards from Sierra as bodyguards (for those who had completed quest "No-sweat job" in Navarro) Added quest "Amnesty for Joshua" (VC, Amanda) Work of teleport on special encounter "Mad scientist's laboratory" was restored. Rev.128 http://www2.xp-dev.com/sc/change/94227/128 Second stable SDK assembly. For the purpose of decreasing repository's size, assemblies will be stored in another places. Links you can find in text files. Rev.127 http://www2.xp-dev.com/sc/change/94227/127 Quest "No-sweat job" in Navarro. Rev.126 http://www2.xp-dev.com/sc/change/94227/126 Mercenaries and companions mechanism (merc.fos) was updated. Now every companion has term of service. Companions don’t meddle in player’s showdowns with NPC’s. Fixed quest “Dip.Courier”. Now it can be finished. Fixed quest “Dock’s attack”. Now it can be finished after killing 5 giant insects. Added 3 new mercs for Lo Pan. Updates NPC-travellers mechanism (traveller.fos). The first NPC-traveller was added (eli.fos). Functions which cooldowns checkup for NPCs in dialogues were fixed. When character dies, all items with flag ITEM_GAG are deleted. Fixed cooldowns for quests “Hub bibliography”, “Sick Brahmin” and in the dialogue with dr.Klaus for stimpacks and first aid kits delivery. When NPC repairs an item, ammo is ejected. Script for NPC monologues realization was added. (monologue.fos) Rev.125 http://www2.xp-dev.com/sc/change/94227/125 Fixes of password encryption in the client's files. Rev.124 http://www2.xp-dev.com/sc/change/94227/124 Fixed bug with graphics loading in the previous update. Rev.123 http://www2.xp-dev.com/sc/change/94227/123 DAT2.1 (Arcanum) files support was added. ART (Arcanum) graphic format was added. Function for operating with strings splitEx was added. Principle is the same as in split, but empty elements are not included in the result array. Also spaces/tabs/string_hyphenation are deleted from the result elements. Examples: split(“A|B||D”, “|”) -> {“A”, “B”, "", “D”} splitEx(“A|B||D”, “|”) -> {“A”, “B”, “D”} split(“A| B\t\t||D| E|F ”, “|”) -> {“A”, “ B\t\t”, "", “D”, “ E”, “F ”} splitEx(“A| B\t\tC||D| E|F ”, “|”) -> {“A”, “B”, “D”, “E”, “F”} Additional DrawSprite functions for the client and mapper were added. You can transfer true with the last argument and as the result, the shift which is stored in the current file will be added to the sprite’s position. void DrawSprite(uint sprId, int sprIndex, int x, int y, uint color, bool applyOffsets) void DrawSprite(uint sprId, int sprIndex, int x, int y, int w, int h, bool scratch, bool center, uint color, bool applyOffsets) Fixed bugs with incorrect ini settings parsing in the scripts. Rev.122 http://www2.xp-dev.com/sc/change/94227/122 Client scripts updates: For the reserved function void render_iface(uint layer) was added calling with value layer 100 to give the ability of drawing on the global map. Also the next global variables were added for operating with the global map: bool __GmapActive – whether global map is active and all the variables below are correct; bool __GmapWait – whether waiting mode of encounter affirming is active; float __GmapZoom – current zoom, don’t forget it to take into account while drawing a map; int __GmapOffsetX, __GmapOffsetY – map shift from the zero-coordinate (up-left corner); int __GmapGroupX, __GmapGroupY – player’s group coordinates; int __GmapMoveX, __GmapMoveY – destination point’s coordinates; float __GmapSpeedX, __GmapSpeedY – movement speed every 50 ms, without taking relief into account For example, calculating the current pixel group’s position - (x = __GmapGroupX / __GmapZoom + __GmapOffsetX), (y = __GmapGroupY / __GmapZoom + __GmapOffsetY). Fixed bug with hanging when drawing 3d model, occurred in the last update. Fixed missing bracket in English texts. (by Kilgore) Rev.121 http://www2.xp-dev.com/sc/change/94227/121 Added more mouse sensitivity and now you can see mouse’s speed percent in the settings. Updated FOConfig.exe. Added AlwaysRun option. Possible values for option Mouse speed were corrected. Option Sleep now can be set to -1, that means switching it off (maximum performance). Added ability of redirecting keyboard’s symbol codes input. For this, use option KeyboardRemap (in FOnline.cfg). It is performed after space – X Y X Y …, where X is the code which is substituted by Y. Code numbers - http://fonline.pastebin.com/Qy3E0qwj Interface description in default.ini is formatted and commented. (by LoadRunner) Location prototypes updates: Option max_copy was deleted. Option max_players was added. It limits the amount of players who can be on the location simultaneously. Players, who can’t enter location because of exceeding the limit will see message 904 from FOGAME.MSG {904}{}{Location is overcrowded, try to enter later.} Password encryption in server *.client. files was added. Mouse shift when switching between movement modes was fixed. Also, for more accurate work, the hex mask was added – look \Client\data\art\misc\hex_mask.png. Only red colour is taken into account and when it takes on certain value, the shift to certain direction is performed (50 – 5, 100 – 0, 150 – 3, 200 – 2). The mask is optional, you can work without it. Fixed loading/saving tiles in the maps text format. Fixed global map shifting behind screen’s edge. Registration of useless clicks in mapper when switching between windows, now isn’t performed. Fixed the animation of 3d critter standing when situating them on the map. Also now 3d critters don’t play standing animation in the critter’s list. Fixed displaying of critters which have only one direction. Fixed command ~reloadscripts. Now when you mark items for deleting (DeleteItem/DeleteItems), their quantity is saved. So, in the moment when real deleting is performed, server will delete the requested number of items. Now knockout during turn-based fight leads to immediate loosing action points, not after finishing the turn. Also, frequent checks for the necessity of finishing the turn were added at the server - if critter’s dead, critter has negative AP, critter has no more AP. Scripts: Fixed critter’s flags (Critter extra flags, _defines.fos). Fixed special encounter scripts Guardian of Forever, Mad Brahmins. Script trader.fos was formatted. Reserved function was added to client scripts, which is called with attacks void hit_aim(uint8& aim) aim value can be redefined( Hit locations in _defines.fos). Function int Critter::GetScore(uint score) was added to server scripts. Specification Critter::AddScore(int score, int val) was changed to Critter::AddScore(uint score, int val). Function for calculation the size of drawn text was added to client and mapper scripts void GetTextInfo(string& text, int w, int h, int font, int flags, int& tw, int& th, int& lines) string& text – text; int w, h, font, flags – height, width, print, flags; int& tw, int& th, int& lines – total width, height and amount of strings in the current text. Rev.120 http://www2.xp-dev.com/sc/change/94227/120 Unused encounter tables for Fallout 1 and commented original’s scripts were deleted from worldmap_init.fos; Random encounters of “beasts versus beasts” type were enabled, which were presented in the scripts, but were absent in the original. Added some new kinds of non-unique random encounters. Now, if player uses to kill NPC’s of certain group or organizations on random encounters, then they become aggressive. Vault City guard’s automatic search is deactivated. Now you need to activate the dialogue to pass through. Fixes in English dialogues versions. Maps fixes. Rev.119 http://www2.xp-dev.com/sc/change/94227/119 Fixed lots of little mistakes in dialogues; Fixed bugs in some Den and Klamath quests; Maps fixes; Duplicate dialogues with different names were deleted. Rev.118 http://www2.xp-dev.com/sc/change/94227/118 Fixed modificator's argument from Parent-0-7 to Parent0-7. Rev.117 http://www2.xp-dev.com/sc/change/94227/117 Added dialogues to Arroyo doctor and his team. Slight fixes (dialogues, maps). Rev.116 http://www2.xp-dev.com/sc/change/94227/116 Library for importing different 3d models was enabled – Assimp http://assimp.sourceforge.net/ Formats that are supported: http://assimp.sourceforge.net/main_features_formats.html Built-in one is still used for X format, for other ones – this library. If you don’t need the library, you can delete it (file Assimp32.dll), client and mapper are able to work without it. Updated mechanism of linking models and animations, now you can link any animation to any skeleton from any file. fo3d format changes: Modificator ModelAnimation was deleted. Modificators Anim, RenderFrame, RenderFrames were expanded – now file name which consists needed animation is placed before the animation’s name (if you state “ModelFile”, then search is performed in the file of loaded model)/ Specification of indicating parent texture (Texture X Parent) was expanded. Now you can additionally state the mesh number and its part, from which the texture is taken - Texture X ParentY-Z, where X is the texture’s number, Y is mesh number, Z is mesh part number; parameters Y-Z are optional, you may don’t use them at all or you may use them partly (Parent, Parent0, Parent-5). Fixed bug with incorrect script processing when operating with Critter::ShowScreen. Fixed bug with incorrect operating and crashing when using Log function with some special symbols. Added Combat Armor 3d model (by Gray). Rev.115 http://www2.xp-dev.com/sc/change/94227/115 Added special encounter "Warehouse of lost doughnuts" (author - Ponchik). Scripts for some original special encounters (author - Cracker). Remade some prototypes. Windows without glasses in Vault's walls can be shooted through now. Slight fixes. Rev.114 http://www2.xp-dev.com/sc/change/94227/114 Maps for quests from the 113 revision. Rev.113 http://www2.xp-dev.com/sc/change/94227/113 Klamath: quests - "Worker searching", "Husband's alert", "Brahmins vaccination" (author - Ponchik). Slight fixes. Rev.112 http://www2.xp-dev.com/sc/change/94227/112 Finished appearance of random encounter "Ocean Trader". Slight maps, dialogues and graphics fixes. Added buttons for BarterGround, GECK town, Warehouse and Hell for the global map (author - Ponchik). Slight fixes. Rev.111 http://www2.xp-dev.com/sc/change/94227/111 Added additional mechanism for data files loading (dat, zip). It is necessary for loading data files loading before scripts initializing and processing start() function as some date is needed to be used before this (effects, prints and some other resourses). For adding files to loading – create DataFiles.cfg file in which you should list all necessary file names. The program searches for the content from the last to the first data file. This mechanism uses server, client, mapper. If list isn’t found then no alerts will be displayed. If one of the files from the list can’t be found or load error appears, then alert will be shown. Option PatchDatPath was deleted, loading of this file is moved to DataFiles.cfg. Rev.110 http://www2.xp-dev.com/sc/change/94227/110 Fixed model's borders calculating which caused nick or text shift above critter's head. Rev.109 http://www2.xp-dev.com/sc/change/94227/109 Fixed skin setting-up when registration 3d character. Fixed order of loaded packs (dat, zip) scanning while searching and parsing ini files. Addition to 106 revision – for stating specific keys for certain resolutions now are used not separate files with different names, but marks in the main file. At the start of the string write “resolution”, than min. width and height for starting using these options. By default these values are equal to zero. For example: "resolution 1024 768 key = value..." It means, that “key = value ...(and so on till the next keyword ”resolution”)” will be included in the final ini. Found data will be inserted in the main file as screen width grows. Rev.108 http://www2.xp-dev.com/sc/change/94227/108 Actual cash files. Rev.107 http://www2.xp-dev.com/sc/change/94227/107 SDK is switched to 3d players mode. Normal version will be restored after finishing mechanism debugging process. For switching off 3d players models – comment the next strings in Server\scripts\_defines.fos #define PLAYERS_3D // Enable 3d players #define PLAYERS_3D_NO_HEAD // No head slot #define PLAYERS_3D_VAULT_SUITE // Vault suite by default, not naked 3d updates: Fixed and reduced the size of attributes and weapons. Added missing attributes of opened pipboy. In the left hand now is displayed the item, which player has in the second slot. Armor’s models are divided between the current armor items in the such way, that gamer could see the difference. For example combat armor consists of power armor and the helmet, robes are replaced by jail suit and etc. Fixed animation playing during creating the new character in single mode. Added skin change processing in start intro and after Kitty’s haircut. Added skeleton’s skins. Added sound for men and women. Fixed sound name for critters parameter’s loading (CritterTypes.cfg, SoundName). Now characters walk slowly with double click if alwaysrun option is turned on. Rev.106 http://www2.xp-dev.com/sc/change/94227/106 Added ability to make 3d characters available to play for. To enable it (it is disabled as default) - comment certain strings in _defines.fos // #define PLAYERS_3D // Enable 3d players // #define PLAYERS_3D_NO_HEAD // No head slot // #define PLAYERS_3D_VAULT_SUITE // Vault suite by default, not naked Updated mechanism of working with ini files. Now, when searching for the keys, excess spaces and tabulations are skipped (now you can type “ key = value ”, previously was correct only variant “key=value”) Added function bool AppendIfaceIni(string& iniName), which enables additional ini files. If the name includes slashes, than the search is being performed from data root, if not - than from folder data/art/interface/. default.ini is added automatically by the engine, others you can enable in start() client function. Loading is performed sequentially from default.ini to ones enabled by user by turn. Every packed file is checked by the turn of loading, then in the folder. Global variable string __UserInterface was deleted. Fixed bug with incorrect parsing of animation indexes in fo3d file. Fixed bug with incorrect position of the egg of transparence in zoom mode. For better readability the next scripts were formatted: start_server_client.fos client_main.fos In the future this practice will be continued. Rev.105 http://www2.xp-dev.com/sc/change/94227/105 Documentation update - slight fixes. Rev.104 http://www2.xp-dev.com/sc/change/94227/104 Added structure of script array (ScriptArray) to native scripts. Added ability to client's native scripts of calling hex data - Field. Data is stored in Field* GameOptions::ClientMap, uint GameOptions::ClientMapWidth/ClientMapHeight. If map is loaded, than ClientMap != NULL, hex calling - ClientMap[hexY * ClientMapWidth + hexX]. Rev.103 http://www2.xp-dev.com/sc/change/94227/103 Added always run option - can be enabled in client's config file “AlwaysRun”. Disabled as default. Added global variables for AlwaysRun regulating: bool __AlwaysRun (as default - false) - enabling AlwaysRun ability; uint __AlwaysRunMoveDist (as default = 1) - run with click, if distance is equal or more than the value; uint __AlwaysRunUseDist (as default = 5) - run with using smth/dialogue/etc, if distance is equal or more than the value. TLA's mechanics is equal to original - always run with click, always run with using if distance is more than 4 hexes. Added parameter uint Critter::ItemTransferCount to native scripts. It stores the value of transferred items during the last transaction. Rev.102 http://www2.xp-dev.com/sc/change/94227/102 Optimized server operation (script calling) in one tread operation mode, performance increased up to 400%. Fixed bug with crash when calling Critter::Say* methods with parametr SAY_SAY_TITLE. Rev.101 http://www2.xp-dev.com/sc/change/94227/101 Changes in fo3d format, new specification was created - look this theme: http://www.fonline.ru/forum/showthread.php?t=19689 New format added new abilities of working with 3d objects - trasmission of texures, other paremeters, etc. Also added ability to render certain animation to sprites as for one frame, either for the whole animation. But the bug with cutting off the shade situated below the lowest edge of model still presents. Updated old fo3d files, also VanBuren's critters and weapon models were added. Changed effects structure, added effect for normal mapping (3D_NormalMapping.fx). Added transfer of real numbers through scripts, float __EffectValue0..9. Fixed bugs with loading 3ds files - miss of meshes except the first; crash if texture coordinates are not presented. Fixed bug in Mapper with data copying when copy-pasting a large number of objects. Fixed text centering of hexes amount in zoom mode. Rev.100 http://www2.xp-dev.com/sc/change/94227/100 Documentation update. Rev.99 http://www2.xp-dev.com/sc/change/94227/99 Updated documentation file, which was missed in the previous revision. Rev.98 http://www2.xp-dev.com/sc/change/94227/98 Added resourse gathering system; Documentation updating. Rev.97 http://www2.xp-dev.com/sc/change/94227/97 Fixes of "Night is tender" quest, now healing must work properly. Added preview from global map for GECK location. Rev.96 http://www2.xp-dev.com/sc/change/94227/96 Gecks counting on the location now affects its auto moving away and visibility separately; Parameter geck_enabled (Map::GeckEnabled) renamed to geck_visible (Map::GeckVisible). Rev.95 http://www2.xp-dev.com/sc/change/94227/95 Added global server function void SetChosenSendParameter(int index, bool enabled) which can denie transmitting parameters to client. Transmitting of all parameters is enabled by default. Rev.94 http://www2.xp-dev.com/sc/change/94227/94 Fixes of sea encounter maps. Rev.93 http://www2.xp-dev.com/sc/change/94227/93 Added sea encounters; Added posibility of an encounter while travelling on air/water transport; Player always have possibility of cancellation water/air encounter and never gains experience for that; Bug fix in mapper with incorrect editing critter's parameters. Rev.92 http://www2.xp-dev.com/sc/change/94227/92 Fixed displaying rating in pipboy. In mapper additional indication of cut sprites was added to make lines, which are needed for correct interaction, visible. Rev.91 http://www2.xp-dev.com/sc/change/94227/91 Added traffic encryption between server and client. Rev.90 http://www2.xp-dev.com/sc/change/94227/90 Fixed choosing automatically cut sprites in zoom mode. Rev.89 http://www2.xp-dev.com/sc/change/94227/89 Added parametr DrawOrderOffsetHexY for shifting order of drawing lower (Y axis). This is an analogue for recently deleted DrawPosOffsX. Fixed using car trunk. Different slight fixes. Rev.88 http://www2.xp-dev.com/sc/change/94227/88 Fixed exit from Redding; slight fixes. Rev.87 http://www2.xp-dev.com/sc/change/94227/87 Fix for weapon AP cost. Rev.86 http://www2.xp-dev.com/sc/change/94227/86 May be fixed bug with incorrect displaying of some tiles. Fixed bug with unworking elevators. Added restoration of effects when loosing a device (cause crashed e.g. with alt+tab) Rev.85 http://www2.xp-dev.com/sc/change/94227/85 Fixed bug with chat disappearing. Fixed AI bug when combat plans always finished with REASON_CANT_WALK. Rev.84 http://www2.xp-dev.com/sc/change/94227/84 Fix for DT params reading. Rev.83 http://www2.xp-dev.com/sc/change/94227/83 Safety checks for radio commands. Rev.82 http://www2.xp-dev.com/sc/change/94227/82 Fixes of some dialogues; translations of dialogues on Barterground; map fixes; fixes of encounter table; slight fixes. Rev.81 http://www2.xp-dev.com/sc/change/94227/81 Fixed another bug during moving on the global map. Fixed unplanned activating of b/w effect. Rev.80 http://www2.xp-dev.com/sc/change/94227/80 Fixed teleportation bug during moving on the global map. Rev.79 http://www2.xp-dev.com/sc/change/94227/79 Fixed bug with incorrect tear and wear and fuel consumption calculation during moving on the global map by car. Rev.78 http://www2.xp-dev.com/sc/change/94227/78 Fixed brightness output. Fixed outlining activation. Rev.77 http://www2.xp-dev.com/sc/change/94227/77 Added automatic sprite cutting. Main purpose – correct displaying of long walls. Parameter SpriteCut was added to prototypes and mapper (only for scenery) for modification. Cutting values: 0 – switched off, 1 – horizontal (X axis), 2 – vertical (Y axis). Wall blocks should be set manually , for that purpose six blocks with different corner types with visual indication were added. It is necessary for correct calculation of brightness and egg of transparence reaction. Numbers 6800..6805 at the end of Wall and Fast list. Fixed client instability after recent update. Primary indexes array for animations was expanded to the range ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789. For value changing use native means (structure CritterType in fonline.h). Support of effects (HLSL) loading with earlier version of compiler. Automatic attempt of compilation is performed after failure in compilation with the current library. Added data updating for client function GetIniStr in the start function (start) after each call of LoadDataFile. Mapper update: Fixed bug with error in loading tiles with extension not in lower case. Fixed algorithm of sprite displaying calculation (when big sprites were disappearing near the screen edge). Additional visual means for debugging: - Ctrl + Q: Corners type viewing; - Ctrl + W: Viewing the result of sprite cutting, linking them to hexes; - Ctrl + E: Viewing the sequence of sprites drawing. At the time of renewing NPC’s bag, only items which are not in inventory are repaired and reloaded. Added ability to set sprite shift in screen coordinates to prototypes. Fixed bug with double notification of quest state change. Rev.76 http://www2.xp-dev.com/sc/change/94227/76 Added quest “Night is tender” Rev.75 http://www2.xp-dev.com/sc/change/94227/75 Tables for sea encounters, slight fixes. Rev.74 http://www2.xp-dev.com/sc/change/94227/74 Source documentation. Rev.73 http://www2.xp-dev.com/sc/change/94227/73 SPECIAL calculating is moved to native scripts - fonline_tla.dll for server and fonline_tla_client.dll for client (must be situated in data\scripts). The other parameters which are used in the engine are needed generally for drawing GUI, but soon they’ll be moved to scripts too. Native scripts files are moved from data folder to scripts. Added bat-file make_tla.bat for their compilation (installation of MSVS8 is necessary). For example of use new methods for critter classes are added (IsInjured, IsDmgArm...), items (IsHtHAttack, IsGunAttack...) with pragma bindfunc. Example of linking global varieties of standard and native scripts is added (__HitAimEyes, __HitAimHead..., these global varieties are moved to scripts). Callback functions are added (to GameOptions) for item usage cost determination - GetUseApCost. For attack max range determination - - GetAttackDistantion. It further such functions will force out usage of critter parameters in the engine. These functions are binded at the stage of connecting of library to the engine (DllMainEx). For operating with the engine added the next functions (to GameOptions): CritterChangeParameter – for correct change of critter parameter, this function should be called firstly, then you can change the value. CritterTypes – index of CritterType structures where data from CritterTypes.cfg is stored. Added method to client’s critters for detection whether now is time of its move in the turn-based mode bool CritterCl::IsTurnBasedTurn() const Some logics of operating with turn-based mode is moved to the scripts - turn_based_process main.fos. Some recommended specifications for the reserved functions are changed - templates.fos. Min. time of dialogue or barter with NPC now is regulated by the global varieties __DlgTalkMinTime (now default 100 seconds) и __DlgBarterMinTime (now default 50 seconds). Range for all prototypes (maps, locations, items) is expanded to 30000. Fixed bug with incorrect drawing of minimap in the pipboy. Fixed bug with incorrect calculating of healing rate while registration. Fixes of Zerg’s special encounter. Rev.72 http://www2.xp-dev.com/sc/change/94227/72 Data library for script compilation (updated on 27 October) Rev.71 http://www2.xp-dev.com/sc/change/94227/71 Added Zerg special encounter. Fixed bug with incorrect names in Fixboy. Added function LoadDataFile to server scripts, analogue of client/mapper. Fixed mistiming of player movement on global map. Deleted function Critter::SendQuestVar, now alert about changing of local variable is automatic. Changed function specification void ShowScreen(int screenType, uint param, string& funcName) to void ShowScreen(int screenType, uint param, string@+ funcName), now can transmit both empty string or null. Rev.70 http://www2.xp-dev.com/sc/change/94227/70 Documentation is updated. Deleted incorrect splash-picture. Added urgent files for scripts autoaddition in Notepad++. Rev.69 http://www2.xp-dev.com/sc/change/94227/69 Added ability to use your own shaders for game graphics drawing. High Level Shader Language is used for this. Effects folder is situated in data\effects. After the first compilation they are cashed in the folder data\cache (in futher other different data will be cashed there). You can read specifications on the game engine effects in data\effects\ReadMe.txt. Added ability to link any effect to sprite or model in .fofrm and .fo3d (“effect=effect_name.fx”). For default effect changing, function void SetEffect(int effectType, int effectSubtype, string@+ effectName) was implemented into the client scripts. int effectType, effectSubtype – effect types look in _client_defines.fos (Subtype for fonts used font type); string@+ effectName – the name of the effect file (with extension) is in the folder data\effects. Added changing of detailization of game objects for demonstration. For activation press Alt+W, for return press Alt+Q. Added client function for map redrawing void RefreshMap(bool onlyTiles, bool onlyRoof, bool onlyLight) if all three parameters are false, than everything will be redrawed. Also these three parameters are incompatible. Fixed bug in mapper with impossibility of viewing 3d critters in prototypes table. At present time they can’t be ranged. Added ability to play sounds/music from different folders. void RefreshMap(bool onlyTiles, bool onlyRoof, bool onlyLight) If there isn’t slashes (‘/’,‘\’) in path name than search is performed in the folder sfx/music. If there are slashes, than in the root (“data/mysounds/mysound.ogg”). Rev.68 http://www2.xp-dev.com/sc/change/94227/68 Fixed bug in the ObjectEditor when damage type is saved incorrectly. Rev.67 http://www2.xp-dev.com/sc/change/94227/67 Fixed crashing when calling CritterCl::[Param/Stat/Perk/etc]Base in client scripts; Fixed error with recording Anydata of zero length (by Atom). Rev.66 http://www2.xp-dev.com/sc/change/94227/66 Fixed incorrect weapon prototype; errors in checking for special encounters; added decraft of the sand sack to fixboy; other little fixes. Rev.65 http://www2.xp-dev.com/sc/change/94227/65 Redding: finished map according to the last concept; - Garbage was returned to static locations; - Ammo craft on benches (beta-version); - Destruction of the sack using skill repair now gives use empty sack. - Entering Den message was moved to texts from script. Rev.64 http://www2.xp-dev.com/sc/change/94227/64 AngelScript updated to 732 revision. Added new methods for arrays: void T[]::insertAt(uint, const T&) – element inserting in specified position in the array; void T[]::removeAt(uint) – deleting the element by index; void T[]::insertFirst(const T&) – element inserting to the beginning of the array; void T[]::removeFirst() – deleting the first element; void T[]::insertLast(const T&) – element inserting to the end of the array; void T[]::removeLast() – deleting the last element; void T[]::grow(uint) – add elements (the sames as a.resize(length()+X)); void T[]::reduce(uint) – delete elements (the same as a.resize(length()-X)); T& T[]::first() – call of the first element of the array (the same as a[0]); T& T[]::last() – call of the last element of the array (the same as a[a.length()-1]). Also deleted all functions ArrayPushBack as the built-in array functional was expanded. All the scripts were fixed accordingly. Rev.63 http://www2.xp-dev.com/sc/change/94227/63 Added ability to start the server as a service. For registration/start use key “-service” (shortcut FOServerService.exe.lnk). For deleting use keys “-service -delete” (shortcut FOServerServiceDelete.exe.lnk). Added ability to log using function OutputDebugString. The log can be caught (even remotely) using program DebugView http://technet.microsoft.com/en-us/sysinternals/bb896647.aspx For switching it on in server and client configs option LoggingDebugOutput is added. Server/client/mapper will work normally now with incorrect active folders. At start you set the current folder of executable. Fixed bug with absence of replacement “x” by “ч” in built-in punto switcher. Fixed crash in turn based mode and incorrect work of Map::GetCritter(uint critterId). Rev.62 http://www2.xp-dev.com/sc/change/94227/62 Fixed bug with updating vehicle data on the global map. Fixed bug with system hanging while looking items quantity in game info. Fixed bug with the incorrect login/disconnect. Fixed bug with incorrect creating non-stacking items on the map in the number of >1. Fixed bug with incorrect critters gathering when path tracing (by Atom). CRITTER_EVENT_TALK now performed before checking NPC for settings which could restrict speaking with it. Added new mechanism for script garbage gathering (by Atom). For config file simplification, the next options were removed: ASGarbageTime, VarsGarbageTime. Deleted transfer of a group of critters into global map processing global_process, CRITTER_EVENT_GLOBAL_PROCESS. Also instead of transferring a group into global map processing global_invite, CRITTER_EVENT_GLOBAL_INVITE, now only the leader is transferred. Instead of picking group use Critter@[]@ Critter::GetGlobalGroup(). Because of that, specification methods were changed: bool Critter::EventGlobalProcess(int type, Critter@[]& group, ...) bool Critter::EventGlobalInvite(Critter@[]& group, ...) for bool Critter::EventGlobalProcess(int type, Critter& cr, ...) bool Critter::EventGlobalInvite(Critter& leader, ...) Reserved functions of critter event CRITTER_EVENT_GLOBAL_PROCESS, CRITTER_EVENT_GLOBAL_INVITE bool _FuncName(Critter& cr, int type, Critter@[]& group, ...) bool _FuncName(Critter& leader, Critter@[]& group, ...) for bool _FuncName(Critter& cr, int type, ...) bool _FuncName(Critter& leader, ...) Fixed bug with incorrect cooldown for hijacking, now it is equal for a normal lock. Added checking for unopenable door to the lock break script. Rev.61 http://www2.xp-dev.com/sc/change/94227/61 Fixed bug with incorrect reappraisal of item flags in Mapper. Fixed bug when player isn't notified about moved item. Rev.60 http://www2.xp-dev.com/sc/change/94227/60 Fixed bug with incorrect displaying of the rain on roofs. Rev.59 http://www2.xp-dev.com/sc/change/94227/59 Mapper's fix for correct operating with new folder and print's names. Rev.58 http://www2.xp-dev.com/sc/change/94227/58 For editing use program Bitmap Font Generator v1.12. http://www.angelcode.com/products/bmfont/ Print should have the next attributes - OEM RUSSIAN, Padding 1 (in all directions), Binary, all symbols should be placed on the one texture. All prints are moved in the separate folder “Client\data\fonts\”. For the example print FONT_COURIER_NEW_SMALL is added. Look _client_defines.fos, client_main.fos, CourierNewSmall.bmfc, CourierNewSmall.fnt, CourierNewSmall_0.png. Added function in client’s scripts of activating the clock which shows you the time signal comes to server and returns (ping). You can use it for restriction of input while waiting for server’s answer. Fixed crushing when looking players statistics on server. Fixed crushing of Dialogue Editor (by Atom). Rev.57 http://www2.xp-dev.com/sc/change/94227/57 Expanded mechanism of operating with ingame radio. Added flag ITEM_RADIO for radio. (in _defines.fos). Radio messages are now also sent to radios which are on the ground . For their identification engine sends them with color 0xFFFFFFFE (in map_message in client_main.fos). Realization is in script radio.fos (interface, mechanics), call from main.fos. Interface data is taken from default.ini (Radio*). You can edit it with using item or using science skill on it. Radio data is situated in general fields of several item types. That’s why it isn’t a good idea to use this flag with Doors, Keys, Cars, Weapons, Armors, Holodiscs. Transmitting and receiving functions are separated. For managing the next flags and range types are used (_defines.fos): Restriction of transmitting/receiving is stored in Item/ItemCl::RadioFlags, used by the engine: RADIO_DISABLE_SEND, RADIO_DISABLE_RECV. Restriction of switching radio state in в Item/ItemCl::RadioFlags: RADIO_DISABLE_SHIFT_SEND, RADIO_DISABLE_SHIFT_RECV - restriction of switching transmit/receive; RADIO_DISABLE_SHIFT_BC_SEND, RADIO_DISABLE_SHIFT_BC_RECV - restriction of changing distance range; RADIO_DISABLE_SHIFT_CHANNEL – restriction of channel switching. Range types are stored in Item/ItemCl::RadioBroadcastSend/RadioBroadcastRecv, are used by the engine: RADIO_BROADCAST_WORLD – works all over the world; RADIO_BROADCAST_MAP – works within the limits of the current map; RADIO_BROADCAST_LOCATION - works within the limits of the current location; RADIO_BROADCAST_ZONE(x) - works within the limits of “x” zones on the global map; RADIO_BROADCAST_FORCE_ALL – works everywhere regardless of the adjustments of transmitting or receiving radio/ Added support of these flags to the object editor (both engine and script ones). Added scripts uint16 ProtoItem::RadioChannel, uint16 ProtoItem::RadioFlags, uint8 ProtoItem::RadioBroadcastSend, uint8 ProtoItem::RadioBroadcastRecv. For holodisc marking added flag ITEM_HOLODISK (in _defines.fos). Holodisc data is situated in general fields of several item types. That’s why it isn’t a good idea to use this flag with Doors, Keys, Cars, Weapons, Armors, Holodiscs. Added support of this flag in object editor. Added script uint ProtoItem::HolodiskNum. Added ability to use built-in cartridge indicator for other purposes. Added the next parameters: uint8 ProtoItem::IndicatorStart – initial value, - Item/ItemCl::Indicator; uint8 ProtoItem::IndicatorMax – maximum available value (for correct calculation of the strip position); uint8 Item/ItemCl::Indicator – current value. Mechanism is considered activated if maximum value in the prototype isn’t equal to zero. Added support of editing of initial and maximum values in the object editor. Method Item::GetMapPosition for the items which are in the global map returns their coordinates. Fixed bug with system hanging while looking online statistics. Added storing up to 20 ip addresses for one account (fonline.h). Item prototype’s fields, which are equal to zero, now cannot be saved. All prototypes are resaved. Continued working on multithreading in game logics. Added ignoring of non-initialized maps or locations while loading save (NPC’s would be moved to global map, items - deleted). Fixed bug in the dialogue on BiX location. Updated abilities of GUI scripting. In script _defines.fos notes “Used in engine” are replaced by “Hardcoded”; point is the same - to show that this data is used by engine also. Corrected some specifications in template.fos of reserved functions. Rev.56 http://www2.xp-dev.com/sc/change/94227/56 Changes in craft: some new recipe's (new weapon, etc.), added workbenches in some town/military bases. Rev.55 http://www2.xp-dev.com/sc/change/94227/55 - Updated Redding maps; - Deleted unused graphics; - Added second entrance to NCR; - Some changes in NPC's inventories on encounters. Rev.54 http://www2.xp-dev.com/sc/change/94227/54 - Slight fixes in Hartman's and Shrim's dialogues (Vault City); - Fixed problem with immediate sending off caravans/patrols Ahe9mPDq; - Changed content of the quest variable for the quest "Third trial. Drill." - Restored functions for triggers t_DialogNpc and scenery s_TransitToMap. Rev.53 http://www2.xp-dev.com/sc/change/94227/53 Fixes of KotW location. Quest for oil can can be done by everybody in Arroyo now. Rev.52 http://www2.xp-dev.com/sc/change/94227/52 Fixes of Brok and Xander Church location (by VaultTec) Rev.51 http://www2.xp-dev.com/sc/change/94227/51 Fixed names loading (*Names.lst) with the dialogue editor. Changed extention of its config file. Rev.50 http://www2.xp-dev.com/sc/change/94227/50 Fixed bug with duplicating of time events. Rev.49 http://www2.xp-dev.com/sc/change/94227/49 Slight optimization of multi-threading. Rev.48 http://www2.xp-dev.com/sc/change/94227/48 Fixed error in loading of games variables values. Fixed loading of saves games in single player mode. Rev.47 http://www2.xp-dev.com/sc/change/94227/47 Time events changes. - function specification void EraseTimeEvent(uint num) changed to bool EraseTimeEvent(uint num) Return value shows whether deleting is done or the event isn't found. - Deleted the next functions: uint CreateTimeEvent(uint beginSecond, string& funcName, Critter& cr, bool save) uint CreateTimeEvent(uint beginSecond, string& funcName, Item& item, bool save) uint CreateTimeEvent(uint beginSecond, string& funcName, Critter@[]+ critters, Item[]@+ items, bool save) For migration just put the identificator to the critter or item. Added the next functions for operating with event's values: bool GetTimeEvent(uint num, uint& duration, uint[]@+ values) bool GetTimeEvent(uint num, uint& duration, int[]@+ values) bool SetTimeEvent(uint num, uint duration, uint[]@+ values) bool SetTimeEvent(uint num, uint duration, int[]@+ values) Parametr "duration" - time till the event is done in seconds. Return value means that operation is completed, error means that event wasn't found. These functions are thread-safe, 2 thread can't operate with the events simultaneously. Function GetTimeEvent blocks using (changing) of the event until the script is finished or until SetTimeEvent is called, which unblocks the event. GetTimeEvent writes value to the end of the array, SetTimeEvent rewrites it completely. When null is transmitted to values SetTimeEvent values are not changed. - Event function specification can be of two types now: uint e_FuncName(uint[]@ values) uint e_FuncName(int[]@ values) Fixed bug with crashing while loading 3ds file without texture coordinates. Rev.46 http://www2.xp-dev.com/sc/change/94227/46 Added next fuctional for operating with files (class "file"): - for data reading uint8 file::readUint8() uint16 file::readUint16() uint32 file::readUint32() uint64 file::readUint64() In the case of error or the end of file it returns 0. uint file::readData(uint count, uint8[]& data) If data == 0 then program read all data till the end of the file beginning from the current position. Read data is added to the end of the array. The return value shows the real amount of read bytes. - For data recording bool file::writeUint8(uint8 data) bool file::writeUint16(uint16 data) bool file::writeUint32(uint32 data) bool file::writeUint64(uint64 data) bool file::writeData(uint8[]& data, uint count) If count == 0 it records all data from an array. In the case of error it returns false. Fixed bug with incorrect output of zoom value on minimap. Rev.45 http://www2.xp-dev.com/sc/change/94227/45 Extended range of game variables: - local variable of location (LLVAR_); - local variable of map (LMVAR_); - local variable of item (LIVAR_). When using them in dialogue values are taken from: for location - current critter's location; for map - current critter's map; for item - current item in the main slot. For operating with scripts use function GetLocalVar with transmitting of needed operator. Server will delete unused variables of all types automatically. Deleted server function uint DeleteVars(uint id). Dialog editor was adapted to the last updates of game variables. Added ability to define named value (DefineNames.lst) as a value for conditions and results. Added missed translations. Translations of commit history you can find here: http://www.xp-dev.com/forum/topic/3220 Rev.44 http://www2.xp-dev.com/sc/change/94227/44 Updated format of time output in dialogue with repairer-npc; Added script for realization of npc-travellers on global map.(traveller.fos and Davine's script in sf_common.fos); Added npc-traveller explosives-seller Davine. Can be hired in GECK town; Added trade mode "cash only" MODE_BARTER_ONLY_CASH; Fixed bugs in maps structure on maps with holodiscs. Rev.43 http://www2.xp-dev.com/sc/change/94227/43 Added setting in config which defines whether to bind logic threads to the core or let OS do it. In default it is enabled (1) 1. If zero then operating system automatically manage threads between cores, else affinity thread per core LogicThreadSetAffinity=1 Continued work on multi-threading of game logics. Rev.42 http://www2.xp-dev.com/sc/change/94227/42 Fixed crashing under certain conditions; Fixed cycle counting per second. Rev.41 http://www2.xp-dev.com/sc/change/94227/41 Fixed bug connected with the last update. Rev.40 http://www2.xp-dev.com/sc/change/94227/40 Multi-threading of game logics is now supported. You can read about this in details on the forum; Fixed path of recording/reading ban files; Added seconds on the globalmap clock; Decreased permissible length of text listener of channels and maps from 5 to 2 symbols; Deleted global server function void DeleteNpcForce(Critter& npc); Changed specification of method from uint Location::GetMaps(Map@[]& maps) const to uint Location::GetMaps(Map@[]@+ maps) const Now you can know the amount of maps on the location without recording them into array; Added basic server command ~log (~37). It is intended for text listening of server log. Minimum access: administrator. For adding to text listening you should transmit arguement "+", for disconnecting "-"; Fixed basic creating locations command ~addloc (~16); Upgraded basic command of looking player's id using his name ~id (~4); Changed specifications of global functions void critter_attack(Critter& cr, Critter& target, ProtoItem& weapon, ProtoItem@ ammo, uint8 aim) -> void critter_attack(Critter& cr, Critter& target, ProtoItem& weapon, uint8 weaponMode, ProtoItem@ ammo) int to_hit(CritterCl& chosen, CritterCl& target, ProtoItem& weapon, int hitLocation) -> int to_hit(CritterCl& chosen, CritterCl& target, ProtoItem& weapon, uint8 weaponMode); Added variables for weapons which state their active mode const uint8 Item::Mode const uint8 ItemCl::Mode 4 high-order bits - sight (look Hit locations in _defines.fos), 4 low-order bits - mode (0 – primary, 1 – secondary, 2 – third); Added macroses for convenience _WeaponModeUse, _WeaponModeAim, _WeaponModeMake в _macros.fos; Added returnable value of the current mode in method GetSlotProto (urgent for weapons) ProtoItem@+ Critter/CritterCl::GetSlotProto(int slot, uint8& mode) const; Renamed parametr #define ST_RATE_ITEM (102) to #define ST_HANDS_ITEM_AND_MODE (102) value stored in it: XXXX00YY, where XXXX pid - unarmed blow, and YY - mode. Changed way of the dialogue redirecting. You should use returnable value of result function or say-mode instead of uint __ForceDialog; Added specifications of functions: uint r_FuncName(...), uint dlg_FuncName(...) which are detected by server automatically; Fixed bug with moving pushed players only in one direction; Object pointers (derivatives arrays or class members)Location, Map, Critter, Item, GameVar can't be saved in global varities now. For scripts migration save their identificators (Location::Id, Map::Id, Critter::Id, Item::Id), addresing to the objects with (GetLocation, GetMap, GetCritter, GetItem). Weapons prototypes don't save curret mode of fire (in connection with multi-threading). Changed specifications of class members ProtoItem const uint8 Weapon_Skill, const uint8 Weapon_DmgType, const uint8 Weapon_Anim2, const uint16 Weapon_DmgMin, const uint16 Weapon_DmgMax, const uint16 Weapon_MaxDist, const uint16 Weapon_Effect, const uint16 Weapon_Round, const uint8 Weapon_ApCost, const uint8 Weapon_SoundId, const bool Weapon_Remove, const bool Weapon_Aim, const uint8 Weapon_CurrentUse, void Weapon_SetUse(uint8 use) const to const uint16 Weapon_Skill_F, const uint16 Weapon_Skill_S, const uint16 Weapon_Skill_T, const uint16 Weapon_DmgType_F, const uint16 Weapon_DmgType_S, const uint16 Weapon_DmgType_T, const uint16 Weapon_Anim2_F, const uint16 Weapon_Anim2_S, const uint16 Weapon_Anim2_T, const uint16 Weapon_DmgMin_F, const uint16 Weapon_DmgMin_S, const uint16 Weapon_DmgMin_T, const uint16 Weapon_DmgMax_F, const uint16 Weapon_DmgMax_S, const uint16 Weapon_DmgMax_T, const uint16 Weapon_MaxDist_F, const uint16 Weapon_MaxDist_S, const uint16 Weapon_MaxDist_T, const uint16 Weapon_Effect_F, const uint16 Weapon_Effect_S, const uint16 Weapon_Effect_T, const uint16 Weapon_Round_F, const uint16 Weapon_Round_S, const uint16 Weapon_Round_T, const uint16 Weapon_ApCost_F, const uint16 Weapon_ApCost_S, const uint16 Weapon_ApCost_T, const uint8 Weapon_SoundId_F, const uint8 Weapon_SoundId_S, const uint8 Weapon_SoundId_T, const bool Weapon_Remove_F, const bool Weapon_Remove_S, const bool Weapon_Remove_T, const bool Weapon_Aim_F, const bool Weapon_Aim_S, const bool Weapon_Aim_T Added special macros for convenience (Weapon in _macros.fos) _WeaponIsPrimaryAviable, _WeaponIsSecondaryAviable, _WeaponIsThirdAviable, _WeaponSkill, _WeaponDmgType, _WeaponAnim2, _WeaponDmgMin, _WeaponDmgMax, _WeaponMaxDist, _WeaponEffect, _WeaponRound, _WeaponApCost, _WeaponSoundId, _WeaponRemove, _WeaponAim, _WeaponModeUse, _WeaponModeAim, _WeaponModeMake Mapper updates: string@ MapperObject::PicMap/PicInv now return prototype's picturename if other isn't set up; Added const uint16 MapperMap::Width, const uint16 MapperMap::Height for storing current map sizes; Fixed function GetMapFileNames(...). Rev.39 http://www2.xp-dev.com/sc/change/94227/39 Slight fixes of quests in Den, Klamath Improved closed location in Redding Rev.38 http://www2.xp-dev.com/sc/change/94227/38 Slight fixes of quests from string "Guard"; Added services for guardsmen: doc. Troy can heal player; give stimpacks; Valery repairs items; Added universal repairing script for npc (repairer.fos). E.g. in the dialogue vc_valery.foldg 3 new special encounters with holodiscs; Several deleted functions from stdlib are returned. Rev.37 http://www2.xp-dev.com/sc/change/94227/37 Fix of calculating amount of dead NPC on location when necessity of attack is being determinated. Fix of amount loss allies counter when finishing the quest. Output of messages to log is disabled in quest “The drill”. Fix of limit of times amount quest “Dangerous hunt” can be done. Descriptions of deleted maps were returned, which made server restart impossible without saves clearing. Rev.36 http://www2.xp-dev.com/sc/change/94227/36 Fix of Hartman’s dialog. The wrong requirement was deleted. Rev.35 http://www2.xp-dev.com/sc/change/94227/35 New quests from string “Guard” in Vaultcity - Vaultcity guard. Third trial. Drill. - Easy walk. - Go there, don’t know where. - Dangerous hunt. - Diplomatic courier. Fix of caravan’s and patrol’s departure time. Relative departure time was substituted for absolute. Added ability of caravan’s instant departure from the dialog. Fix of items that were generated in encounters 0 in number. (It was impossible to throw out them) Fix of quest “Hub bibliography”. Player need 7 books to gain reputation instead of 6. Rev.34 http://www2.xp-dev.com/sc/change/94227/34 - Maps fixes - Fixed reaction of BG guards on explosives activation Rev.33 http://www2.xp-dev.com/sc/change/94227/33 - Graphics fixes - Non-used files were deleted - Original map of BG was returned Rev.32 http://www2.xp-dev.com/sc/change/94227/32 Private car parking in geck town is disabled till the problem with car boot is solved. Rev.31 http://www2.xp-dev.com/sc/change/94227/31 Added first quests of string “Guardsman”, VaultCity. (Clearing of server saves is needed) Added template for making quests-combats with npc. (fighter_quest.fos, e.g. “Guard. First trial.”) Added ability to take quest “Hub bibliography” again if player failed to finish it at previous time. Fixed incorrect condition in Dappo’s dialogue in quest “Lot of defective rifles”. Added verification of addressee in “Postman” quest, now player can’t bring letter to any npc of type stated in the letter. Rev.30 http://www2.xp-dev.com/sc/change/94227/30 Deleted not used MSG files - FOSCRIPT.MSG. Rev.29 http://www2.xp-dev.com/sc/change/94227/29 Updates of way of making records into log. Added ability to look the name of the thread which made a record. Option in config – LoggingThread. You can also turn on output in the server application using “Logging with thread”. Changed format of time output. Now it is not “time in ms”, but “hours:minutes:seconds:milliseconds”. Rev.28 http://www2.xp-dev.com/sc/change/94227/28 Fix and formatting. Rev.27 http://www2.xp-dev.com/sc/change/94227/27 Fixed mistakes in calculating karma in quest "Returning of the fugitive". Rev.26 http://www2.xp-dev.com/sc/change/94227/26 Changes on Church of Brok and Xander location: - fixed Preacher, Scientist, repairer Alechandro, Cook, Mickey dialogs; - quests work correctly now; - repairer Alechandro identifies items correctly; - ability to record the information about Church was added (after completing Preacher's quest). Rev.25 http://www2.xp-dev.com/sc/change/94227/25 Activating time of dynamite was fixed. Rev.24 http://www2.xp-dev.com/sc/change/94227/24 New algorithm of generating of pseudorandom variables was added (Mersenne twister). Previously was standart C algorythm srand/rand. Rev.23 http://www2.xp-dev.com/sc/change/94227/23 Energy barrier on the entrance of GECK town was improved. Rev.22 http://www2.xp-dev.com/sc/change/94227/22 Fixed client crashing on start. For preventing this bug in future the control system of versions of cashed scripts in the client has been added. Rev.21 http://www2.xp-dev.com/sc/change/94227/21 Fixed problem when it was impossible to add players to GECK town after removing them with option "Clear list". Rev.20 http://www2.xp-dev.com/sc/change/94227/20 Fixed cooldown of the Postman quest. Rev.19 http://www2.xp-dev.com/sc/change/94227/19 Wrongly deleted dialogs are returned. Rev.18 http://www2.xp-dev.com/sc/change/94227/18 Fixes Deleted not used files. Fixed errors when player removes child killer karma additional times. Fixed error with incorrect name of script of map_v15_village map. Added output of message of increasing trade skill when finishing “Farm vermins” quest to the log. Weakened the giant wasp in the quest in Modoc. Rev.17 http://www2.xp-dev.com/sc/change/94227/17 AngelScript was updated to rev.684, v. 2.19.2 Added global variables to the client: bool __ShowTile, __ShowRoof, __ShowItem, __ShowScen, __ShowWall, __ShowCrit, __ShowFast, __ShowPlayerNames, __ShowNpcNames, __ShowCritId. Deleted limit of min. time of using Map::SetLoopTime (it was 1 second). Fixed registration of the global variables of string type (pragma globalvar). Fixed using reserved global variables string type. Added global variables to mapper: string __ClientPath, __ServerPath. Deleted constant modificators in client from string CritterlCl::Name, CritterlCl::Lexems. Added variable CritterlCl::NameOnHead, which if is not empty, outputted above critter’s head. Rev.16 http://www2.xp-dev.com/sc/change/94227/16 Fixed reclearing of child killer status. Rev.15 http://www2.xp-dev.com/sc/change/94227/15 Fixes: - Fixed names of Giant Wasps and bugs in kills statistic; - Reduced requirements of amount of killed mobs and intelligence in Broken Hills quests (bh_marcus.fodlg, bh_super.fodlg); - Reduced requirement of intelligence for “Fresh blood” quest (vc_doctor_troy.foldg); - Fixed possibility of gaining experience multiple times in “Cabbage” quest in Modoc (mod_farmer_q.fodlg); - Player receives reputation in NCR for quest “True cowboy” even if only one Brahmin is brought (ncr_felix.fodlg); - Michael’s miniquest in NCR can be done by every player only once (ncr_michael.fodlg); - Added requirement of 16 level for “buggy” quest (ncr_ratch.fodlg); - Fixed amount of gaining experience when player rejects gratuity in “Postman” quest (q_mail_reciever.fodlg); - Fixed cooldown of “Postman” quest; - Cave mobs – spawn point near the exit grid was removed in the smallest cave; - Fixes of several dialogues in Vault City; - New quest – “Fugitive returning” – when finished, status “Child killer” is removed. Hubbologist in Redding bank offers this quest; - New quest “Farm vermines”. It is offered by Joe in Modoc (mod_joe.fodlg); - Fixed energy barrier in GECK town; - Added computer for breaking of energy barrier inside the town; - Added car lots for GECK town citizens (not more than 2); - Added ability of clearing of citizens list by town leader using the terminal. Rev.14 http://www2.xp-dev.com/sc/change/94227/14 Update for Notepad++ (Syntax_highlighting, autocomplete, function parameters hints) Rev.13 http://www2.xp-dev.com/sc/change/94227/13 First stable version.h3. Your title here...

SidleJinks picture

Description: Rev.183 http://www2.xp-dev.com/sc/change/94227/183 Lo Pan’s mercenaries call leader’s name correctly now. Nancy and Sid’s quest location now is deleted after leaving it (previously it wasn’t deleted and hanged in the memory). SF docs were excluded from NoPvP locations. Letters generation in Postman quest was fixed. Holodisk with combat robot’s video recordings can be given to Buster now. Shaneman’s documents now have description in “Diplomatic mission” quest. A dialogue between bar clients in outer Vault City was added (wipe is required). Mini quest “Seduce art” was added in Klamath (wipe is required). Rev.182 http://www2.xp-dev.com/sc/change/94227/182 NPC-travellers will no longer take dead characters to the global map. Atoll was removed from Eli’s destinations. Skill displaying when increasing it through the dialogue was fixed. The mistakes in the newcomer’s dialogues in “Anger” quest were fixed. The mistake in mercenaries script which caused the leaving the employer earlier was fixed. Rev.181 http://www2.xp-dev.com/sc/change/94227/181 Reading nicknames from ignor list file was fixed. Console command for adding a player to the ignor list was added ~ignore PlayerName. Rev.180 http://www2.xp-dev.com/sc/change/94227/180 Mechanism of reputation calculation was switched off due to its incorrect work. Now all the list will be visible, but will work correctly. Rev.179 http://www2.xp-dev.com/sc/change/94227/179 Network protocol bug which caused short hangs up was fixed. Client's script was fixed which could cause null parameter call. Rev.178 http://www2.xp-dev.com/sc/change/94227/178 Superfluous rifles on offer were fixed. Rev.177 http://www2.xp-dev.com/sc/change/94227/177 Game version increment. Rev.176 http://www2.xp-dev.com/sc/change/94227/176 Sequence of handlers calling was fixed MAP_EVENT_OUT_CRITTER, MAP_EVENT_IN_CRITTER now the first one is called initially, then the second On intro_init map static lighting was set. Group moving indication on the global map was fixed (previous update bug). Rev.175 http://www2.xp-dev.com/sc/change/94227/175 Console command ~globalmap was added. It moves player to global map. It works only on noPvP maps for players not in combat mode and with noPvP mode turned on. In caravans and travellers scripts functions of moving to final destination's map were updated. Rev.174 http://www2.xp-dev.com/sc/change/94227/174 Porting game to Linux was started. Also supporting of 64 bit platforms. Client’s native libraries are now transmitted automatically. They are stored in ‘Client/data/cache’. Folder with scripts ‘Client/data/scripts’ is not used anymore and was deleted. To the server’s folder library STLPort (http://www.stlport.org/) was added. Client’s libraries are now compiling with it’s help. It is connected with porting to other platforms. Additional methods of moving were added to critters in server scripts bool Critter::TransitToMap(uint mapId, uint16 hexX, uint16 hexY, uint8 dir, bool withGroup) bool Critter::TransitToMap(uint mapId, int entireNum, bool withGroup) bool withGroup – when moving from global map to local map, all the group will be moved. Regular TransitToMap (without bool withGroup) work as with withGroup == false. Previously they worked as как withGroup == true, what led to moving all the group when replicating, if dead critter was on the global map. 3d critters were switched off. For switching on see PLAYERS_3D in _defines.fos. Constants for operating with game constants were added(see 168 revision, http://www2.xp-dev.com/sc/change/94227/168). Specification for the reserved function Log in native scripts was changed. Now the first returned parameter is function’s name from which it was called. Rev.173 http://www2.xp-dev.com/sc/change/94227/173 Traders were added to Atoll and Redding. Barterground was moved to position 690:760 as it isn’t needed anymore in north-west region due to noPvP mode. Locations “BiX Church” and “Atom’s Church” were moved to special encounters class. Fixed rewards in some quests. Maps fixes. Biscuit on Modoc can be received only once now (as in Fallout 2). Rev.172 http://www2.xp-dev.com/sc/change/94227/172 noPvP mode was activated on some TLA maps. It will be used on the next TLA session. For switching it off on your server set global variable __NoPvpMaps=false; in script config.fos Ability of making a list of ignored players, it works similarly NameColorizing. It needs manual adding nickname of ignored player to IgnoreList.txt For refreshing the list of ignored players in game use console command ~ignorelist. Rev.171 http://www2.xp-dev.com/sc/change/94227/171 Derivative objects system for mapper was updated. When placing base object, all his derivatives are placed automatically. If one object from the group is being selected - all others are being selected too. If the prototype or position of the derivative object is changed, changes will be automatically applied by mapper or server when loading. For the example see cars, at the present time they have one derivative object – their trunk. Now when placing the car, it will be created automatically, also it will be moved with it and if base or derivative object is deleted, all the group will be deleted too. The system of moving selected objects in mapper was upgraded. Now in hexagonal system the selected objects will be moved without being tearing apart. Also the selected objects, when being moved, will stop at the map’s edge, so they won’t mix into a pile. The problem with detecting whether items in container belong to their inventory or container. Previously items were placing on the hex and if you place two containers on the same hex, all the items will stack in one container. Now it is fixed. Item::TrapValue initialization through mapper was fixed. If rewriting is performed on prototypes loading, alert is displayed. It was added for items and critters prototypes. In object’s structure in mapper was deleted field const bool Item_InContainer and added const uint UID, ContainerUID, ParentUID, ParentChildIndex Rev.170 http://www2.xp-dev.com/sc/change/94227/170 Now server doesn't block client's libraries while working. Previously you needed to stop the server to replace client's dll (Server/scripts/fonline_tla_client.dll). Rev.169 http://www2.xp-dev.com/sc/change/94227/169 Combined content of MASTER.DAT + CRITTER.DAT. Size - 201 MB! Rev.168 http://www2.xp-dev.com/sc/change/94227/168 Client and Mapper are no longer bounded with Fallout’s data files - MASTER.DAT and CRITTER.DAT. These files content is combined (excess data is deleted) and packed into fallout.dat (will be uploaded with the next update) and defined in DataFiles.cfg. Global variables string __MasterPath, __CritterPath were deleted. The configurator (FOConfig.exe) is updated accordingly fixes above. Critter’s lighting in the death moment and flat items lighting was fixed. To server/client/mapper scripts the next functions for operating with the constants (*Names.lst) were added: int GetConstantValue(int constCollection, string@+ name) – identifying constant’s value by the name; string@ GetConstantName(int constCollection, int value) - identifying constant’s name by the value; void AddConstant(int constCollection, string@+ name, int value) – adding separate constant to the collection; bool LoadConstants(int constCollection, string@+ fileName, int pathType) – loading/reloading the collection; int constCollection – collection’s number, see Constants collections in _defines.fos, also you can define your own collections; string@+ name – constant’s name; int value - constant’s value; string@+ fileName, int pathType – collection file’s name and folder path. Rev.167 http://www2.xp-dev.com/sc/change/94227/167 Bug with error of name/password in login menu if it exceeds 12 symbols was fixed. Screen centering on the player when loading map in right-angle geometry was fixed. Copying objects in Mapper from smaller map to the bigger one was fixed. Mapper hanging up when Sleep < 0 was fixed. Crashes when loading ART files were fixed. Principe of transparency defining with parameter ‘”t” was changed, now it isn’t equal to 255 – paletteIndex, but to max(R, G, B). Rev.166 http://www2.xp-dev.com/sc/change/94227/166 System of operating with items prototypes was updated (ProtoItem). Ability to add your own fields to proto class was added. New pragma ‘bindfield’ is used for this, e.g.: #pragma bindfield "const int ProtoItem::MyValue -> 400" it means creation of field MyValue of int type with offset 400 (considering thas int is 4 byte, it will occupy bytes 400, 401, 402, 403). Totally for user’s fields 500 bytes are available. Field is equal to zero as defaults, but it is possible to change the value by defining value (in the current case MyValue=111 or MyValue=SkillBigGuns) in proto file (.fopro), number (if it contains only numbers) or path to the file (it is identified by the presence of ‘/’ or ‘\’ symbols). For now fields which are not used by the engine are taken out to scripts, see _defines.fos Item prototypes fields. Changes in structure ProtoItem. All next methods are deleted uint8 GetType() const uint16 GetProtoId() const bool IsGrouped() const bool IsWeared() const bool Container_IsGroundLevel() const List of new fields which are registered in the engine (part of them is renamed, some were deleted) http://pastebin.com/8R4QkP3h The other fields are registered with #pragma bindfield in _defines.fos. Now all items can stack and wear out, for this Boolean fields are added to the prototypes bool ProtoItem::IsStackable bool ProtoItem::IsDeteriorable Item type ITEM_MISC_EX was deleted, it is combined with ITEM_MISC (miscex.fopro is deleted). Vehicles are taken out to separate type ITEM_CAR (car.fopro was added). Also now user can define any type numbers for the items. Former fields uint MiscEx_StartVal0..9 of the start values for Item::Val0..9 were moved to common area named StartValue0..9, and with these values Item::Val0..9 are initialized. Metod bool Item::IsCar() const was deleted, instead of it use GetType()==ITEM_CAR. The next methods are renamed bool Item::IsGrouped() const -> bool Item::IsStackable() const bool Item::IsWeared() const -> bool Item::IsDeteriorable() const The next fields are renamed uint16 Item/ItemCl::BrokenWear -> Item/ItemCl::Deterioration uint16 Item/ItemCl::CarDeteoration -> Item/ItemCl::CarDeterioration uint8 MapperObject::Item_DeteorationFlags -> uint8 MapperObject::Item_BrokenFlags uint8 MapperObject::Item_DeteorationCount -> uint8 MapperObject::Item_BrokenCount uint16 MapperObject::Item_DeteorationValue -> uint16 MapperObject::Item_Deterioration Mechanism of affiliated objects was moved for common use. Previously it was available only for vehicle’s trunk. One object can have up to five derivatives. Numbers of the derivative objects are defined in uint16 ProtoItem::ChildPid_0..4. By creation of base object, derivatives are created automatically. For now Mapper doesn’t create affiliated obkects automatically, but it will be fixed in further. For setting the place of situation, special field ChildLines_0..4 is used (former MiscEx.Car.Bag_0..1, see below by recording format). Also it is possible now to define automatic blocking for any objects, not only for vehicles – field BlockLines (former MiscEx.Car.Blockers). Recording format for Child/BlockLines – XYXYXY..., where X is direction number (0..5/7), Y is the amount of steps (1..9) in this direction (previously for vehicle’s trunk for another recording format - XXXX...). Maximum amount of steps for BlockLines – 50, for ChildLines – 6. For operating with derivative objects use methods Item@+ Item::GetChild(uint childIndex) const (бывшая Item@+ Item::CarGetBag(int numBag)) bool Map::CheckPlaceForItem(uint16 hexX, uint16 hexY, uint16 pid) const (bool Map::CheckPlaceForCar(uint16 hexX, uint16 hexY, uint16 pid) const) Fields renaming affected lots of scripts, be attentive. Old proto format is converted to the new one automatically, but Object Editor (ObjectEditor.exe) still operates only with old format. It will be fixed soon. To replication.fos and entires.fos scripts the influence of right-angled geometry was added. Script main_planes.fos is formatted as a separate module. All pragmas were move to the end of _defines.fos. Drop of FPS when switching on view/attack borders was fixed. Rev.165 http://www2.xp-dev.com/sc/change/94227/165 Fix for the ASCompiler. Rev.164 http://www2.xp-dev.com/sc/change/94227/164 Changed ASCompiler output format to “filename(linenumber) : message”. Such output is recognized by a number of IDEs and allow jumping to the code by a double-click on the output line. Rev.163 http://www2.xp-dev.com/sc/change/94227/163 Tabs management system was added to Mapper. Now one tab can have numerous subtabs. Tabs names and its filling is defined in mappers scripts. But some tabs already have initial filling. Item – items prototypes by defaults (items.lst); Tile – tiles by default, search is performed in ‘art/tiles/’; Crit – critters prototypes by defaults (critters.lst); Fast – displays often used objects, initial state is defined in scripts (InitializeTabs in mapper_main.fos); Ign – Ignore, shows ignored objects which are not shown on the map; Inv, Msg, Map – special tabs which have nothing to do with the mechanism, but it is possible to change its name throug TabSetName (see below). The tab can have subtabs only of one type – tiles, critters or items (displayed in priority order). For items and critters the subtab’s name is chosen by user, for the tiles it is performed automatically. The lowest subtab “all” contains all prototypes (or tiles) on a list above. For activation the menu of tab choosing – perform a double click on it. If positions are numerous then use mouse wheel for navigation (scroll speed: normal – 4, with pressed shift – 8, with pressed ctrl – 20, with pressed alt – 50). For tabs management use scripts, functions Tab* uint TabGetTileDirs(int tab, string@[]+ dirNames, bool[]+ includeSubdirs) uint TabGetItemPids(int tab, string@+ subTab, uint16[]@+ itemPids) uint TabGetCritterPids(int tab, string@+ subTab, uint16[]@+ critterPids) void TabSetTileDirs(int tab, string@[]+ dirNames, bool[]+ includeSubdirs) void TabSetItemPids(int tab, string@+ subTab, uint16[]@+ itemPids) void TabSetCritterPids(int tab, string@+ subTab, uint16[]@+ critterPids) void TabDelete(int tab) void TabSelect(int tab, string@+ subTab) void TabSetName(int tab, string@+ tabName) int tab – tab’s number (see Tabs in _mapper_defines.fos); string@[]@+ dirNames – folder’s names for tiles searching; bool[]@+ includeSubdirs – turn on search in subfolders; string@+ subTab – subtab’s name; uint16[]@+ itemPids – item’s prototype numbers array; uint16[]@+ critterPids - critters’s prototype numbers array; string@+ subName – tab’s name. Global variable was added bool __SplitTilesCollection = true It defines whether tiles should be divided into groups in the folders. The group is defined as a string in the file’s name before the first number (e.g. abc12.png - group abc), if the number is absent, then group is defined as '<other>'. In connection with these changes, the global functions are deleted uint GetFastPrototypes(uint16[]@+ pids) void SetFastPrototypes(uint16[]@+ pids) Other updates. Fixed incorrect work of server/client which caused some bugs. Global variable int __GeometryType was added to _defines.fos for the indication of chosen geometry. See constants in _defines.fos Geometry. Depending on its value, tab with Tactics and Arcanum is added. Ability to work with file names which include spaces is added. When loading ART files, it is possible to flip them vertical or horizontal. Parameters in the file name - ‘v’/‘V’ and ‘h’/‘H’. When loading SPR file, if you define in changing color parameter – layer’s number -1, then the modificator will be applied to all four layers. Rev.162 http://www2.xp-dev.com/sc/change/94227/162 Quest perks “Midnight Child”, “Nosderatu Blood” were added (Modoc, “Night’s tender”). Now new home position is set for NPC-travelers (Devin, Eli) when they enter new location. Female characters now can finish quest of removing childkiller status. Allies HP and resistances were increased in “Dangerous hunt” quest. Also a simple dialogue is added to them. The forged letter is now removed from the inventory when finishing quest “Forgery”. Edvin in Klamath tells with a popup phrase when starting gathering items. A delay was added to the prisoner giving the cues in “Ernst Telman” quest. Ability of intimidating the NPC visitor if it’s a woman was deleted in quest “Wrath”. Barcus now reacts with popup phrases to the futher meetings with the player who have done quest “Amnesty for Joshua”. Upon the receiving lieutenant rank of Vaultcity’s Guard, player is awarded with a black combat armor. In “Diplomatic Courier” quest time (24 hours) which Sheiman takes for the thoughts now is calculated correctly. Upon finishing this quest, player receives +1 reputation in NCR. Sell price of the buggy which player receives upon finishing the quest in NCR was set to zero. Dialogue launch when player uses an antidote in quest “Poisoned Regulator” in Redding was fixed. Players who gained Vaultcity citizenship now can trade with Randal with no restrictions. Reputation calculation in quests “Real Cowboy”, “Hub Bibliography” in NCR was fixed. If player refuses the reward in “Hub Bibliography” quest, he gains +2 reputation (was +1) when he delivers 5 books. Increasing raider’s resistances and skills every new attack on NCR was switched off. Ability of crafting and buying chitin armor was added. Giant beetles drop chitin. Items with ITEM_GAG flag deletion upon player’s death was fixed. Rev.161 http://www2.xp-dev.com/sc/change/94227/161 Ability to customize game geometry was added, either the support of isometric projection with quadrangles was. For customization use global variables bool __MapHexagonal – isometry type: true - hexagonal, false - quadrangular; int __MapHexWidth – hex width; int __MapHexHeight – hex height; int __MapHexLineHeight – hex line height; int __MapTileOffsX/Y – ground tiles offset; int __MapRoofOffsX/Y – roof tiles offset; int __MapRoofSkipSize – amount of hex per one roof tile (necessary for its correct hiding); float __MapCameraAngle – 3d model rendering angle; bool __MapSmoothPath – path smoothing when moving; string __MapDataPrefix – path and prefix for the geometry files. Operational sprites for geometry are situated in art/geometry/. Quadrangular isometry use 8 directions, hexagonal – 6. In script config.fos in function InitializeGeometry(), necessary adjustments for 3 games (Fallout1/2, Fallout Tactics and Arcanum) are added. This function can be called in server, client and mapper scripts, as all three of them need geometry information. Global variables uint __LookDir4, uint __LookSneakDir4 were added for 8-directional geometry. Fixed Tactics SPR files loading. Mode MODE_NO_TALK was added. It affects ability to talk and appearance of the icon in the context menu. Double click on hex, affecting avatar’s moving, was fixed. Creation of descriptions for critters prototypes (FODLG.MSG) with high identifiers was fixed. Image of elephant gun was added in 3d. Rev.160 http://www2.xp-dev.com/sc/change/94227/160 Fixed a bug with server and client communication. Fixed a bug with wrong sprites display. Rev.159 http://www2.xp-dev.com/sc/change/94227/159 Documentation's update, mistakes fixes. Rev.158 http://www2.xp-dev.com/sc/change/94227/158 Script start_server_client.fos was renamed to config.fos and now it isn't simply pasted into function start(), but presented as a separate module with function InitializeGame(). Macros for operating with time were moved from _macros.fos to separate module _time.fos. Slight fix of drugs.fos. Rev.157 http://www2.xp-dev.com/sc/change/94227/157 Errors messages in server log when operating with functions GetPlayerName/GetPlayerId were removed. Also GetPlayerName returns null now, if the player wasn't found. Bugs of reputation calculation were fixed. Rev.156 http://www2.xp-dev.com/sc/change/94227/156 Ability to affect the colors when loading Tactics sprites was added. To make color shift, define necessary values in file name’s parameters (“$”). Format: fileName$[index,r,g,b]animName.spr (can be any amount of shifts […]) where index – body part’s number (0 - miscellaneous, 1 - skin, 2 -hair, 3 - armor); r,g,b – color shift for the each component, can be negative Example: someSprite$[2,50,-30,-20]anim1.spr – load sprite someSprite.spr, with animation anim1 and hair’s color shift in RGB (50,-30,-20). Additional flags for operating with color’s shift were added for Tactics critters (_animation.fos, animation.fos). Use macros ANIM1_COLOR_SKIN(index), ANIM1_COLOR_HAIR(index), ANIM1_COLOR_ARMOR(index) for values defining. Index can take on value from 0 to 15, appropriate to it values of color shift look in array colorOffsets of animation.fos script. For ability testing you can use text function void ColorOffset(Critter& cr, int skin, int hair, int armor) in test.fos. Rev.155 Some native structures were fixed. Rev.154 http://www2.xp-dev.com/sc/change/94227/154 AngleScript is updated to revision 822. Ability of sorting is added to scripts arrays Ascending sort void array::sortAsc() void array::sortAsc(uint index, uint count) Descending sort void array::sortDesc() void array::sortDesc(uint index, uint count) For user’s classes sorting realize opCmp method http://www.angelcode.com/angelscript/sdk/docs/manual/doc_script_class_ops.html Vehicle animations on the global map and item’s animations in Mapper are fixed. Some points in operating with critter’s animations are fixed (animation.fos). Global variable __GmapActive is fixed. Global variable for setting min. offline time after that client will completely exit from the game was added. uint __MinimumOfflineTime = 180000; // 3 minutes Rev.153 http://www2.xp-dev.com/sc/change/94227/153 Additional constants for operating with Chosen's actions were updated (Get/SetChosenActions, for CHOSEN_USE_ITEM). Rev.152 http://www2.xp-dev.com/sc/change/94227/152 Additional constants for operating with Chosen's actions were added (Get/SetChosenActions). Rev.151 http://www2.xp-dev.com/sc/change/94227/151 Bugs with incorrect files's names path detecting were fixed. Rev.150 http://www2.xp-dev.com/sc/change/94227/150 3d models loading was fixed. 3d models rendering to sprites was fixed. Critters animations were fixed (death in 2d and 3d modes). Shift calculation for some models was fixed. SAY_DIALOG/SAY_APPEND mechanics was fixed. (by Atom) Server’s config loading in Mapper was fixed. (by Atom) File HashNames.lst was added to client. Names of files which contain parameters (‘$params’) should be entered in it. If you use such names in the prototypes, Mapper or scripts GetStrHash), then include this name to this list. Format of writing: [any number] [file’s name] [end of string] E.g. 0 art\scenery\BrazureFire$t.ART 0 art\scenery\BrazureFire$t3.ART In further it is possible to detect and transmit such names automatically, but for the present use this system. Roof disappearing if it is situated in odd hex in two axis. Rev.149 http://www2.xp-dev.com/sc/change/94227/149 Documentation was updated. Some fixes in Arroyo (Minoc’s quest about raiders). Usage mode was added for sledgehammer and supersledge (for resources mining). Guard lib was brought into common standard of scripts formatting. Rev.148 http://www2.xp-dev.com/sc/change/94227/148 Two reserved variables were added to HLSL effects float AnimPosProc – current animation’s per cent 0%..100%, [0,1); float AnimPosTime – current animation’s time in seconds. Client’s hanging under certain circumstances was fixed (e.g. receiving item’s data when player in process of moving between maps). Dump generation when closing server application without stopping was switched off. Generation of unnecessary messages to log in function animation_ animation.fos was fixed. Rev.147 http://www2.xp-dev.com/sc/change/94227/147 Parameters for critter’s movement controlling were added. Time for moving in milliseconds: #define ST_WALK_TIME (117) #define ST_RUN_TIME (118) Ability to move #define MODE_NO_WALK (539) #define MODE_NO_RUN (540) If these parameters are equal to zero, then data is taken from CritterTypes.cfg. Loading of some ART files was fixed (Arcanum). Ability of specifying special image processing was added. Palette elements will be transparent depending on its index in the palette (alpha = 255 – index). To chose this loading type - use symbol “t” (or “T”) in file name parameters. E.g. ‘filename$t.art’; also you can combine with palette, e.g. ‘filename$1t.art’. Ignoring of spec.symbol “/r” was additionally added for splitEx function. In functions void DrawSprite(... bool applyOffsets) if applyOffsets == true there were additionally added shifting of width/2 and height of the image. Unnecessary fo3d files were deleted. Palette influence for Arcanum critters was fixed. Rev.146 http://www2.xp-dev.com/sc/change/94227/146 One more fix of incorrect critter displaying. Rev.145 http://www2.xp-dev.com/sc/change/94227/145 Quest “Communicated” was added (Redding). Caravaneers phrases were fixed, now they tell correct departure dates. Quest “Honomer’s bodyguard” was added (San Francisco). Retina scanner in GECK town was fixed. Slight fixes of the hubbolog’s map in San Francisco. Special result function for skill rise calculation through a dialogue was added.(dialog@r_SkillUp) The script for quest locations creating was fixed (hostile_location_quest.fos), allies and enemies scripts now work correctly. Resetting of a quest variable when deleting the location was fixed. Script for realization a dialogue between several npc’s with popping up phrases was added. (npc_dialog.fos) Story line implementation was continued. Maps numeration in the location with mutants was fixed (quest string “Guardian”). Rev.144 http://www2.xp-dev.com/sc/change/94227/144 Critter’s hitpoints regeneration was moved to scripts, you can look realization in function critter_idle main.fos. Global function for critters sampling from the global map was added to server scripts. uint GetGlobalMapCritters(uint16 worldX, uint16 worldY, uint radius, int findType, Critter@[]@+ critters) Additionally to methods bool Map::GetNearEntireCoords(int& entire, uint16& hexX, uint16& hexY) const bool Map::GetEntireCoords(int entire, uint skip, uint16& hexX, uint16& hexY) const were added methods bool Map::GetNearEntireCoords(int& entire, uint16& hexX, uint16& hexY, uint8& dir) const bool Map::GetEntireCoords(int entire, uint skip, uint16& hexX, uint16& hexY, uint8& dir) const which return direction. Global variable which specifies if the password in the client’s login window should be hidden was added bool __HidePassword = true Incorrect critters creation in Mapper was fixed. Displaying of switching critter’s type 3d->2d on the client’s side was fixed. Rev.143 http://www2.xp-dev.com/sc/change/94227/143 Fixed critters loading in Mapper (141 revision's bug). Rev.142 http://www2.xp-dev.com/sc/change/94227/142 Fixed server loading (the previous revision bug). Rev.141 http://www2.xp-dev.com/sc/change/94227/141 Mechanism for identifying critter’s animation file name was added. Now you can operate with critter’s animations from Tactics and Arcanum without any conversions. All data files which you need for enabling one or another critters are cited in CritterTypes.cfg comments. The next critters were added to SDK: Humanoid, Behemoth, MTT, Pacification. They are repacked to the separate archive ftrobots.bos. But all available critters from Tactics and Arcanum are added to CritterTypes.cfg with correctly defined parameters for them (by Tabloid), so you can enable the needed data files and use the critters. All animations are transformed to the general appearance (ANIM2_2D*, ANIM2_3D* -> ANIM2*). The functional for operating with them is moved to scripts. In some places where these values are used, numeric literals are replaced by string constants, which description you can find in DefineNames.lst. Fixes were made in weapons prototypes (weapons.fopro) and fo3d templates for 3d critters from VanBuren (_VBHuman.fo3d, _VBMob.fo3d, _VBWeapon.fo3d). Now three sets of primary and secondary animations are used for critters, for three condition types – alive, knockout, dead const uint Critter/CritterCl::Anim1/2Life/Knockout/Dead (const uint Critter/CritterCl::Anim1/2 were deleted). These values are used for animations as default. Pay attention that Anim1 additionally is summed up with animation of the weapon in the active slot, bit-by-bit OR. It is necessary for assignation certain values on continuing basis (e.g. sitting, lying position). For changing these values the next method is used void Critter::SetAnims(int cond, uint anim1, uint anim2) int cond – defines the position to apply values to (COND_* in _defines.fos), if null it is applied to all three; uint anim1, anim2 – animation values. Deleted const uint8 Critter/CritterCl::CondExt Accordingly all COND_*_* for them are deleted. Now position is differentiated by the animations. In connection with it, the next methods specifications were changed void ToDead(uint anim2, Critter@+ killer) bool ToKnockout(uint anim2begin, uint anim2idle, uint anim2end, uint lostAp, uint16 knockHx, uint16 knockHy) void EventKnockout(uint anim2begin, uint anim2idle, uint anim2end, uint lostAp, uint knockDist) void EventSmthKnockout(Critter& fromCr, uint anim2begin, uint anim2idle, uint anim2end, uint lostAp, uint knockDist) uint anim2begin, anim2idle, anim2end – animations of the knockout begging, staying in it and coming to yourself. Standard macroses are defined for the transfer KNOCKOUT_ANIM2_DEFAULT, KNOCKOUT_ANIM2_STUNNED (in _animation.fos). Also Mapper operates now not with CondExt, but with Anim1/Anim2 for the current Cond. Global variables for client/mapper for defining combat mode animations were added uint __Anim2CombatBegin = ANIM2_BEGIN_COMBAT uint __Anim2CombatIdle = ANIM2_IDLE_COMBAT uint __Anim2CombatEnd = ANIM2_END_COMBAT The next reserved client/mapper functions were added (animation.fos): - string@ critter_animation(int animType, uint crType, uint anim1, uint anim2, uint& pass, uint& flags, int& ox, int& oy) Function which is called when loading necessary animation. Returned value - file’s path and name. int animType – critter’s animation type (new parameter which is set in CritterTypes.cfg); uint crType – critter’s type; uint anim1, anim2 – animation’s indexes; uint& pass – function call’s number, is changed by the user. If animation loading failed and this parameter was changed, then function will be recalled (in certain cases you should try to load different files for the one animation); uint& flags – flags, at the present moment two of them – to take the first or the last frame from the animation ( Anim loading flags in _animation.fos); int& ox, &oy – shifts for the animation, in pixels. - bool critter_animation_substitute(int animType, uint crTypeBase, uint anim1Base, uint anim2Base, uint& crType, uint& anim1, uint& anim2) If animation loading failed (and uint& pass wasn’t changed), then this function is called for animation substitute detection (e.g. left hook can be replaced by the right hook). true is returned if the substitute was found (engine also additionally checks if crType, anim1, anim2 were really changed), false – no substitute, animation won’t be loaded and played. int animType – see above; uint crTypeBase, anim1Base, anim2Base – base critter’s and animation’s type, which were at the start; uint& crType, &anim1, &anim2 - critter’s and the current animation’s type for the substitution - bool critter_animation_fallout(uint crType, uint& anim1, uint& anim2, uint& anim1ex, uint& anim2ex, uint& flags) As Fallout’s animations are still loaded by the engine (additional shifts calculation and animations pasting together is needed), for determining animations conformity this function is called, i.e. instead of critter_animation for fallout’s animations this function is called. true is returned if animation is presented, false – not. Method bool Critter::IsAnim3d() const is deleted, use instead of it the global function int GetCritterAnimType(uint crType) values look in Anim types _animation.fos. Critters actions sounds now are played in the scripts, in animation_2d/3d_process. New mechanism for sound file name identification was made, look PlayAnimSound in animation.fos. Critters prototypes were divided into fallout’s (fallout2.fopro) and TLA's (tla.fopro). Bug with roof’s non-transparency in Mapper was fixed. Name indication of chosen critter or tile prototype in mapper was added. Format fo3d now recognizes named constants DefineNames.fos, namely for modificators Mesh, Subset, Layer, Value, DisableLayer, DisableSubset, Texture, EffDef (для Dword), Anim, AnimSpeed, AnimEqual. Global server variable for determining call frequency was added GLOBAL_PROCESS_MOVE uint __EncounterTime = 5000 Global client variable for determining frequency of foolish trick animation call was added uint __CritterFidgetTime = 50000 is deleted using formula Random(__CritterFidgetTime, __CritterFidgetTime * 2) Item prototype’s parameter was deleted bool ProtoItem::Weapon_RequiresActivation now if animation doesn’t exist, it is just not played. Parameters uint16 MapperObject::Scenery_ToMapX/Y were deleted, in mapper also. Moving between locations is performed by entery points. In weapons prototypes types of action animations were substituted from numeric by string constants (accordance look in DefineNames.lst). Appropriate changes were performed in ObjectEditor. Client functions PlaySound andPlayMusic now return bool, signalizing if file was found or not. Global functions for server/client/mapper which return appropriate values from CritterTypes.fos were added uint GetCritterAlias(uint crType) string@ GetCritterTypeName(uint crType) string@ GetCritterSoundName(uint crType) Mapper’s scripts were moved to server’s scripts folder. Also the whole set of functions for operating with CritterTypes.fos was added to Mapper bool IsCritterCanWalk(uint crType) bool IsCritterCanRun(uint crType) bool IsCritterCanRotate(uint crType) bool IsCritterCanAim(uint crType) bool IsCritterAnim1(uint crType, uint anim1) int GetCritterAnimType(uint crType) uint GetCritterAlias(uint crType) string@ GetCritterTypeName(uint crType) string@ GetCritterSoundName(uint crType) Specifications of client’s reserved functions were changed animation2d_process, animation3d_process parameter bool animateStay was added to the beginning. It indicates if any action is performed now (false) or stand animation (true). Reaction for global map’s interface buttons pressing when the size of map’s area (GmapMap) covers the buttons area was fixed. Bug with incorrect loading/saving maps in which script’s or function’s name consists of spaces was fixed. Bug with potential server crashing when using AI_PLANE_MISC was fixed. Rev.140 http://www2.xp-dev.com/sc/change/94227/140 Some robots from Fallout Tactics (look the next revision). Rev.139 http://www2.xp-dev.com/sc/change/94227/139 The next quests were added in San Francisco: “Introduction into Hubbology”, “Hub’s justice”. Transport to Atoll is available for the players who are doing “Introduction into Hubbology” quest (npc is in the docs area of San Fracisco); Automatic transfer to the command center of GECK city citizens when entering the map was removed. Now citizens can choose spawn point. Quest location “Hubbologists laboratory” was added (author JunoReactor). Rev.138 http://www2.xp-dev.com/sc/change/94227/138 Arroyo: Quest “Evidence of Chosen’s death” was added (Todd Stewart); Two courier quests were added (Cassidy, Todd Stewart); Encounter fixes: Fixed bugs of the 120 revision; Fixed random encounters where normally aggressive npc’s didn’t attack after fighting with the other npc’s; Fixed bug with unlimited experience in Den; Fixed mistakes in NCR quests cooldowns; Slight dialogues fixes. Rev.137 http://www2.xp-dev.com/sc/change/94227/137 Ability to specify the layer of tiles/roof to organize correct query of displaying. Totally there can be 5 layers, from 0 to 4. You can switch between them with pressing shift and pressing appropriate key (from 0 to 4). Indication of the current layer is specified in the map’s supplemental information (in upper right corner). Specification of MapperMap AddTile/AddTileName methods was expanded, also layer parameter was added void AddTile(uint16 hexX, uint16 hexY, int offsX, int offsY, int layer, bool roof, uint picHash) void AddTileName(uint16 hexX, uint16 hexY, int offsX, int offsY, int layer, bool roof, string@+ picName) Functions for hash calculation by file’s name and inverse function were added to the native scripts const char* (*GetNameByHash)(uint hash); // Get name of file by hash uint (* GetHashByName)(const char* name); // Get hash of file name The functional for operating with the chosen’s actions was added to the client’s scripts. For taking or specifying the actions use functions uint GetChosenActions(uint[]@+ actions) void SetChosenActions(uint[]@+ actions) This array consists of blocks of seven variables, the first is the type, the other are the parameters. Values of types and parameters look in _client_defines.fos Chosen actions. Argument with the location was added to the reserved function for checking the entries into this location bool entrance_FuncName(Location& loc, Critter@[]& critters, uint8 entrance) The next events were added for critters CRITTER_EVENT_USE_ITEM_ON_ME bool EventUseItemOnMe(Critter& whoUse, Item& item) CRITTER_EVENT_USE_SKILL_ON_ME bool EventUseSkillOnMe(Critter& whoUse, int skill) In the calls stack it is situated between CRITTER_EVENT_USE_* and the global handler. That is CRITTER_EVENT_USE_ITEM for the player + CRITTER_EVENT_SMTH_USE_ITEM for those who can see the player. CRITTER_EVENT_USE_ITEM_ON_ME The global handler critter_use_item. and CRITTER_EVENT_USE_SKILL for the player + CRITTER_EVENT_SMTH_USE_SKILL for those who can see the player. CRITTER_EVENT_USE_SKILL_ON_ME The global handler critter_use_skill. The supplemental information (current hex, fps, etc.) in Mapper is presented in the upper right corner. Bug of 135 revision with transparent tiles when placing them was fixed. Data connected with unfinished mechanism of textured grid was deleted. Rev.136 http://www2.xp-dev.com/sc/change/94227/136 Maps converted to text format. Rev.135 http://www2.xp-dev.com/sc/change/94227/135 Now only text format is used for maps, it is binary only for loading. All maps are converted to the text format (they will be uploaded with the next revision). Extension of this format is “fomap”. To convert your own maps to the new format – execute in Mapper ““#ConvertMaps”, then you should manually or using Mapper set required values in Time, NoLogOut, ScriptModule, ScriptFunc fields, which values you can see in file Maps.cfg. File Maps.cfg is not used anymore, locations prototype numbers are defined opposite to their name in file Locations.cfg, as in the most cases the one map prototype is used for the one location. According to these changes, the next MapperMap methods are deleted: uint GetTile(uint16 tileX, uint16 tileY, bool roof) const void SetTile(uint16 tileX, uint16 tileY, bool roof, uint picHash) string@ GetTileName(uint16 tileX, uint16 tileY, bool roof) const void SetTileName(uint16 tileX, uint16 tileY, bool roof, string@+ picName) And the next are added: uint GetTilesCount(uint16 hexX, uint16 hexY, bool roof) const void DeleteTile(uint16 hexX, uint16 hexY, bool roof, uint index) uint GetTile(uint16 hexX, uint16 hexY, bool roof, uint index) const void AddTile(uint16 hexX, uint16 hexY, int offsX, int offsY, bool roof, uint picHash) string@ GetTileName(uint16 hexX, uint16 hexY, bool roof, uint index) const void AddTileName(uint16 hexX, uint16 hexY, int offsX, int offsY, bool roof, string@+ picName) Also the next fields are added: const int WorkHexX const int WorkHexY int Time bool NoLogOut string ScriptModule string ScriptFunc The next methods are deleted (as their technology is not good enough for now): string@ GetTerrainName(uint16 tileX, uint16 tileY) cons void SetTerrainName(uint16 tileX, uint16 tileY, string@+ terrainName). Function bool SaveMap(MapperMap@+ map, string& fileName, int pathType, bool text, bool pack) now looks as bool SaveMap(MapperMap@+ map, string& fileName, int pathType). The ability to transmit commands /text /pack when saving by the console is deleted respectively. Several functions for operating with map’s fields were added to mapper script (you can do this procedure simply editing necessary field in the map’s file with text editor): #MapTime value – map’s time in minutes; #MapNoLogOut value –possibility to log out on the map; #MapScriptModule moduleName – script, module’s name; #MapScriptFunc funcName – script, function’s name. Now it is possible to place lots of sprites on one hex. Be attentive, fallout’s tiles have the same size and if you place two tiles on the same hex, you won’t see it (only if you select it , it will be less transparent than the others). Take it into account when you place or copy-paste tiles. Function #ClearTiles can help you with this problem, it deletes superfluous tiles from the hex. So, if you operate with fallout’s tiles and you don’t need several tiles on the same hex, execute this script when you finish work. Also you can place tiles on every hex, not in two. Ability of shifting is added for tiles. To produce tile shift just make the same operations as switching between tiles, but additionally pressing shift. Also you can use the same shift procedure for items. To cancel shift, press Alt with Shift and move objects. Fixed 130 revision’s bugs. Fixed bug with absence of shifting in fofrm with one sprite. Fixed bug with error in loading sprites in scripts (LoadSprite), which caused several other bugs. Remained ini files were formatted. Rev.134 http://www2.xp-dev.com/sc/change/94227/134 Config was uploaded by mistake. Take into accont, don't use config file from 132 and 133 revisions, admin pass is "hh" there. Rev.133 http://www2.xp-dev.com/sc/change/94227/133 Redding maps fixed, quest NPC were added. Rev.132 http://www2.xp-dev.com/sc/change/94227/132 Fixed "Anger" quest, the missing dialogue was restored, now it can be finished. Added quest "Forgery". (VC, Linnet) Rev.131 http://www2.xp-dev.com/sc/change/94227/131 New quests "Anger", "Ernst Telman" were added. (VC, Linnet) Fixed bug in VC guard's AI scripts. Fixed mistakes in quest “Amnesty for Joshua” dialogues. Ability to cancel their service for mercs/companions was added if the owner exits from location to the global map. Rev.130 http://www2.xp-dev.com/sc/change/94227/130 Support of graphics files SPR, TIL, ZAR from Fallout Tactics was added. Support of data files BOS from Fallout Tactics was added (works as ZIP archieve). For loading certain animation from SPR files, state it in the name after “$” sign. E.g. loading CrouchAttackClubSwing animation from file Mutant.spr - “Mutant$CrouchAttackClubSwing.spr”. The first frame of first animation is taken without direction. Also, ability to set certain palette for ART files (graphics files from Arcanum) was added – state palette’s number (from 0 to 3) after “$” sign. E.g. to load dfmbnsba.art file with the second palette - “dfmbnsba$1.art”. First palette is taken without direction (that is 0). Operation with sprites was changed. Now all interface graphics (which is set in ini files) is represented not as one sprite, as continuously played animation. Functional for operation with currently drawn sprites on the map was added to the native client’s and mapper’s scripts. Structures: struct Sprite – displayed sprite; struct SpriteInfo – additional information about the sprite. Functions: Sprite* (*GetDrawingSprites)(uint& count); - currently drawn sprites, if no sprites (on the global, menu), then NULL is returned and count == 0; SpriteInfo* (*GetSpriteInfo)(uint sprId); - getting additional information about certain sprite; uint (*GetSpriteColor)(uint sprId, int x, int y, bool affectZoom); - getting pixel’s colour, with the ability of taking zoom into account; it isn’t available for 3d models yet; format - ARGB; bool (IsSpriteHit)(Sprite sprite, int x, int y, bool checkEgg); - test whether the point on the display matches with the current sprite with taking zoom, transparence and egg of transparence into account (optional). The reserved native global variable GameOpt was renamed to Game. Global variables int __MouseX, __MouseY for current mouse position indication were added. Function void GetMousePosition(int& x, int& y) was deleted. Indication of opened console bool __ConsoleActive was added to client’s scripts. Bug with memory leak when rendering 3d graphics to sprites was fixed. Rev.129 http://www2.xp-dev.com/sc/change/94227/129 Added ability to use robot-guards from Sierra as bodyguards (for those who had completed quest "No-sweat job" in Navarro) Added quest "Amnesty for Joshua" (VC, Amanda) Work of teleport on special encounter "Mad scientist's laboratory" was restored. Rev.128 http://www2.xp-dev.com/sc/change/94227/128 Second stable SDK assembly. For the purpose of decreasing repository's size, assemblies will be stored in another places. Links you can find in text files. Rev.127 http://www2.xp-dev.com/sc/change/94227/127 Quest "No-sweat job" in Navarro. Rev.126 http://www2.xp-dev.com/sc/change/94227/126 Mercenaries and companions mechanism (merc.fos) was updated. Now every companion has term of service. Companions don’t meddle in player’s showdowns with NPC’s. Fixed quest “Dip.Courier”. Now it can be finished. Fixed quest “Dock’s attack”. Now it can be finished after killing 5 giant insects. Added 3 new mercs for Lo Pan. Updates NPC-travellers mechanism (traveller.fos). The first NPC-traveller was added (eli.fos). Functions which cooldowns checkup for NPCs in dialogues were fixed. When character dies, all items with flag ITEM_GAG are deleted. Fixed cooldowns for quests “Hub bibliography”, “Sick Brahmin” and in the dialogue with dr.Klaus for stimpacks and first aid kits delivery. When NPC repairs an item, ammo is ejected. Script for NPC monologues realization was added. (monologue.fos) Rev.125 http://www2.xp-dev.com/sc/change/94227/125 Fixes of password encryption in the client's files. Rev.124 http://www2.xp-dev.com/sc/change/94227/124 Fixed bug with graphics loading in the previous update. Rev.123 http://www2.xp-dev.com/sc/change/94227/123 DAT2.1 (Arcanum) files support was added. ART (Arcanum) graphic format was added. Function for operating with strings splitEx was added. Principle is the same as in split, but empty elements are not included in the result array. Also spaces/tabs/string_hyphenation are deleted from the result elements. Examples: split(“A|B||D”, “|”) -> {“A”, “B”, "", “D”} splitEx(“A|B||D”, “|”) -> {“A”, “B”, “D”} split(“A| B\t\t||D| E|F ”, “|”) -> {“A”, “ B\t\t”, "", “D”, “ E”, “F ”} splitEx(“A| B\t\tC||D| E|F ”, “|”) -> {“A”, “B”, “D”, “E”, “F”} Additional DrawSprite functions for the client and mapper were added. You can transfer true with the last argument and as the result, the shift which is stored in the current file will be added to the sprite’s position. void DrawSprite(uint sprId, int sprIndex, int x, int y, uint color, bool applyOffsets) void DrawSprite(uint sprId, int sprIndex, int x, int y, int w, int h, bool scratch, bool center, uint color, bool applyOffsets) Fixed bugs with incorrect ini settings parsing in the scripts. Rev.122 http://www2.xp-dev.com/sc/change/94227/122 Client scripts updates: For the reserved function void render_iface(uint layer) was added calling with value layer 100 to give the ability of drawing on the global map. Also the next global variables were added for operating with the global map: bool __GmapActive – whether global map is active and all the variables below are correct; bool __GmapWait – whether waiting mode of encounter affirming is active; float __GmapZoom – current zoom, don’t forget it to take into account while drawing a map; int __GmapOffsetX, __GmapOffsetY – map shift from the zero-coordinate (up-left corner); int __GmapGroupX, __GmapGroupY – player’s group coordinates; int __GmapMoveX, __GmapMoveY – destination point’s coordinates; float __GmapSpeedX, __GmapSpeedY – movement speed every 50 ms, without taking relief into account For example, calculating the current pixel group’s position - (x = __GmapGroupX / __GmapZoom + __GmapOffsetX), (y = __GmapGroupY / __GmapZoom + __GmapOffsetY). Fixed bug with hanging when drawing 3d model, occurred in the last update. Fixed missing bracket in English texts. (by Kilgore) Rev.121 http://www2.xp-dev.com/sc/change/94227/121 Added more mouse sensitivity and now you can see mouse’s speed percent in the settings. Updated FOConfig.exe. Added AlwaysRun option. Possible values for option Mouse speed were corrected. Option Sleep now can be set to -1, that means switching it off (maximum performance). Added ability of redirecting keyboard’s symbol codes input. For this, use option KeyboardRemap (in FOnline.cfg). It is performed after space – X Y X Y …, where X is the code which is substituted by Y. Code numbers - http://fonline.pastebin.com/Qy3E0qwj Interface description in default.ini is formatted and commented. (by LoadRunner) Location prototypes updates: Option max_copy was deleted. Option max_players was added. It limits the amount of players who can be on the location simultaneously. Players, who can’t enter location because of exceeding the limit will see message 904 from FOGAME.MSG {904}{}{Location is overcrowded, try to enter later.} Password encryption in server *.client. files was added. Mouse shift when switching between movement modes was fixed. Also, for more accurate work, the hex mask was added – look \Client\data\art\misc\hex_mask.png. Only red colour is taken into account and when it takes on certain value, the shift to certain direction is performed (50 – 5, 100 – 0, 150 – 3, 200 – 2). The mask is optional, you can work without it. Fixed loading/saving tiles in the maps text format. Fixed global map shifting behind screen’s edge. Registration of useless clicks in mapper when switching between windows, now isn’t performed. Fixed the animation of 3d critter standing when situating them on the map. Also now 3d critters don’t play standing animation in the critter’s list. Fixed displaying of critters which have only one direction. Fixed command ~reloadscripts. Now when you mark items for deleting (DeleteItem/DeleteItems), their quantity is saved. So, in the moment when real deleting is performed, server will delete the requested number of items. Now knockout during turn-based fight leads to immediate loosing action points, not after finishing the turn. Also, frequent checks for the necessity of finishing the turn were added at the server - if critter’s dead, critter has negative AP, critter has no more AP. Scripts: Fixed critter’s flags (Critter extra flags, _defines.fos). Fixed special encounter scripts Guardian of Forever, Mad Brahmins. Script trader.fos was formatted. Reserved function was added to client scripts, which is called with attacks void hit_aim(uint8& aim) aim value can be redefined( Hit locations in _defines.fos). Function int Critter::GetScore(uint score) was added to server scripts. Specification Critter::AddScore(int score, int val) was changed to Critter::AddScore(uint score, int val). Function for calculation the size of drawn text was added to client and mapper scripts void GetTextInfo(string& text, int w, int h, int font, int flags, int& tw, int& th, int& lines) string& text – text; int w, h, font, flags – height, width, print, flags; int& tw, int& th, int& lines – total width, height and amount of strings in the current text. Rev.120 http://www2.xp-dev.com/sc/change/94227/120 Unused encounter tables for Fallout 1 and commented original’s scripts were deleted from worldmap_init.fos; Random encounters of “beasts versus beasts” type were enabled, which were presented in the scripts, but were absent in the original. Added some new kinds of non-unique random encounters. Now, if player uses to kill NPC’s of certain group or organizations on random encounters, then they become aggressive. Vault City guard’s automatic search is deactivated. Now you need to activate the dialogue to pass through. Fixes in English dialogues versions. Maps fixes. Rev.119 http://www2.xp-dev.com/sc/change/94227/119 Fixed lots of little mistakes in dialogues; Fixed bugs in some Den and Klamath quests; Maps fixes; Duplicate dialogues with different names were deleted. Rev.118 http://www2.xp-dev.com/sc/change/94227/118 Fixed modificator's argument from Parent-0-7 to Parent0-7. Rev.117 http://www2.xp-dev.com/sc/change/94227/117 Added dialogues to Arroyo doctor and his team. Slight fixes (dialogues, maps). Rev.116 http://www2.xp-dev.com/sc/change/94227/116 Library for importing different 3d models was enabled – Assimp http://assimp.sourceforge.net/ Formats that are supported: http://assimp.sourceforge.net/main_features_formats.html Built-in one is still used for X format, for other ones – this library. If you don’t need the library, you can delete it (file Assimp32.dll), client and mapper are able to work without it. Updated mechanism of linking models and animations, now you can link any animation to any skeleton from any file. fo3d format changes: Modificator ModelAnimation was deleted. Modificators Anim, RenderFrame, RenderFrames were expanded – now file name which consists needed animation is placed before the animation’s name (if you state “ModelFile”, then search is performed in the file of loaded model)/ Specification of indicating parent texture (Texture X Parent) was expanded. Now you can additionally state the mesh number and its part, from which the texture is taken - Texture X ParentY-Z, where X is the texture’s number, Y is mesh number, Z is mesh part number; parameters Y-Z are optional, you may don’t use them at all or you may use them partly (Parent, Parent0, Parent-5). Fixed bug with incorrect script processing when operating with Critter::ShowScreen. Fixed bug with incorrect operating and crashing when using Log function with some special symbols. Added Combat Armor 3d model (by Gray). Rev.115 http://www2.xp-dev.com/sc/change/94227/115 Added special encounter "Warehouse of lost doughnuts" (author - Ponchik). Scripts for some original special encounters (author - Cracker). Remade some prototypes. Windows without glasses in Vault's walls can be shooted through now. Slight fixes. Rev.114 http://www2.xp-dev.com/sc/change/94227/114 Maps for quests from the 113 revision. Rev.113 http://www2.xp-dev.com/sc/change/94227/113 Klamath: quests - "Worker searching", "Husband's alert", "Brahmins vaccination" (author - Ponchik). Slight fixes. Rev.112 http://www2.xp-dev.com/sc/change/94227/112 Finished appearance of random encounter "Ocean Trader". Slight maps, dialogues and graphics fixes. Added buttons for BarterGround, GECK town, Warehouse and Hell for the global map (author - Ponchik). Slight fixes. Rev.111 http://www2.xp-dev.com/sc/change/94227/111 Added additional mechanism for data files loading (dat, zip). It is necessary for loading data files loading before scripts initializing and processing start() function as some date is needed to be used before this (effects, prints and some other resourses). For adding files to loading – create DataFiles.cfg file in which you should list all necessary file names. The program searches for the content from the last to the first data file. This mechanism uses server, client, mapper. If list isn’t found then no alerts will be displayed. If one of the files from the list can’t be found or load error appears, then alert will be shown. Option PatchDatPath was deleted, loading of this file is moved to DataFiles.cfg. Rev.110 http://www2.xp-dev.com/sc/change/94227/110 Fixed model's borders calculating which caused nick or text shift above critter's head. Rev.109 http://www2.xp-dev.com/sc/change/94227/109 Fixed skin setting-up when registration 3d character. Fixed order of loaded packs (dat, zip) scanning while searching and parsing ini files. Addition to 106 revision – for stating specific keys for certain resolutions now are used not separate files with different names, but marks in the main file. At the start of the string write “resolution”, than min. width and height for starting using these options. By default these values are equal to zero. For example: "resolution 1024 768 key = value..." It means, that “key = value ...(and so on till the next keyword ”resolution”)” will be included in the final ini. Found data will be inserted in the main file as screen width grows. Rev.108 http://www2.xp-dev.com/sc/change/94227/108 Actual cash files. Rev.107 http://www2.xp-dev.com/sc/change/94227/107 SDK is switched to 3d players mode. Normal version will be restored after finishing mechanism debugging process. For switching off 3d players models – comment the next strings in Server\scripts\_defines.fos #define PLAYERS_3D // Enable 3d players #define PLAYERS_3D_NO_HEAD // No head slot #define PLAYERS_3D_VAULT_SUITE // Vault suite by default, not naked 3d updates: Fixed and reduced the size of attributes and weapons. Added missing attributes of opened pipboy. In the left hand now is displayed the item, which player has in the second slot. Armor’s models are divided between the current armor items in the such way, that gamer could see the difference. For example combat armor consists of power armor and the helmet, robes are replaced by jail suit and etc. Fixed animation playing during creating the new character in single mode. Added skin change processing in start intro and after Kitty’s haircut. Added skeleton’s skins. Added sound for men and women. Fixed sound name for critters parameter’s loading (CritterTypes.cfg, SoundName). Now characters walk slowly with double click if alwaysrun option is turned on. Rev.106 http://www2.xp-dev.com/sc/change/94227/106 Added ability to make 3d characters available to play for. To enable it (it is disabled as default) - comment certain strings in _defines.fos // #define PLAYERS_3D // Enable 3d players // #define PLAYERS_3D_NO_HEAD // No head slot // #define PLAYERS_3D_VAULT_SUITE // Vault suite by default, not naked Updated mechanism of working with ini files. Now, when searching for the keys, excess spaces and tabulations are skipped (now you can type “ key = value ”, previously was correct only variant “key=value”) Added function bool AppendIfaceIni(string& iniName), which enables additional ini files. If the name includes slashes, than the search is being performed from data root, if not - than from folder data/art/interface/. default.ini is added automatically by the engine, others you can enable in start() client function. Loading is performed sequentially from default.ini to ones enabled by user by turn. Every packed file is checked by the turn of loading, then in the folder. Global variable string __UserInterface was deleted. Fixed bug with incorrect parsing of animation indexes in fo3d file. Fixed bug with incorrect position of the egg of transparence in zoom mode. For better readability the next scripts were formatted: start_server_client.fos client_main.fos In the future this practice will be continued. Rev.105 http://www2.xp-dev.com/sc/change/94227/105 Documentation update - slight fixes. Rev.104 http://www2.xp-dev.com/sc/change/94227/104 Added structure of script array (ScriptArray) to native scripts. Added ability to client's native scripts of calling hex data - Field. Data is stored in Field* GameOptions::ClientMap, uint GameOptions::ClientMapWidth/ClientMapHeight. If map is loaded, than ClientMap != NULL, hex calling - ClientMap[hexY * ClientMapWidth + hexX]. Rev.103 http://www2.xp-dev.com/sc/change/94227/103 Added always run option - can be enabled in client's config file “AlwaysRun”. Disabled as default. Added global variables for AlwaysRun regulating: bool __AlwaysRun (as default - false) - enabling AlwaysRun ability; uint __AlwaysRunMoveDist (as default = 1) - run with click, if distance is equal or more than the value; uint __AlwaysRunUseDist (as default = 5) - run with using smth/dialogue/etc, if distance is equal or more than the value. TLA's mechanics is equal to original - always run with click, always run with using if distance is more than 4 hexes. Added parameter uint Critter::ItemTransferCount to native scripts. It stores the value of transferred items during the last transaction. Rev.102 http://www2.xp-dev.com/sc/change/94227/102 Optimized server operation (script calling) in one tread operation mode, performance increased up to 400%. Fixed bug with crash when calling Critter::Say* methods with parametr SAY_SAY_TITLE. Rev.101 http://www2.xp-dev.com/sc/change/94227/101 Changes in fo3d format, new specification was created - look this theme: http://www.fonline.ru/forum/showthread.php?t=19689 New format added new abilities of working with 3d objects - trasmission of texures, other paremeters, etc. Also added ability to render certain animation to sprites as for one frame, either for the whole animation. But the bug with cutting off the shade situated below the lowest edge of model still presents. Updated old fo3d files, also VanBuren's critters and weapon models were added. Changed effects structure, added effect for normal mapping (3D_NormalMapping.fx). Added transfer of real numbers through scripts, float __EffectValue0..9. Fixed bugs with loading 3ds files - miss of meshes except the first; crash if texture coordinates are not presented. Fixed bug in Mapper with data copying when copy-pasting a large number of objects. Fixed text centering of hexes amount in zoom mode. Rev.100 http://www2.xp-dev.com/sc/change/94227/100 Documentation update. Rev.99 http://www2.xp-dev.com/sc/change/94227/99 Updated documentation file, which was missed in the previous revision. Rev.98 http://www2.xp-dev.com/sc/change/94227/98 Added resourse gathering system; Documentation updating. Rev.97 http://www2.xp-dev.com/sc/change/94227/97 Fixes of "Night is tender" quest, now healing must work properly. Added preview from global map for GECK location. Rev.96 http://www2.xp-dev.com/sc/change/94227/96 Gecks counting on the location now affects its auto moving away and visibility separately; Parameter geck_enabled (Map::GeckEnabled) renamed to geck_visible (Map::GeckVisible). Rev.95 http://www2.xp-dev.com/sc/change/94227/95 Added global server function void SetChosenSendParameter(int index, bool enabled) which can denie transmitting parameters to client. Transmitting of all parameters is enabled by default. Rev.94 http://www2.xp-dev.com/sc/change/94227/94 Fixes of sea encounter maps. Rev.93 http://www2.xp-dev.com/sc/change/94227/93 Added sea encounters; Added posibility of an encounter while travelling on air/water transport; Player always have possibility of cancellation water/air encounter and never gains experience for that; Bug fix in mapper with incorrect editing critter's parameters. Rev.92 http://www2.xp-dev.com/sc/change/94227/92 Fixed displaying rating in pipboy. In mapper additional indication of cut sprites was added to make lines, which are needed for correct interaction, visible. Rev.91 http://www2.xp-dev.com/sc/change/94227/91 Added traffic encryption between server and client. Rev.90 http://www2.xp-dev.com/sc/change/94227/90 Fixed choosing automatically cut sprites in zoom mode. Rev.89 http://www2.xp-dev.com/sc/change/94227/89 Added parametr DrawOrderOffsetHexY for shifting order of drawing lower (Y axis). This is an analogue for recently deleted DrawPosOffsX. Fixed using car trunk. Different slight fixes. Rev.88 http://www2.xp-dev.com/sc/change/94227/88 Fixed exit from Redding; slight fixes. Rev.87 http://www2.xp-dev.com/sc/change/94227/87 Fix for weapon AP cost. Rev.86 http://www2.xp-dev.com/sc/change/94227/86 May be fixed bug with incorrect displaying of some tiles. Fixed bug with unworking elevators. Added restoration of effects when loosing a device (cause crashed e.g. with alt+tab) Rev.85 http://www2.xp-dev.com/sc/change/94227/85 Fixed bug with chat disappearing. Fixed AI bug when combat plans always finished with REASON_CANT_WALK. Rev.84 http://www2.xp-dev.com/sc/change/94227/84 Fix for DT params reading. Rev.83 http://www2.xp-dev.com/sc/change/94227/83 Safety checks for radio commands. Rev.82 http://www2.xp-dev.com/sc/change/94227/82 Fixes of some dialogues; translations of dialogues on Barterground; map fixes; fixes of encounter table; slight fixes. Rev.81 http://www2.xp-dev.com/sc/change/94227/81 Fixed another bug during moving on the global map. Fixed unplanned activating of b/w effect. Rev.80 http://www2.xp-dev.com/sc/change/94227/80 Fixed teleportation bug during moving on the global map. Rev.79 http://www2.xp-dev.com/sc/change/94227/79 Fixed bug with incorrect tear and wear and fuel consumption calculation during moving on the global map by car. Rev.78 http://www2.xp-dev.com/sc/change/94227/78 Fixed brightness output. Fixed outlining activation. Rev.77 http://www2.xp-dev.com/sc/change/94227/77 Added automatic sprite cutting. Main purpose – correct displaying of long walls. Parameter SpriteCut was added to prototypes and mapper (only for scenery) for modification. Cutting values: 0 – switched off, 1 – horizontal (X axis), 2 – vertical (Y axis). Wall blocks should be set manually , for that purpose six blocks with different corner types with visual indication were added. It is necessary for correct calculation of brightness and egg of transparence reaction. Numbers 6800..6805 at the end of Wall and Fast list. Fixed client instability after recent update. Primary indexes array for animations was expanded to the range ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789. For value changing use native means (structure CritterType in fonline.h). Support of effects (HLSL) loading with earlier version of compiler. Automatic attempt of compilation is performed after failure in compilation with the current library. Added data updating for client function GetIniStr in the start function (start) after each call of LoadDataFile. Mapper update: Fixed bug with error in loading tiles with extension not in lower case. Fixed algorithm of sprite displaying calculation (when big sprites were disappearing near the screen edge). Additional visual means for debugging: - Ctrl + Q: Corners type viewing; - Ctrl + W: Viewing the result of sprite cutting, linking them to hexes; - Ctrl + E: Viewing the sequence of sprites drawing. At the time of renewing NPC’s bag, only items which are not in inventory are repaired and reloaded. Added ability to set sprite shift in screen coordinates to prototypes. Fixed bug with double notification of quest state change. Rev.76 http://www2.xp-dev.com/sc/change/94227/76 Added quest “Night is tender” Rev.75 http://www2.xp-dev.com/sc/change/94227/75 Tables for sea encounters, slight fixes. Rev.74 http://www2.xp-dev.com/sc/change/94227/74 Source documentation. Rev.73 http://www2.xp-dev.com/sc/change/94227/73 SPECIAL calculating is moved to native scripts - fonline_tla.dll for server and fonline_tla_client.dll for client (must be situated in data\scripts). The other parameters which are used in the engine are needed generally for drawing GUI, but soon they’ll be moved to scripts too. Native scripts files are moved from data folder to scripts. Added bat-file make_tla.bat for their compilation (installation of MSVS8 is necessary). For example of use new methods for critter classes are added (IsInjured, IsDmgArm...), items (IsHtHAttack, IsGunAttack...) with pragma bindfunc. Example of linking global varieties of standard and native scripts is added (__HitAimEyes, __HitAimHead..., these global varieties are moved to scripts). Callback functions are added (to GameOptions) for item usage cost determination - GetUseApCost. For attack max range determination - - GetAttackDistantion. It further such functions will force out usage of critter parameters in the engine. These functions are binded at the stage of connecting of library to the engine (DllMainEx). For operating with the engine added the next functions (to GameOptions): CritterChangeParameter – for correct change of critter parameter, this function should be called firstly, then you can change the value. CritterTypes – index of CritterType structures where data from CritterTypes.cfg is stored. Added method to client’s critters for detection whether now is time of its move in the turn-based mode bool CritterCl::IsTurnBasedTurn() const Some logics of operating with turn-based mode is moved to the scripts - turn_based_process main.fos. Some recommended specifications for the reserved functions are changed - templates.fos. Min. time of dialogue or barter with NPC now is regulated by the global varieties __DlgTalkMinTime (now default 100 seconds) и __DlgBarterMinTime (now default 50 seconds). Range for all prototypes (maps, locations, items) is expanded to 30000. Fixed bug with incorrect drawing of minimap in the pipboy. Fixed bug with incorrect calculating of healing rate while registration. Fixes of Zerg’s special encounter. Rev.72 http://www2.xp-dev.com/sc/change/94227/72 Data library for script compilation (updated on 27 October) Rev.71 http://www2.xp-dev.com/sc/change/94227/71 Added Zerg special encounter. Fixed bug with incorrect names in Fixboy. Added function LoadDataFile to server scripts, analogue of client/mapper. Fixed mistiming of player movement on global map. Deleted function Critter::SendQuestVar, now alert about changing of local variable is automatic. Changed function specification void ShowScreen(int screenType, uint param, string& funcName) to void ShowScreen(int screenType, uint param, string@+ funcName), now can transmit both empty string or null. Rev.70 http://www2.xp-dev.com/sc/change/94227/70 Documentation is updated. Deleted incorrect splash-picture. Added urgent files for scripts autoaddition in Notepad++. Rev.69 http://www2.xp-dev.com/sc/change/94227/69 Added ability to use your own shaders for game graphics drawing. High Level Shader Language is used for this. Effects folder is situated in data\effects. After the first compilation they are cashed in the folder data\cache (in futher other different data will be cashed there). You can read specifications on the game engine effects in data\effects\ReadMe.txt. Added ability to link any effect to sprite or model in .fofrm and .fo3d (“effect=effect_name.fx”). For default effect changing, function void SetEffect(int effectType, int effectSubtype, string@+ effectName) was implemented into the client scripts. int effectType, effectSubtype – effect types look in _client_defines.fos (Subtype for fonts used font type); string@+ effectName – the name of the effect file (with extension) is in the folder data\effects. Added changing of detailization of game objects for demonstration. For activation press Alt+W, for return press Alt+Q. Added client function for map redrawing void RefreshMap(bool onlyTiles, bool onlyRoof, bool onlyLight) if all three parameters are false, than everything will be redrawed. Also these three parameters are incompatible. Fixed bug in mapper with impossibility of viewing 3d critters in prototypes table. At present time they can’t be ranged. Added ability to play sounds/music from different folders. void RefreshMap(bool onlyTiles, bool onlyRoof, bool onlyLight) If there isn’t slashes (‘/’,‘\’) in path name than search is performed in the folder sfx/music. If there are slashes, than in the root (“data/mysounds/mysound.ogg”). Rev.68 http://www2.xp-dev.com/sc/change/94227/68 Fixed bug in the ObjectEditor when damage type is saved incorrectly. Rev.67 http://www2.xp-dev.com/sc/change/94227/67 Fixed crashing when calling CritterCl::[Param/Stat/Perk/etc]Base in client scripts; Fixed error with recording Anydata of zero length (by Atom). Rev.66 http://www2.xp-dev.com/sc/change/94227/66 Fixed incorrect weapon prototype; errors in checking for special encounters; added decraft of the sand sack to fixboy; other little fixes. Rev.65 http://www2.xp-dev.com/sc/change/94227/65 Redding: finished map according to the last concept; - Garbage was returned to static locations; - Ammo craft on benches (beta-version); - Destruction of the sack using skill repair now gives use empty sack. - Entering Den message was moved to texts from script. Rev.64 http://www2.xp-dev.com/sc/change/94227/64 AngelScript updated to 732 revision. Added new methods for arrays: void T[]::insertAt(uint, const T&) – element inserting in specified position in the array; void T[]::removeAt(uint) – deleting the element by index; void T[]::insertFirst(const T&) – element inserting to the beginning of the array; void T[]::removeFirst() – deleting the first element; void T[]::insertLast(const T&) – element inserting to the end of the array; void T[]::removeLast() – deleting the last element; void T[]::grow(uint) – add elements (the sames as a.resize(length()+X)); void T[]::reduce(uint) – delete elements (the same as a.resize(length()-X)); T& T[]::first() – call of the first element of the array (the same as a[0]); T& T[]::last() – call of the last element of the array (the same as a[a.length()-1]). Also deleted all functions ArrayPushBack as the built-in array functional was expanded. All the scripts were fixed accordingly. Rev.63 http://www2.xp-dev.com/sc/change/94227/63 Added ability to start the server as a service. For registration/start use key “-service” (shortcut FOServerService.exe.lnk). For deleting use keys “-service -delete” (shortcut FOServerServiceDelete.exe.lnk). Added ability to log using function OutputDebugString. The log can be caught (even remotely) using program DebugView http://technet.microsoft.com/en-us/sysinternals/bb896647.aspx For switching it on in server and client configs option LoggingDebugOutput is added. Server/client/mapper will work normally now with incorrect active folders. At start you set the current folder of executable. Fixed bug with absence of replacement “x” by “ч” in built-in punto switcher. Fixed crash in turn based mode and incorrect work of Map::GetCritter(uint critterId). Rev.62 http://www2.xp-dev.com/sc/change/94227/62 Fixed bug with updating vehicle data on the global map. Fixed bug with system hanging while looking items quantity in game info. Fixed bug with the incorrect login/disconnect. Fixed bug with incorrect creating non-stacking items on the map in the number of >1. Fixed bug with incorrect critters gathering when path tracing (by Atom). CRITTER_EVENT_TALK now performed before checking NPC for settings which could restrict speaking with it. Added new mechanism for script garbage gathering (by Atom). For config file simplification, the next options were removed: ASGarbageTime, VarsGarbageTime. Deleted transfer of a group of critters into global map processing global_process, CRITTER_EVENT_GLOBAL_PROCESS. Also instead of transferring a group into global map processing global_invite, CRITTER_EVENT_GLOBAL_INVITE, now only the leader is transferred. Instead of picking group use Critter@[]@ Critter::GetGlobalGroup(). Because of that, specification methods were changed: bool Critter::EventGlobalProcess(int type, Critter@[]& group, ...) bool Critter::EventGlobalInvite(Critter@[]& group, ...) for bool Critter::EventGlobalProcess(int type, Critter& cr, ...) bool Critter::EventGlobalInvite(Critter& leader, ...) Reserved functions of critter event CRITTER_EVENT_GLOBAL_PROCESS, CRITTER_EVENT_GLOBAL_INVITE bool _FuncName(Critter& cr, int type, Critter@[]& group, ...) bool _FuncName(Critter& leader, Critter@[]& group, ...) for bool _FuncName(Critter& cr, int type, ...) bool _FuncName(Critter& leader, ...) Fixed bug with incorrect cooldown for hijacking, now it is equal for a normal lock. Added checking for unopenable door to the lock break script. Rev.61 http://www2.xp-dev.com/sc/change/94227/61 Fixed bug with incorrect reappraisal of item flags in Mapper. Fixed bug when player isn't notified about moved item. Rev.60 http://www2.xp-dev.com/sc/change/94227/60 Fixed bug with incorrect displaying of the rain on roofs. Rev.59 http://www2.xp-dev.com/sc/change/94227/59 Mapper's fix for correct operating with new folder and print's names. Rev.58 http://www2.xp-dev.com/sc/change/94227/58 For editing use program Bitmap Font Generator v1.12. http://www.angelcode.com/products/bmfont/ Print should have the next attributes - OEM RUSSIAN, Padding 1 (in all directions), Binary, all symbols should be placed on the one texture. All prints are moved in the separate folder “Client\data\fonts\”. For the example print FONT_COURIER_NEW_SMALL is added. Look _client_defines.fos, client_main.fos, CourierNewSmall.bmfc, CourierNewSmall.fnt, CourierNewSmall_0.png. Added function in client’s scripts of activating the clock which shows you the time signal comes to server and returns (ping). You can use it for restriction of input while waiting for server’s answer. Fixed crushing when looking players statistics on server. Fixed crushing of Dialogue Editor (by Atom). Rev.57 http://www2.xp-dev.com/sc/change/94227/57 Expanded mechanism of operating with ingame radio. Added flag ITEM_RADIO for radio. (in _defines.fos). Radio messages are now also sent to radios which are on the ground . For their identification engine sends them with color 0xFFFFFFFE (in map_message in client_main.fos). Realization is in script radio.fos (interface, mechanics), call from main.fos. Interface data is taken from default.ini (Radio*). You can edit it with using item or using science skill on it. Radio data is situated in general fields of several item types. That’s why it isn’t a good idea to use this flag with Doors, Keys, Cars, Weapons, Armors, Holodiscs. Transmitting and receiving functions are separated. For managing the next flags and range types are used (_defines.fos): Restriction of transmitting/receiving is stored in Item/ItemCl::RadioFlags, used by the engine: RADIO_DISABLE_SEND, RADIO_DISABLE_RECV. Restriction of switching radio state in в Item/ItemCl::RadioFlags: RADIO_DISABLE_SHIFT_SEND, RADIO_DISABLE_SHIFT_RECV - restriction of switching transmit/receive; RADIO_DISABLE_SHIFT_BC_SEND, RADIO_DISABLE_SHIFT_BC_RECV - restriction of changing distance range; RADIO_DISABLE_SHIFT_CHANNEL – restriction of channel switching. Range types are stored in Item/ItemCl::RadioBroadcastSend/RadioBroadcastRecv, are used by the engine: RADIO_BROADCAST_WORLD – works all over the world; RADIO_BROADCAST_MAP – works within the limits of the current map; RADIO_BROADCAST_LOCATION - works within the limits of the current location; RADIO_BROADCAST_ZONE(x) - works within the limits of “x” zones on the global map; RADIO_BROADCAST_FORCE_ALL – works everywhere regardless of the adjustments of transmitting or receiving radio/ Added support of these flags to the object editor (both engine and script ones). Added scripts uint16 ProtoItem::RadioChannel, uint16 ProtoItem::RadioFlags, uint8 ProtoItem::RadioBroadcastSend, uint8 ProtoItem::RadioBroadcastRecv. For holodisc marking added flag ITEM_HOLODISK (in _defines.fos). Holodisc data is situated in general fields of several item types. That’s why it isn’t a good idea to use this flag with Doors, Keys, Cars, Weapons, Armors, Holodiscs. Added support of this flag in object editor. Added script uint ProtoItem::HolodiskNum. Added ability to use built-in cartridge indicator for other purposes. Added the next parameters: uint8 ProtoItem::IndicatorStart – initial value, - Item/ItemCl::Indicator; uint8 ProtoItem::IndicatorMax – maximum available value (for correct calculation of the strip position); uint8 Item/ItemCl::Indicator – current value. Mechanism is considered activated if maximum value in the prototype isn’t equal to zero. Added support of editing of initial and maximum values in the object editor. Method Item::GetMapPosition for the items which are in the global map returns their coordinates. Fixed bug with system hanging while looking online statistics. Added storing up to 20 ip addresses for one account (fonline.h). Item prototype’s fields, which are equal to zero, now cannot be saved. All prototypes are resaved. Continued working on multithreading in game logics. Added ignoring of non-initialized maps or locations while loading save (NPC’s would be moved to global map, items - deleted). Fixed bug in the dialogue on BiX location. Updated abilities of GUI scripting. In script _defines.fos notes “Used in engine” are replaced by “Hardcoded”; point is the same - to show that this data is used by engine also. Corrected some specifications in template.fos of reserved functions. Rev.56 http://www2.xp-dev.com/sc/change/94227/56 Changes in craft: some new recipe's (new weapon, etc.), added workbenches in some town/military bases. Rev.55 http://www2.xp-dev.com/sc/change/94227/55 - Updated Redding maps; - Deleted unused graphics; - Added second entrance to NCR; - Some changes in NPC's inventories on encounters. Rev.54 http://www2.xp-dev.com/sc/change/94227/54 - Slight fixes in Hartman's and Shrim's dialogues (Vault City); - Fixed problem with immediate sending off caravans/patrols Ahe9mPDq; - Changed content of the quest variable for the quest "Third trial. Drill." - Restored functions for triggers t_DialogNpc and scenery s_TransitToMap. Rev.53 http://www2.xp-dev.com/sc/change/94227/53 Fixes of KotW location. Quest for oil can can be done by everybody in Arroyo now. Rev.52 http://www2.xp-dev.com/sc/change/94227/52 Fixes of Brok and Xander Church location (by VaultTec) Rev.51 http://www2.xp-dev.com/sc/change/94227/51 Fixed names loading (*Names.lst) with the dialogue editor. Changed extention of its config file. Rev.50 http://www2.xp-dev.com/sc/change/94227/50 Fixed bug with duplicating of time events. Rev.49 http://www2.xp-dev.com/sc/change/94227/49 Slight optimization of multi-threading. Rev.48 http://www2.xp-dev.com/sc/change/94227/48 Fixed error in loading of games variables values. Fixed loading of saves games in single player mode. Rev.47 http://www2.xp-dev.com/sc/change/94227/47 Time events changes. - function specification void EraseTimeEvent(uint num) changed to bool EraseTimeEvent(uint num) Return value shows whether deleting is done or the event isn't found. - Deleted the next functions: uint CreateTimeEvent(uint beginSecond, string& funcName, Critter& cr, bool save) uint CreateTimeEvent(uint beginSecond, string& funcName, Item& item, bool save) uint CreateTimeEvent(uint beginSecond, string& funcName, Critter@[]+ critters, Item[]@+ items, bool save) For migration just put the identificator to the critter or item. Added the next functions for operating with event's values: bool GetTimeEvent(uint num, uint& duration, uint[]@+ values) bool GetTimeEvent(uint num, uint& duration, int[]@+ values) bool SetTimeEvent(uint num, uint duration, uint[]@+ values) bool SetTimeEvent(uint num, uint duration, int[]@+ values) Parametr "duration" - time till the event is done in seconds. Return value means that operation is completed, error means that event wasn't found. These functions are thread-safe, 2 thread can't operate with the events simultaneously. Function GetTimeEvent blocks using (changing) of the event until the script is finished or until SetTimeEvent is called, which unblocks the event. GetTimeEvent writes value to the end of the array, SetTimeEvent rewrites it completely. When null is transmitted to values SetTimeEvent values are not changed. - Event function specification can be of two types now: uint e_FuncName(uint[]@ values) uint e_FuncName(int[]@ values) Fixed bug with crashing while loading 3ds file without texture coordinates. Rev.46 http://www2.xp-dev.com/sc/change/94227/46 Added next fuctional for operating with files (class "file"): - for data reading uint8 file::readUint8() uint16 file::readUint16() uint32 file::readUint32() uint64 file::readUint64() In the case of error or the end of file it returns 0. uint file::readData(uint count, uint8[]& data) If data == 0 then program read all data till the end of the file beginning from the current position. Read data is added to the end of the array. The return value shows the real amount of read bytes. - For data recording bool file::writeUint8(uint8 data) bool file::writeUint16(uint16 data) bool file::writeUint32(uint32 data) bool file::writeUint64(uint64 data) bool file::writeData(uint8[]& data, uint count) If count == 0 it records all data from an array. In the case of error it returns false. Fixed bug with incorrect output of zoom value on minimap. Rev.45 http://www2.xp-dev.com/sc/change/94227/45 Extended range of game variables: - local variable of location (LLVAR_); - local variable of map (LMVAR_); - local variable of item (LIVAR_). When using them in dialogue values are taken from: for location - current critter's location; for map - current critter's map; for item - current item in the main slot. For operating with scripts use function GetLocalVar with transmitting of needed operator. Server will delete unused variables of all types automatically. Deleted server function uint DeleteVars(uint id). Dialog editor was adapted to the last updates of game variables. Added ability to define named value (DefineNames.lst) as a value for conditions and results. Added missed translations. Translations of commit history you can find here: http://www.xp-dev.com/forum/topic/3220 Rev.44 http://www2.xp-dev.com/sc/change/94227/44 Updated format of time output in dialogue with repairer-npc; Added script for realization of npc-travellers on global map.(traveller.fos and Davine's script in sf_common.fos); Added npc-traveller explosives-seller Davine. Can be hired in GECK town; Added trade mode "cash only" MODE_BARTER_ONLY_CASH; Fixed bugs in maps structure on maps with holodiscs. Rev.43 http://www2.xp-dev.com/sc/change/94227/43 Added setting in config which defines whether to bind logic threads to the core or let OS do it. In default it is enabled (1) 1. If zero then operating system automatically manage threads between cores, else affinity thread per core LogicThreadSetAffinity=1 Continued work on multi-threading of game logics. Rev.42 http://www2.xp-dev.com/sc/change/94227/42 Fixed crashing under certain conditions; Fixed cycle counting per second. Rev.41 http://www2.xp-dev.com/sc/change/94227/41 Fixed bug connected with the last update. Rev.40 http://www2.xp-dev.com/sc/change/94227/40 Multi-threading of game logics is now supported. You can read about this in details on the forum; Fixed path of recording/reading ban files; Added seconds on the globalmap clock; Decreased permissible length of text listener of channels and maps from 5 to 2 symbols; Deleted global server function void DeleteNpcForce(Critter& npc); Changed specification of method from uint Location::GetMaps(Map@[]& maps) const to uint Location::GetMaps(Map@[]@+ maps) const Now you can know the amount of maps on the location without recording them into array; Added basic server command ~log (~37). It is intended for text listening of server log. Minimum access: administrator. For adding to text listening you should transmit arguement "+", for disconnecting "-"; Fixed basic creating locations command ~addloc (~16); Upgraded basic command of looking player's id using his name ~id (~4); Changed specifications of global functions void critter_attack(Critter& cr, Critter& target, ProtoItem& weapon, ProtoItem@ ammo, uint8 aim) -> void critter_attack(Critter& cr, Critter& target, ProtoItem& weapon, uint8 weaponMode, ProtoItem@ ammo) int to_hit(CritterCl& chosen, CritterCl& target, ProtoItem& weapon, int hitLocation) -> int to_hit(CritterCl& chosen, CritterCl& target, ProtoItem& weapon, uint8 weaponMode); Added variables for weapons which state their active mode const uint8 Item::Mode const uint8 ItemCl::Mode 4 high-order bits - sight (look Hit locations in _defines.fos), 4 low-order bits - mode (0 – primary, 1 – secondary, 2 – third); Added macroses for convenience _WeaponModeUse, _WeaponModeAim, _WeaponModeMake в _macros.fos; Added returnable value of the current mode in method GetSlotProto (urgent for weapons) ProtoItem@+ Critter/CritterCl::GetSlotProto(int slot, uint8& mode) const; Renamed parametr #define ST_RATE_ITEM (102) to #define ST_HANDS_ITEM_AND_MODE (102) value stored in it: XXXX00YY, where XXXX pid - unarmed blow, and YY - mode. Changed way of the dialogue redirecting. You should use returnable value of result function or say-mode instead of uint __ForceDialog; Added specifications of functions: uint r_FuncName(...), uint dlg_FuncName(...) which are detected by server automatically; Fixed bug with moving pushed players only in one direction; Object pointers (derivatives arrays or class members)Location, Map, Critter, Item, GameVar can't be saved in global varities now. For scripts migration save their identificators (Location::Id, Map::Id, Critter::Id, Item::Id), addresing to the objects with (GetLocation, GetMap, GetCritter, GetItem). Weapons prototypes don't save curret mode of fire (in connection with multi-threading). Changed specifications of class members ProtoItem const uint8 Weapon_Skill, const uint8 Weapon_DmgType, const uint8 Weapon_Anim2, const uint16 Weapon_DmgMin, const uint16 Weapon_DmgMax, const uint16 Weapon_MaxDist, const uint16 Weapon_Effect, const uint16 Weapon_Round, const uint8 Weapon_ApCost, const uint8 Weapon_SoundId, const bool Weapon_Remove, const bool Weapon_Aim, const uint8 Weapon_CurrentUse, void Weapon_SetUse(uint8 use) const to const uint16 Weapon_Skill_F, const uint16 Weapon_Skill_S, const uint16 Weapon_Skill_T, const uint16 Weapon_DmgType_F, const uint16 Weapon_DmgType_S, const uint16 Weapon_DmgType_T, const uint16 Weapon_Anim2_F, const uint16 Weapon_Anim2_S, const uint16 Weapon_Anim2_T, const uint16 Weapon_DmgMin_F, const uint16 Weapon_DmgMin_S, const uint16 Weapon_DmgMin_T, const uint16 Weapon_DmgMax_F, const uint16 Weapon_DmgMax_S, const uint16 Weapon_DmgMax_T, const uint16 Weapon_MaxDist_F, const uint16 Weapon_MaxDist_S, const uint16 Weapon_MaxDist_T, const uint16 Weapon_Effect_F, const uint16 Weapon_Effect_S, const uint16 Weapon_Effect_T, const uint16 Weapon_Round_F, const uint16 Weapon_Round_S, const uint16 Weapon_Round_T, const uint16 Weapon_ApCost_F, const uint16 Weapon_ApCost_S, const uint16 Weapon_ApCost_T, const uint8 Weapon_SoundId_F, const uint8 Weapon_SoundId_S, const uint8 Weapon_SoundId_T, const bool Weapon_Remove_F, const bool Weapon_Remove_S, const bool Weapon_Remove_T, const bool Weapon_Aim_F, const bool Weapon_Aim_S, const bool Weapon_Aim_T Added special macros for convenience (Weapon in _macros.fos) _WeaponIsPrimaryAviable, _WeaponIsSecondaryAviable, _WeaponIsThirdAviable, _WeaponSkill, _WeaponDmgType, _WeaponAnim2, _WeaponDmgMin, _WeaponDmgMax, _WeaponMaxDist, _WeaponEffect, _WeaponRound, _WeaponApCost, _WeaponSoundId, _WeaponRemove, _WeaponAim, _WeaponModeUse, _WeaponModeAim, _WeaponModeMake Mapper updates: string@ MapperObject::PicMap/PicInv now return prototype's picturename if other isn't set up; Added const uint16 MapperMap::Width, const uint16 MapperMap::Height for storing current map sizes; Fixed function GetMapFileNames(...). Rev.39 http://www2.xp-dev.com/sc/change/94227/39 Slight fixes of quests in Den, Klamath Improved closed location in Redding Rev.38 http://www2.xp-dev.com/sc/change/94227/38 Slight fixes of quests from string "Guard"; Added services for guardsmen: doc. Troy can heal player; give stimpacks; Valery repairs items; Added universal repairing script for npc (repairer.fos). E.g. in the dialogue vc_valery.foldg 3 new special encounters with holodiscs; Several deleted functions from stdlib are returned. Rev.37 http://www2.xp-dev.com/sc/change/94227/37 Fix of calculating amount of dead NPC on location when necessity of attack is being determinated. Fix of amount loss allies counter when finishing the quest. Output of messages to log is disabled in quest “The drill”. Fix of limit of times amount quest “Dangerous hunt” can be done. Descriptions of deleted maps were returned, which made server restart impossible without saves clearing. Rev.36 http://www2.xp-dev.com/sc/change/94227/36 Fix of Hartman’s dialog. The wrong requirement was deleted. Rev.35 http://www2.xp-dev.com/sc/change/94227/35 New quests from string “Guard” in Vaultcity - Vaultcity guard. Third trial. Drill. - Easy walk. - Go there, don’t know where. - Dangerous hunt. - Diplomatic courier. Fix of caravan’s and patrol’s departure time. Relative departure time was substituted for absolute. Added ability of caravan’s instant departure from the dialog. Fix of items that were generated in encounters 0 in number. (It was impossible to throw out them) Fix of quest “Hub bibliography”. Player need 7 books to gain reputation instead of 6. Rev.34 http://www2.xp-dev.com/sc/change/94227/34 - Maps fixes - Fixed reaction of BG guards on explosives activation Rev.33 http://www2.xp-dev.com/sc/change/94227/33 - Graphics fixes - Non-used files were deleted - Original map of BG was returned Rev.32 http://www2.xp-dev.com/sc/change/94227/32 Private car parking in geck town is disabled till the problem with car boot is solved. Rev.31 http://www2.xp-dev.com/sc/change/94227/31 Added first quests of string “Guardsman”, VaultCity. (Clearing of server saves is needed) Added template for making quests-combats with npc. (fighter_quest.fos, e.g. “Guard. First trial.”) Added ability to take quest “Hub bibliography” again if player failed to finish it at previous time. Fixed incorrect condition in Dappo’s dialogue in quest “Lot of defective rifles”. Added verification of addressee in “Postman” quest, now player can’t bring letter to any npc of type stated in the letter. Rev.30 http://www2.xp-dev.com/sc/change/94227/30 Deleted not used MSG files - FOSCRIPT.MSG. Rev.29 http://www2.xp-dev.com/sc/change/94227/29 Updates of way of making records into log. Added ability to look the name of the thread which made a record. Option in config – LoggingThread. You can also turn on output in the server application using “Logging with thread”. Changed format of time output. Now it is not “time in ms”, but “hours:minutes:seconds:milliseconds”. Rev.28 http://www2.xp-dev.com/sc/change/94227/28 Fix and formatting. Rev.27 http://www2.xp-dev.com/sc/change/94227/27 Fixed mistakes in calculating karma in quest "Returning of the fugitive". Rev.26 http://www2.xp-dev.com/sc/change/94227/26 Changes on Church of Brok and Xander location: - fixed Preacher, Scientist, repairer Alechandro, Cook, Mickey dialogs; - quests work correctly now; - repairer Alechandro identifies items correctly; - ability to record the information about Church was added (after completing Preacher's quest). Rev.25 http://www2.xp-dev.com/sc/change/94227/25 Activating time of dynamite was fixed. Rev.24 http://www2.xp-dev.com/sc/change/94227/24 New algorithm of generating of pseudorandom variables was added (Mersenne twister). Previously was standart C algorythm srand/rand. Rev.23 http://www2.xp-dev.com/sc/change/94227/23 Energy barrier on the entrance of GECK town was improved. Rev.22 http://www2.xp-dev.com/sc/change/94227/22 Fixed client crashing on start. For preventing this bug in future the control system of versions of cashed scripts in the client has been added. Rev.21 http://www2.xp-dev.com/sc/change/94227/21 Fixed problem when it was impossible to add players to GECK town after removing them with option "Clear list". Rev.20 http://www2.xp-dev.com/sc/change/94227/20 Fixed cooldown of the Postman quest. Rev.19 http://www2.xp-dev.com/sc/change/94227/19 Wrongly deleted dialogs are returned. Rev.18 http://www2.xp-dev.com/sc/change/94227/18 Fixes Deleted not used files. Fixed errors when player removes child killer karma additional times. Fixed error with incorrect name of script of map_v15_village map. Added output of message of increasing trade skill when finishing “Farm vermins” quest to the log. Weakened the giant wasp in the quest in Modoc. Rev.17 http://www2.xp-dev.com/sc/change/94227/17 AngelScript was updated to rev.684, v. 2.19.2 Added global variables to the client: bool __ShowTile, __ShowRoof, __ShowItem, __ShowScen, __ShowWall, __ShowCrit, __ShowFast, __ShowPlayerNames, __ShowNpcNames, __ShowCritId. Deleted limit of min. time of using Map::SetLoopTime (it was 1 second). Fixed registration of the global variables of string type (pragma globalvar). Fixed using reserved global variables string type. Added global variables to mapper: string __ClientPath, __ServerPath. Deleted constant modificators in client from string CritterlCl::Name, CritterlCl::Lexems. Added variable CritterlCl::NameOnHead, which if is not empty, outputted above critter’s head. Rev.16 http://www2.xp-dev.com/sc/change/94227/16 Fixed reclearing of child killer status. Rev.15 http://www2.xp-dev.com/sc/change/94227/15 Fixes: - Fixed names of Giant Wasps and bugs in kills statistic; - Reduced requirements of amount of killed mobs and intelligence in Broken Hills quests (bh_marcus.fodlg, bh_super.fodlg); - Reduced requirement of intelligence for “Fresh blood” quest (vc_doctor_troy.foldg); - Fixed possibility of gaining experience multiple times in “Cabbage” quest in Modoc (mod_farmer_q.fodlg); - Player receives reputation in NCR for quest “True cowboy” even if only one Brahmin is brought (ncr_felix.fodlg); - Michael’s miniquest in NCR can be done by every player only once (ncr_michael.fodlg); - Added requirement of 16 level for “buggy” quest (ncr_ratch.fodlg); - Fixed amount of gaining experience when player rejects gratuity in “Postman” quest (q_mail_reciever.fodlg); - Fixed cooldown of “Postman” quest; - Cave mobs – spawn point near the exit grid was removed in the smallest cave; - Fixes of several dialogues in Vault City; - New quest – “Fugitive returning” – when finished, status “Child killer” is removed. Hubbologist in Redding bank offers this quest; - New quest “Farm vermines”. It is offered by Joe in Modoc (mod_joe.fodlg); - Fixed energy barrier in GECK town; - Added computer for breaking of energy barrier inside the town; - Added car lots for GECK town citizens (not more than 2); - Added ability of clearing of citizens list by town leader using the terminal. Rev.14 http://www2.xp-dev.com/sc/change/94227/14 Update for Notepad++ (Syntax_highlighting, autocomplete, function parameters hints) Rev.13 http://www2.xp-dev.com/sc/change/94227/13 First stable version.h3. Your title here...Rev.185 http://www2.xp-dev.com/sc/change/94227/185 NO_LOOT and NO_DROP mode were switched off for the giant bugs. Rev.184 http://www2.xp-dev.com/sc/change/94227/184 In connection with porting the server (*nix and 64bit) the next changes were made: Operating with net was rebuilded. Libevent library is used. http://monkey.org/~provos/libevent/ http://en.wikipedia.org/wiki/Libevent http://ru.wikipedia.org/wiki/Libevent Operating with GUI was remade. FLTK library is used. http://fltk.org/ http://en.wikipedia.org/wiki/FLTK http://ru.wikipedia.org/wiki/FLTK Operating with threads was remade. Pthreads is used http://sources.redhat.com/pthreads-win32/ (Windows port) http://en.wikipedia.org/wiki/Pthreads http://ru.wikipedia.org/wiki/Pthreads Changes are serious and can cause unstable work. Memory leak when loading maps was fixed in server. Loading maps with items in containers/inventories in mapper was fixed. Don’t use mapper of 171-182 revisions for editing old maps. Now parameters values for critters in mapper are applies only if they are not equal to zero. Initially value is taken from defaults (from .fopro), then from the map’s data if !=0. Critter’s names in mapper are now taken only by prototype number without accounting dialogue’s number. Old specification of Log function which was changed in 174 revision was returned to native scripts. Server’s GUI now ‘Courier New’ type, option in config was deleted. Option for changing server’s window size and its elements was added GUI size modifier GUISize=0 E.g. if GUISize=-50 then server’s window and all its elements will be 50% smaller, if GUISize=30 then 30% larger. Log in server window is unrolled as defaults. Also, the information from the log can be copied and scrolling is stopped if it is focused. Client’s crashing when playing items animation was fixed. Paths make_tla.bat were converted to Visual Studio 2008 (9.0). Rev.183 http://www2.xp-dev.com/sc/change/94227/183 Lo Pan’s mercenaries call leader’s name correctly now. Nancy and Sid’s quest location now is deleted after leaving it (previously it wasn’t deleted and hanged in the memory). SF docs were excluded from NoPvP locations. Letters generation in Postman quest was fixed. Holodisk with combat robot’s video recordings can be given to Buster now. Shaneman’s documents now have description in “Diplomatic mission” quest. A dialogue between bar clients in outer Vault City was added (wipe is required). Mini quest “Seduce art” was added in Klamath (wipe is required). Rev.182 http://www2.xp-dev.com/sc/change/94227/182 NPC-travellers will no longer take dead characters to the global map. Atoll was removed from Eli’s destinations. Skill displaying when increasing it through the dialogue was fixed. The mistakes in the newcomer’s dialogues in “Anger” quest were fixed. The mistake in mercenaries script which caused the leaving the employer earlier was fixed. Rev.181 http://www2.xp-dev.com/sc/change/94227/181 Reading nicknames from ignor list file was fixed. Console command for adding a player to the ignor list was added ~ignore PlayerName. Rev.180 http://www2.xp-dev.com/sc/change/94227/180 Mechanism of reputation calculation was switched off due to its incorrect work. Now all the list will be visible, but will work correctly. Rev.179 http://www2.xp-dev.com/sc/change/94227/179 Network protocol bug which caused short hangs up was fixed. Client's script was fixed which could cause null parameter call. Rev.178 http://www2.xp-dev.com/sc/change/94227/178 Superfluous rifles on offer were fixed. Rev.177 http://www2.xp-dev.com/sc/change/94227/177 Game version increment. Rev.176 http://www2.xp-dev.com/sc/change/94227/176 Sequence of handlers calling was fixed MAP_EVENT_OUT_CRITTER, MAP_EVENT_IN_CRITTER now the first one is called initially, then the second On intro_init map static lighting was set. Group moving indication on the global map was fixed (previous update bug). Rev.175 http://www2.xp-dev.com/sc/change/94227/175 Console command ~globalmap was added. It moves player to global map. It works only on noPvP maps for players not in combat mode and with noPvP mode turned on. In caravans and travellers scripts functions of moving to final destination's map were updated. Rev.174 http://www2.xp-dev.com/sc/change/94227/174 Porting game to Linux was started. Also supporting of 64 bit platforms. Client’s native libraries are now transmitted automatically. They are stored in ‘Client/data/cache’. Folder with scripts ‘Client/data/scripts’ is not used anymore and was deleted. To the server’s folder library STLPort (http://www.stlport.org/) was added. Client’s libraries are now compiling with it’s help. It is connected with porting to other platforms. Additional methods of moving were added to critters in server scripts bool Critter::TransitToMap(uint mapId, uint16 hexX, uint16 hexY, uint8 dir, bool withGroup) bool Critter::TransitToMap(uint mapId, int entireNum, bool withGroup) bool withGroup – when moving from global map to local map, all the group will be moved. Regular TransitToMap (without bool withGroup) work as with withGroup == false. Previously they worked as как withGroup == true, what led to moving all the group when replicating, if dead critter was on the global map. 3d critters were switched off. For switching on see PLAYERS_3D in _defines.fos. Constants for operating with game constants were added(see 168 revision, http://www2.xp-dev.com/sc/change/94227/168). Specification for the reserved function Log in native scripts was changed. Now the first returned parameter is function’s name from which it was called. Rev.173 http://www2.xp-dev.com/sc/change/94227/173 Traders were added to Atoll and Redding. Barterground was moved to position 690:760 as it isn’t needed anymore in north-west region due to noPvP mode. Locations “BiX Church” and “Atom’s Church” were moved to special encounters class. Fixed rewards in some quests. Maps fixes. Biscuit on Modoc can be received only once now (as in Fallout 2). Rev.172 http://www2.xp-dev.com/sc/change/94227/172 noPvP mode was activated on some TLA maps. It will be used on the next TLA session. For switching it off on your server set global variable __NoPvpMaps=false; in script config.fos Ability of making a list of ignored players, it works similarly NameColorizing. It needs manual adding nickname of ignored player to IgnoreList.txt For refreshing the list of ignored players in game use console command ~ignorelist. Rev.171 http://www2.xp-dev.com/sc/change/94227/171 Derivative objects system for mapper was updated. When placing base object, all his derivatives are placed automatically. If one object from the group is being selected - all others are being selected too. If the prototype or position of the derivative object is changed, changes will be automatically applied by mapper or server when loading. For the example see cars, at the present time they have one derivative object – their trunk. Now when placing the car, it will be created automatically, also it will be moved with it and if base or derivative object is deleted, all the group will be deleted too. The system of moving selected objects in mapper was upgraded. Now in hexagonal system the selected objects will be moved without being tearing apart. Also the selected objects, when being moved, will stop at the map’s edge, so they won’t mix into a pile. The problem with detecting whether items in container belong to their inventory or container. Previously items were placing on the hex and if you place two containers on the same hex, all the items will stack in one container. Now it is fixed. Item::TrapValue initialization through mapper was fixed. If rewriting is performed on prototypes loading, alert is displayed. It was added for items and critters prototypes. In object’s structure in mapper was deleted field const bool Item_InContainer and added const uint UID, ContainerUID, ParentUID, ParentChildIndex Rev.170 http://www2.xp-dev.com/sc/change/94227/170 Now server doesn't block client's libraries while working. Previously you needed to stop the server to replace client's dll (Server/scripts/fonline_tla_client.dll). Rev.169 http://www2.xp-dev.com/sc/change/94227/169 Combined content of MASTER.DAT + CRITTER.DAT. Size - 201 MB! Rev.168 http://www2.xp-dev.com/sc/change/94227/168 Client and Mapper are no longer bounded with Fallout’s data files - MASTER.DAT and CRITTER.DAT. These files content is combined (excess data is deleted) and packed into fallout.dat (will be uploaded with the next update) and defined in DataFiles.cfg. Global variables string __MasterPath, __CritterPath were deleted. The configurator (FOConfig.exe) is updated accordingly fixes above. Critter’s lighting in the death moment and flat items lighting was fixed. To server/client/mapper scripts the next functions for operating with the constants (*Names.lst) were added: int GetConstantValue(int constCollection, string@+ name) – identifying constant’s value by the name; string@ GetConstantName(int constCollection, int value) - identifying constant’s name by the value; void AddConstant(int constCollection, string@+ name, int value) – adding separate constant to the collection; bool LoadConstants(int constCollection, string@+ fileName, int pathType) – loading/reloading the collection; int constCollection – collection’s number, see Constants collections in _defines.fos, also you can define your own collections; string@+ name – constant’s name; int value - constant’s value; string@+ fileName, int pathType – collection file’s name and folder path. Rev.167 http://www2.xp-dev.com/sc/change/94227/167 Bug with error of name/password in login menu if it exceeds 12 symbols was fixed. Screen centering on the player when loading map in right-angle geometry was fixed. Copying objects in Mapper from smaller map to the bigger one was fixed. Mapper hanging up when Sleep < 0 was fixed. Crashes when loading ART files were fixed. Principe of transparency defining with parameter ‘”t” was changed, now it isn’t equal to 255 – paletteIndex, but to max(R, G, B). Rev.166 http://www2.xp-dev.com/sc/change/94227/166 System of operating with items prototypes was updated (ProtoItem). Ability to add your own fields to proto class was added. New pragma ‘bindfield’ is used for this, e.g.: #pragma bindfield "const int ProtoItem::MyValue -> 400" it means creation of field MyValue of int type with offset 400 (considering thas int is 4 byte, it will occupy bytes 400, 401, 402, 403). Totally for user’s fields 500 bytes are available. Field is equal to zero as defaults, but it is possible to change the value by defining value (in the current case MyValue=111 or MyValue=SkillBigGuns) in proto file (.fopro), number (if it contains only numbers) or path to the file (it is identified by the presence of ‘/’ or ‘\’ symbols). For now fields which are not used by the engine are taken out to scripts, see _defines.fos Item prototypes fields. Changes in structure ProtoItem. All next methods are deleted uint8 GetType() const uint16 GetProtoId() const bool IsGrouped() const bool IsWeared() const bool Container_IsGroundLevel() const List of new fields which are registered in the engine (part of them is renamed, some were deleted) http://pastebin.com/8R4QkP3h The other fields are registered with #pragma bindfield in _defines.fos. Now all items can stack and wear out, for this Boolean fields are added to the prototypes bool ProtoItem::IsStackable bool ProtoItem::IsDeteriorable Item type ITEM_MISC_EX was deleted, it is combined with ITEM_MISC (miscex.fopro is deleted). Vehicles are taken out to separate type ITEM_CAR (car.fopro was added). Also now user can define any type numbers for the items. Former fields uint MiscEx_StartVal0..9 of the start values for Item::Val0..9 were moved to common area named StartValue0..9, and with these values Item::Val0..9 are initialized. Metod bool Item::IsCar() const was deleted, instead of it use GetType()==ITEM_CAR. The next methods are renamed bool Item::IsGrouped() const -> bool Item::IsStackable() const bool Item::IsWeared() const -> bool Item::IsDeteriorable() const The next fields are renamed uint16 Item/ItemCl::BrokenWear -> Item/ItemCl::Deterioration uint16 Item/ItemCl::CarDeteoration -> Item/ItemCl::CarDeterioration uint8 MapperObject::Item_DeteorationFlags -> uint8 MapperObject::Item_BrokenFlags uint8 MapperObject::Item_DeteorationCount -> uint8 MapperObject::Item_BrokenCount uint16 MapperObject::Item_DeteorationValue -> uint16 MapperObject::Item_Deterioration Mechanism of affiliated objects was moved for common use. Previously it was available only for vehicle’s trunk. One object can have up to five derivatives. Numbers of the derivative objects are defined in uint16 ProtoItem::ChildPid_0..4. By creation of base object, derivatives are created automatically. For now Mapper doesn’t create affiliated obkects automatically, but it will be fixed in further. For setting the place of situation, special field ChildLines_0..4 is used (former MiscEx.Car.Bag_0..1, see below by recording format). Also it is possible now to define automatic blocking for any objects, not only for vehicles – field BlockLines (former MiscEx.Car.Blockers). Recording format for Child/BlockLines – XYXYXY..., where X is direction number (0..5/7), Y is the amount of steps (1..9) in this direction (previously for vehicle’s trunk for another recording format - XXXX...). Maximum amount of steps for BlockLines – 50, for ChildLines – 6. For operating with derivative objects use methods Item@+ Item::GetChild(uint childIndex) const (бывшая Item@+ Item::CarGetBag(int numBag)) bool Map::CheckPlaceForItem(uint16 hexX, uint16 hexY, uint16 pid) const (bool Map::CheckPlaceForCar(uint16 hexX, uint16 hexY, uint16 pid) const) Fields renaming affected lots of scripts, be attentive. Old proto format is converted to the new one automatically, but Object Editor (ObjectEditor.exe) still operates only with old format. It will be fixed soon. To replication.fos and entires.fos scripts the influence of right-angled geometry was added. Script main_planes.fos is formatted as a separate module. All pragmas were move to the end of _defines.fos. Drop of FPS when switching on view/attack borders was fixed. Rev.165 http://www2.xp-dev.com/sc/change/94227/165 Fix for the ASCompiler. Rev.164 http://www2.xp-dev.com/sc/change/94227/164 Changed ASCompiler output format to “filename(linenumber) : message”. Such output is recognized by a number of IDEs and allow jumping to the code by a double-click on the output line. Rev.163 http://www2.xp-dev.com/sc/change/94227/163 Tabs management system was added to Mapper. Now one tab can have numerous subtabs. Tabs names and its filling is defined in mappers scripts. But some tabs already have initial filling. Item – items prototypes by defaults (items.lst); Tile – tiles by default, search is performed in ‘art/tiles/’; Crit – critters prototypes by defaults (critters.lst); Fast – displays often used objects, initial state is defined in scripts (InitializeTabs in mapper_main.fos); Ign – Ignore, shows ignored objects which are not shown on the map; Inv, Msg, Map – special tabs which have nothing to do with the mechanism, but it is possible to change its name throug TabSetName (see below). The tab can have subtabs only of one type – tiles, critters or items (displayed in priority order). For items and critters the subtab’s name is chosen by user, for the tiles it is performed automatically. The lowest subtab “all” contains all prototypes (or tiles) on a list above. For activation the menu of tab choosing – perform a double click on it. If positions are numerous then use mouse wheel for navigation (scroll speed: normal – 4, with pressed shift – 8, with pressed ctrl – 20, with pressed alt – 50). For tabs management use scripts, functions Tab* uint TabGetTileDirs(int tab, string@[]+ dirNames, bool[]+ includeSubdirs) uint TabGetItemPids(int tab, string@+ subTab, uint16[]@+ itemPids) uint TabGetCritterPids(int tab, string@+ subTab, uint16[]@+ critterPids) void TabSetTileDirs(int tab, string@[]+ dirNames, bool[]+ includeSubdirs) void TabSetItemPids(int tab, string@+ subTab, uint16[]@+ itemPids) void TabSetCritterPids(int tab, string@+ subTab, uint16[]@+ critterPids) void TabDelete(int tab) void TabSelect(int tab, string@+ subTab) void TabSetName(int tab, string@+ tabName) int tab – tab’s number (see Tabs in _mapper_defines.fos); string@[]@+ dirNames – folder’s names for tiles searching; bool[]@+ includeSubdirs – turn on search in subfolders; string@+ subTab – subtab’s name; uint16[]@+ itemPids – item’s prototype numbers array; uint16[]@+ critterPids - critters’s prototype numbers array; string@+ subName – tab’s name. Global variable was added bool __SplitTilesCollection = true It defines whether tiles should be divided into groups in the folders. The group is defined as a string in the file’s name before the first number (e.g. abc12.png - group abc), if the number is absent, then group is defined as '<other>'. In connection with these changes, the global functions are deleted uint GetFastPrototypes(uint16[]@+ pids) void SetFastPrototypes(uint16[]@+ pids) Other updates. Fixed incorrect work of server/client which caused some bugs. Global variable int __GeometryType was added to _defines.fos for the indication of chosen geometry. See constants in _defines.fos Geometry. Depending on its value, tab with Tactics and Arcanum is added. Ability to work with file names which include spaces is added. When loading ART files, it is possible to flip them vertical or horizontal. Parameters in the file name - ‘v’/‘V’ and ‘h’/‘H’. When loading SPR file, if you define in changing color parameter – layer’s number -1, then the modificator will be applied to all four layers. Rev.162 http://www2.xp-dev.com/sc/change/94227/162 Quest perks “Midnight Child”, “Nosderatu Blood” were added (Modoc, “Night’s tender”). Now new home position is set for NPC-travelers (Devin, Eli) when they enter new location. Female characters now can finish quest of removing childkiller status. Allies HP and resistances were increased in “Dangerous hunt” quest. Also a simple dialogue is added to them. The forged letter is now removed from the inventory when finishing quest “Forgery”. Edvin in Klamath tells with a popup phrase when starting gathering items. A delay was added to the prisoner giving the cues in “Ernst Telman” quest. Ability of intimidating the NPC visitor if it’s a woman was deleted in quest “Wrath”. Barcus now reacts with popup phrases to the futher meetings with the player who have done quest “Amnesty for Joshua”. Upon the receiving lieutenant rank of Vaultcity’s Guard, player is awarded with a black combat armor. In “Diplomatic Courier” quest time (24 hours) which Sheiman takes for the thoughts now is calculated correctly. Upon finishing this quest, player receives +1 reputation in NCR. Sell price of the buggy which player receives upon finishing the quest in NCR was set to zero. Dialogue launch when player uses an antidote in quest “Poisoned Regulator” in Redding was fixed. Players who gained Vaultcity citizenship now can trade with Randal with no restrictions. Reputation calculation in quests “Real Cowboy”, “Hub Bibliography” in NCR was fixed. If player refuses the reward in “Hub Bibliography” quest, he gains +2 reputation (was +1) when he delivers 5 books. Increasing raider’s resistances and skills every new attack on NCR was switched off. Ability of crafting and buying chitin armor was added. Giant beetles drop chitin. Items with ITEM_GAG flag deletion upon player’s death was fixed. Rev.161 http://www2.xp-dev.com/sc/change/94227/161 Ability to customize game geometry was added, either the support of isometric projection with quadrangles was. For customization use global variables bool __MapHexagonal – isometry type: true - hexagonal, false - quadrangular; int __MapHexWidth – hex width; int __MapHexHeight – hex height; int __MapHexLineHeight – hex line height; int __MapTileOffsX/Y – ground tiles offset; int __MapRoofOffsX/Y – roof tiles offset; int __MapRoofSkipSize – amount of hex per one roof tile (necessary for its correct hiding); float __MapCameraAngle – 3d model rendering angle; bool __MapSmoothPath – path smoothing when moving; string __MapDataPrefix – path and prefix for the geometry files. Operational sprites for geometry are situated in art/geometry/. Quadrangular isometry use 8 directions, hexagonal – 6. In script config.fos in function InitializeGeometry(), necessary adjustments for 3 games (Fallout1/2, Fallout Tactics and Arcanum) are added. This function can be called in server, client and mapper scripts, as all three of them need geometry information. Global variables uint __LookDir4, uint __LookSneakDir4 were added for 8-directional geometry. Fixed Tactics SPR files loading. Mode MODE_NO_TALK was added. It affects ability to talk and appearance of the icon in the context menu. Double click on hex, affecting avatar’s moving, was fixed. Creation of descriptions for critters prototypes (FODLG.MSG) with high identifiers was fixed. Image of elephant gun was added in 3d. Rev.160 http://www2.xp-dev.com/sc/change/94227/160 Fixed a bug with server and client communication. Fixed a bug with wrong sprites display. Rev.159 http://www2.xp-dev.com/sc/change/94227/159 Documentation's update, mistakes fixes. Rev.158 http://www2.xp-dev.com/sc/change/94227/158 Script start_server_client.fos was renamed to config.fos and now it isn't simply pasted into function start(), but presented as a separate module with function InitializeGame(). Macros for operating with time were moved from _macros.fos to separate module _time.fos. Slight fix of drugs.fos. Rev.157 http://www2.xp-dev.com/sc/change/94227/157 Errors messages in server log when operating with functions GetPlayerName/GetPlayerId were removed. Also GetPlayerName returns null now, if the player wasn't found. Bugs of reputation calculation were fixed. Rev.156 http://www2.xp-dev.com/sc/change/94227/156 Ability to affect the colors when loading Tactics sprites was added. To make color shift, define necessary values in file name’s parameters (“$”). Format: fileName$[index,r,g,b]animName.spr (can be any amount of shifts […]) where index – body part’s number (0 - miscellaneous, 1 - skin, 2 -hair, 3 - armor); r,g,b – color shift for the each component, can be negative Example: someSprite$[2,50,-30,-20]anim1.spr – load sprite someSprite.spr, with animation anim1 and hair’s color shift in RGB (50,-30,-20). Additional flags for operating with color’s shift were added for Tactics critters (_animation.fos, animation.fos). Use macros ANIM1_COLOR_SKIN(index), ANIM1_COLOR_HAIR(index), ANIM1_COLOR_ARMOR(index) for values defining. Index can take on value from 0 to 15, appropriate to it values of color shift look in array colorOffsets of animation.fos script. For ability testing you can use text function void ColorOffset(Critter& cr, int skin, int hair, int armor) in test.fos. Rev.155 Some native structures were fixed. Rev.154 http://www2.xp-dev.com/sc/change/94227/154 AngleScript is updated to revision 822. Ability of sorting is added to scripts arrays Ascending sort void array::sortAsc() void array::sortAsc(uint index, uint count) Descending sort void array::sortDesc() void array::sortDesc(uint index, uint count) For user’s classes sorting realize opCmp method http://www.angelcode.com/angelscript/sdk/docs/manual/doc_script_class_ops.html Vehicle animations on the global map and item’s animations in Mapper are fixed. Some points in operating with critter’s animations are fixed (animation.fos). Global variable __GmapActive is fixed. Global variable for setting min. offline time after that client will completely exit from the game was added. uint __MinimumOfflineTime = 180000; // 3 minutes Rev.153 http://www2.xp-dev.com/sc/change/94227/153 Additional constants for operating with Chosen's actions were updated (Get/SetChosenActions, for CHOSEN_USE_ITEM). Rev.152 http://www2.xp-dev.com/sc/change/94227/152 Additional constants for operating with Chosen's actions were added (Get/SetChosenActions). Rev.151 http://www2.xp-dev.com/sc/change/94227/151 Bugs with incorrect files's names path detecting were fixed. Rev.150 http://www2.xp-dev.com/sc/change/94227/150 3d models loading was fixed. 3d models rendering to sprites was fixed. Critters animations were fixed (death in 2d and 3d modes). Shift calculation for some models was fixed. SAY_DIALOG/SAY_APPEND mechanics was fixed. (by Atom) Server’s config loading in Mapper was fixed. (by Atom) File HashNames.lst was added to client. Names of files which contain parameters (‘$params’) should be entered in it. If you use such names in the prototypes, Mapper or scripts GetStrHash), then include this name to this list. Format of writing: [any number] [file’s name] [end of string] E.g. 0 art\scenery\BrazureFire$t.ART 0 art\scenery\BrazureFire$t3.ART In further it is possible to detect and transmit such names automatically, but for the present use this system. Roof disappearing if it is situated in odd hex in two axis. Rev.149 http://www2.xp-dev.com/sc/change/94227/149 Documentation was updated. Some fixes in Arroyo (Minoc’s quest about raiders). Usage mode was added for sledgehammer and supersledge (for resources mining). Guard lib was brought into common standard of scripts formatting. Rev.148 http://www2.xp-dev.com/sc/change/94227/148 Two reserved variables were added to HLSL effects float AnimPosProc – current animation’s per cent 0%..100%, [0,1); float AnimPosTime – current animation’s time in seconds. Client’s hanging under certain circumstances was fixed (e.g. receiving item’s data when player in process of moving between maps). Dump generation when closing server application without stopping was switched off. Generation of unnecessary messages to log in function animation_ animation.fos was fixed. Rev.147 http://www2.xp-dev.com/sc/change/94227/147 Parameters for critter’s movement controlling were added. Time for moving in milliseconds: #define ST_WALK_TIME (117) #define ST_RUN_TIME (118) Ability to move #define MODE_NO_WALK (539) #define MODE_NO_RUN (540) If these parameters are equal to zero, then data is taken from CritterTypes.cfg. Loading of some ART files was fixed (Arcanum). Ability of specifying special image processing was added. Palette elements will be transparent depending on its index in the palette (alpha = 255 – index). To chose this loading type - use symbol “t” (or “T”) in file name parameters. E.g. ‘filename$t.art’; also you can combine with palette, e.g. ‘filename$1t.art’. Ignoring of spec.symbol “/r” was additionally added for splitEx function. In functions void DrawSprite(... bool applyOffsets) if applyOffsets == true there were additionally added shifting of width/2 and height of the image. Unnecessary fo3d files were deleted. Palette influence for Arcanum critters was fixed. Rev.146 http://www2.xp-dev.com/sc/change/94227/146 One more fix of incorrect critter displaying. Rev.145 http://www2.xp-dev.com/sc/change/94227/145 Quest “Communicated” was added (Redding). Caravaneers phrases were fixed, now they tell correct departure dates. Quest “Honomer’s bodyguard” was added (San Francisco). Retina scanner in GECK town was fixed. Slight fixes of the hubbolog’s map in San Francisco. Special result function for skill rise calculation through a dialogue was added.(dialog@r_SkillUp) The script for quest locations creating was fixed (hostile_location_quest.fos), allies and enemies scripts now work correctly. Resetting of a quest variable when deleting the location was fixed. Script for realization a dialogue between several npc’s with popping up phrases was added. (npc_dialog.fos) Story line implementation was continued. Maps numeration in the location with mutants was fixed (quest string “Guardian”). Rev.144 http://www2.xp-dev.com/sc/change/94227/144 Critter’s hitpoints regeneration was moved to scripts, you can look realization in function critter_idle main.fos. Global function for critters sampling from the global map was added to server scripts. uint GetGlobalMapCritters(uint16 worldX, uint16 worldY, uint radius, int findType, Critter@[]@+ critters) Additionally to methods bool Map::GetNearEntireCoords(int& entire, uint16& hexX, uint16& hexY) const bool Map::GetEntireCoords(int entire, uint skip, uint16& hexX, uint16& hexY) const were added methods bool Map::GetNearEntireCoords(int& entire, uint16& hexX, uint16& hexY, uint8& dir) const bool Map::GetEntireCoords(int entire, uint skip, uint16& hexX, uint16& hexY, uint8& dir) const which return direction. Global variable which specifies if the password in the client’s login window should be hidden was added bool __HidePassword = true Incorrect critters creation in Mapper was fixed. Displaying of switching critter’s type 3d->2d on the client’s side was fixed. Rev.143 http://www2.xp-dev.com/sc/change/94227/143 Fixed critters loading in Mapper (141 revision's bug). Rev.142 http://www2.xp-dev.com/sc/change/94227/142 Fixed server loading (the previous revision bug). Rev.141 http://www2.xp-dev.com/sc/change/94227/141 Mechanism for identifying critter’s animation file name was added. Now you can operate with critter’s animations from Tactics and Arcanum without any conversions. All data files which you need for enabling one or another critters are cited in CritterTypes.cfg comments. The next critters were added to SDK: Humanoid, Behemoth, MTT, Pacification. They are repacked to the separate archive ftrobots.bos. But all available critters from Tactics and Arcanum are added to CritterTypes.cfg with correctly defined parameters for them (by Tabloid), so you can enable the needed data files and use the critters. All animations are transformed to the general appearance (ANIM2_2D*, ANIM2_3D* -> ANIM2*). The functional for operating with them is moved to scripts. In some places where these values are used, numeric literals are replaced by string constants, which description you can find in DefineNames.lst. Fixes were made in weapons prototypes (weapons.fopro) and fo3d templates for 3d critters from VanBuren (_VBHuman.fo3d, _VBMob.fo3d, _VBWeapon.fo3d). Now three sets of primary and secondary animations are used for critters, for three condition types – alive, knockout, dead const uint Critter/CritterCl::Anim1/2Life/Knockout/Dead (const uint Critter/CritterCl::Anim1/2 were deleted). These values are used for animations as default. Pay attention that Anim1 additionally is summed up with animation of the weapon in the active slot, bit-by-bit OR. It is necessary for assignation certain values on continuing basis (e.g. sitting, lying position). For changing these values the next method is used void Critter::SetAnims(int cond, uint anim1, uint anim2) int cond – defines the position to apply values to (COND_* in _defines.fos), if null it is applied to all three; uint anim1, anim2 – animation values. Deleted const uint8 Critter/CritterCl::CondExt Accordingly all COND_*_* for them are deleted. Now position is differentiated by the animations. In connection with it, the next methods specifications were changed void ToDead(uint anim2, Critter@+ killer) bool ToKnockout(uint anim2begin, uint anim2idle, uint anim2end, uint lostAp, uint16 knockHx, uint16 knockHy) void EventKnockout(uint anim2begin, uint anim2idle, uint anim2end, uint lostAp, uint knockDist) void EventSmthKnockout(Critter& fromCr, uint anim2begin, uint anim2idle, uint anim2end, uint lostAp, uint knockDist) uint anim2begin, anim2idle, anim2end – animations of the knockout begging, staying in it and coming to yourself. Standard macroses are defined for the transfer KNOCKOUT_ANIM2_DEFAULT, KNOCKOUT_ANIM2_STUNNED (in _animation.fos). Also Mapper operates now not with CondExt, but with Anim1/Anim2 for the current Cond. Global variables for client/mapper for defining combat mode animations were added uint __Anim2CombatBegin = ANIM2_BEGIN_COMBAT uint __Anim2CombatIdle = ANIM2_IDLE_COMBAT uint __Anim2CombatEnd = ANIM2_END_COMBAT The next reserved client/mapper functions were added (animation.fos): - string@ critter_animation(int animType, uint crType, uint anim1, uint anim2, uint& pass, uint& flags, int& ox, int& oy) Function which is called when loading necessary animation. Returned value - file’s path and name. int animType – critter’s animation type (new parameter which is set in CritterTypes.cfg); uint crType – critter’s type; uint anim1, anim2 – animation’s indexes; uint& pass – function call’s number, is changed by the user. If animation loading failed and this parameter was changed, then function will be recalled (in certain cases you should try to load different files for the one animation); uint& flags – flags, at the present moment two of them – to take the first or the last frame from the animation ( Anim loading flags in _animation.fos); int& ox, &oy – shifts for the animation, in pixels. - bool critter_animation_substitute(int animType, uint crTypeBase, uint anim1Base, uint anim2Base, uint& crType, uint& anim1, uint& anim2) If animation loading failed (and uint& pass wasn’t changed), then this function is called for animation substitute detection (e.g. left hook can be replaced by the right hook). true is returned if the substitute was found (engine also additionally checks if crType, anim1, anim2 were really changed), false – no substitute, animation won’t be loaded and played. int animType – see above; uint crTypeBase, anim1Base, anim2Base – base critter’s and animation’s type, which were at the start; uint& crType, &anim1, &anim2 - critter’s and the current animation’s type for the substitution - bool critter_animation_fallout(uint crType, uint& anim1, uint& anim2, uint& anim1ex, uint& anim2ex, uint& flags) As Fallout’s animations are still loaded by the engine (additional shifts calculation and animations pasting together is needed), for determining animations conformity this function is called, i.e. instead of critter_animation for fallout’s animations this function is called. true is returned if animation is presented, false – not. Method bool Critter::IsAnim3d() const is deleted, use instead of it the global function int GetCritterAnimType(uint crType) values look in Anim types _animation.fos. Critters actions sounds now are played in the scripts, in animation_2d/3d_process. New mechanism for sound file name identification was made, look PlayAnimSound in animation.fos. Critters prototypes were divided into fallout’s (fallout2.fopro) and TLA's (tla.fopro). Bug with roof’s non-transparency in Mapper was fixed. Name indication of chosen critter or tile prototype in mapper was added. Format fo3d now recognizes named constants DefineNames.fos, namely for modificators Mesh, Subset, Layer, Value, DisableLayer, DisableSubset, Texture, EffDef (для Dword), Anim, AnimSpeed, AnimEqual. Global server variable for determining call frequency was added GLOBAL_PROCESS_MOVE uint __EncounterTime = 5000 Global client variable for determining frequency of foolish trick animation call was added uint __CritterFidgetTime = 50000 is deleted using formula Random(__CritterFidgetTime, __CritterFidgetTime * 2) Item prototype’s parameter was deleted bool ProtoItem::Weapon_RequiresActivation now if animation doesn’t exist, it is just not played. Parameters uint16 MapperObject::Scenery_ToMapX/Y were deleted, in mapper also. Moving between locations is performed by entery points. In weapons prototypes types of action animations were substituted from numeric by string constants (accordance look in DefineNames.lst). Appropriate changes were performed in ObjectEditor. Client functions PlaySound andPlayMusic now return bool, signalizing if file was found or not. Global functions for server/client/mapper which return appropriate values from CritterTypes.fos were added uint GetCritterAlias(uint crType) string@ GetCritterTypeName(uint crType) string@ GetCritterSoundName(uint crType) Mapper’s scripts were moved to server’s scripts folder. Also the whole set of functions for operating with CritterTypes.fos was added to Mapper bool IsCritterCanWalk(uint crType) bool IsCritterCanRun(uint crType) bool IsCritterCanRotate(uint crType) bool IsCritterCanAim(uint crType) bool IsCritterAnim1(uint crType, uint anim1) int GetCritterAnimType(uint crType) uint GetCritterAlias(uint crType) string@ GetCritterTypeName(uint crType) string@ GetCritterSoundName(uint crType) Specifications of client’s reserved functions were changed animation2d_process, animation3d_process parameter bool animateStay was added to the beginning. It indicates if any action is performed now (false) or stand animation (true). Reaction for global map’s interface buttons pressing when the size of map’s area (GmapMap) covers the buttons area was fixed. Bug with incorrect loading/saving maps in which script’s or function’s name consists of spaces was fixed. Bug with potential server crashing when using AI_PLANE_MISC was fixed. Rev.140 http://www2.xp-dev.com/sc/change/94227/140 Some robots from Fallout Tactics (look the next revision). Rev.139 http://www2.xp-dev.com/sc/change/94227/139 The next quests were added in San Francisco: “Introduction into Hubbology”, “Hub’s justice”. Transport to Atoll is available for the players who are doing “Introduction into Hubbology” quest (npc is in the docs area of San Fracisco); Automatic transfer to the command center of GECK city citizens when entering the map was removed. Now citizens can choose spawn point. Quest location “Hubbologists laboratory” was added (author JunoReactor). Rev.138 http://www2.xp-dev.com/sc/change/94227/138 Arroyo: Quest “Evidence of Chosen’s death” was added (Todd Stewart); Two courier quests were added (Cassidy, Todd Stewart); Encounter fixes: Fixed bugs of the 120 revision; Fixed random encounters where normally aggressive npc’s didn’t attack after fighting with the other npc’s; Fixed bug with unlimited experience in Den; Fixed mistakes in NCR quests cooldowns; Slight dialogues fixes. Rev.137 http://www2.xp-dev.com/sc/change/94227/137 Ability to specify the layer of tiles/roof to organize correct query of displaying. Totally there can be 5 layers, from 0 to 4. You can switch between them with pressing shift and pressing appropriate key (from 0 to 4). Indication of the current layer is specified in the map’s supplemental information (in upper right corner). Specification of MapperMap AddTile/AddTileName methods was expanded, also layer parameter was added void AddTile(uint16 hexX, uint16 hexY, int offsX, int offsY, int layer, bool roof, uint picHash) void AddTileName(uint16 hexX, uint16 hexY, int offsX, int offsY, int layer, bool roof, string@+ picName) Functions for hash calculation by file’s name and inverse function were added to the native scripts const char* (*GetNameByHash)(uint hash); // Get name of file by hash uint (* GetHashByName)(const char* name); // Get hash of file name The functional for operating with the chosen’s actions was added to the client’s scripts. For taking or specifying the actions use functions uint GetChosenActions(uint[]@+ actions) void SetChosenActions(uint[]@+ actions) This array consists of blocks of seven variables, the first is the type, the other are the parameters. Values of types and parameters look in _client_defines.fos Chosen actions. Argument with the location was added to the reserved function for checking the entries into this location bool entrance_FuncName(Location& loc, Critter@[]& critters, uint8 entrance) The next events were added for critters CRITTER_EVENT_USE_ITEM_ON_ME bool EventUseItemOnMe(Critter& whoUse, Item& item) CRITTER_EVENT_USE_SKILL_ON_ME bool EventUseSkillOnMe(Critter& whoUse, int skill) In the calls stack it is situated between CRITTER_EVENT_USE_* and the global handler. That is CRITTER_EVENT_USE_ITEM for the player + CRITTER_EVENT_SMTH_USE_ITEM for those who can see the player. CRITTER_EVENT_USE_ITEM_ON_ME The global handler critter_use_item. and CRITTER_EVENT_USE_SKILL for the player + CRITTER_EVENT_SMTH_USE_SKILL for those who can see the player. CRITTER_EVENT_USE_SKILL_ON_ME The global handler critter_use_skill. The supplemental information (current hex, fps, etc.) in Mapper is presented in the upper right corner. Bug of 135 revision with transparent tiles when placing them was fixed. Data connected with unfinished mechanism of textured grid was deleted. Rev.136 http://www2.xp-dev.com/sc/change/94227/136 Maps converted to text format. Rev.135 http://www2.xp-dev.com/sc/change/94227/135 Now only text format is used for maps, it is binary only for loading. All maps are converted to the text format (they will be uploaded with the next revision). Extension of this format is “fomap”. To convert your own maps to the new format – execute in Mapper ““#ConvertMaps”, then you should manually or using Mapper set required values in Time, NoLogOut, ScriptModule, ScriptFunc fields, which values you can see in file Maps.cfg. File Maps.cfg is not used anymore, locations prototype numbers are defined opposite to their name in file Locations.cfg, as in the most cases the one map prototype is used for the one location. According to these changes, the next MapperMap methods are deleted: uint GetTile(uint16 tileX, uint16 tileY, bool roof) const void SetTile(uint16 tileX, uint16 tileY, bool roof, uint picHash) string@ GetTileName(uint16 tileX, uint16 tileY, bool roof) const void SetTileName(uint16 tileX, uint16 tileY, bool roof, string@+ picName) And the next are added: uint GetTilesCount(uint16 hexX, uint16 hexY, bool roof) const void DeleteTile(uint16 hexX, uint16 hexY, bool roof, uint index) uint GetTile(uint16 hexX, uint16 hexY, bool roof, uint index) const void AddTile(uint16 hexX, uint16 hexY, int offsX, int offsY, bool roof, uint picHash) string@ GetTileName(uint16 hexX, uint16 hexY, bool roof, uint index) const void AddTileName(uint16 hexX, uint16 hexY, int offsX, int offsY, bool roof, string@+ picName) Also the next fields are added: const int WorkHexX const int WorkHexY int Time bool NoLogOut string ScriptModule string ScriptFunc The next methods are deleted (as their technology is not good enough for now): string@ GetTerrainName(uint16 tileX, uint16 tileY) cons void SetTerrainName(uint16 tileX, uint16 tileY, string@+ terrainName). Function bool SaveMap(MapperMap@+ map, string& fileName, int pathType, bool text, bool pack) now looks as bool SaveMap(MapperMap@+ map, string& fileName, int pathType). The ability to transmit commands /text /pack when saving by the console is deleted respectively. Several functions for operating with map’s fields were added to mapper script (you can do this procedure simply editing necessary field in the map’s file with text editor): #MapTime value – map’s time in minutes; #MapNoLogOut value –possibility to log out on the map; #MapScriptModule moduleName – script, module’s name; #MapScriptFunc funcName – script, function’s name. Now it is possible to place lots of sprites on one hex. Be attentive, fallout’s tiles have the same size and if you place two tiles on the same hex, you won’t see it (only if you select it , it will be less transparent than the others). Take it into account when you place or copy-paste tiles. Function #ClearTiles can help you with this problem, it deletes superfluous tiles from the hex. So, if you operate with fallout’s tiles and you don’t need several tiles on the same hex, execute this script when you finish work. Also you can place tiles on every hex, not in two. Ability of shifting is added for tiles. To produce tile shift just make the same operations as switching between tiles, but additionally pressing shift. Also you can use the same shift procedure for items. To cancel shift, press Alt with Shift and move objects. Fixed 130 revision’s bugs. Fixed bug with absence of shifting in fofrm with one sprite. Fixed bug with error in loading sprites in scripts (LoadSprite), which caused several other bugs. Remained ini files were formatted. Rev.134 http://www2.xp-dev.com/sc/change/94227/134 Config was uploaded by mistake. Take into accont, don't use config file from 132 and 133 revisions, admin pass is "hh" there. Rev.133 http://www2.xp-dev.com/sc/change/94227/133 Redding maps fixed, quest NPC were added. Rev.132 http://www2.xp-dev.com/sc/change/94227/132 Fixed "Anger" quest, the missing dialogue was restored, now it can be finished. Added quest "Forgery". (VC, Linnet) Rev.131 http://www2.xp-dev.com/sc/change/94227/131 New quests "Anger", "Ernst Telman" were added. (VC, Linnet) Fixed bug in VC guard's AI scripts. Fixed mistakes in quest “Amnesty for Joshua” dialogues. Ability to cancel their service for mercs/companions was added if the owner exits from location to the global map. Rev.130 http://www2.xp-dev.com/sc/change/94227/130 Support of graphics files SPR, TIL, ZAR from Fallout Tactics was added. Support of data files BOS from Fallout Tactics was added (works as ZIP archieve). For loading certain animation from SPR files, state it in the name after “$” sign. E.g. loading CrouchAttackClubSwing animation from file Mutant.spr - “Mutant$CrouchAttackClubSwing.spr”. The first frame of first animation is taken without direction. Also, ability to set certain palette for ART files (graphics files from Arcanum) was added – state palette’s number (from 0 to 3) after “$” sign. E.g. to load dfmbnsba.art file with the second palette - “dfmbnsba$1.art”. First palette is taken without direction (that is 0). Operation with sprites was changed. Now all interface graphics (which is set in ini files) is represented not as one sprite, as continuously played animation. Functional for operation with currently drawn sprites on the map was added to the native client’s and mapper’s scripts. Structures: struct Sprite – displayed sprite; struct SpriteInfo – additional information about the sprite. Functions: Sprite* (*GetDrawingSprites)(uint& count); - currently drawn sprites, if no sprites (on the global, menu), then NULL is returned and count == 0; SpriteInfo* (*GetSpriteInfo)(uint sprId); - getting additional information about certain sprite; uint (*GetSpriteColor)(uint sprId, int x, int y, bool affectZoom); - getting pixel’s colour, with the ability of taking zoom into account; it isn’t available for 3d models yet; format - ARGB; bool (IsSpriteHit)(Sprite sprite, int x, int y, bool checkEgg); - test whether the point on the display matches with the current sprite with taking zoom, transparence and egg of transparence into account (optional). The reserved native global variable GameOpt was renamed to Game. Global variables int __MouseX, __MouseY for current mouse position indication were added. Function void GetMousePosition(int& x, int& y) was deleted. Indication of opened console bool __ConsoleActive was added to client’s scripts. Bug with memory leak when rendering 3d graphics to sprites was fixed. Rev.129 http://www2.xp-dev.com/sc/change/94227/129 Added ability to use robot-guards from Sierra as bodyguards (for those who had completed quest "No-sweat job" in Navarro) Added quest "Amnesty for Joshua" (VC, Amanda) Work of teleport on special encounter "Mad scientist's laboratory" was restored. Rev.128 http://www2.xp-dev.com/sc/change/94227/128 Second stable SDK assembly. For the purpose of decreasing repository's size, assemblies will be stored in another places. Links you can find in text files. Rev.127 http://www2.xp-dev.com/sc/change/94227/127 Quest "No-sweat job" in Navarro. Rev.126 http://www2.xp-dev.com/sc/change/94227/126 Mercenaries and companions mechanism (merc.fos) was updated. Now every companion has term of service. Companions don’t meddle in player’s showdowns with NPC’s. Fixed quest “Dip.Courier”. Now it can be finished. Fixed quest “Dock’s attack”. Now it can be finished after killing 5 giant insects. Added 3 new mercs for Lo Pan. Updates NPC-travellers mechanism (traveller.fos). The first NPC-traveller was added (eli.fos). Functions which cooldowns checkup for NPCs in dialogues were fixed. When character dies, all items with flag ITEM_GAG are deleted. Fixed cooldowns for quests “Hub bibliography”, “Sick Brahmin” and in the dialogue with dr.Klaus for stimpacks and first aid kits delivery. When NPC repairs an item, ammo is ejected. Script for NPC monologues realization was added. (monologue.fos) Rev.125 http://www2.xp-dev.com/sc/change/94227/125 Fixes of password encryption in the client's files. Rev.124 http://www2.xp-dev.com/sc/change/94227/124 Fixed bug with graphics loading in the previous update. Rev.123 http://www2.xp-dev.com/sc/change/94227/123 DAT2.1 (Arcanum) files support was added. ART (Arcanum) graphic format was added. Function for operating with strings splitEx was added. Principle is the same as in split, but empty elements are not included in the result array. Also spaces/tabs/string_hyphenation are deleted from the result elements. Examples: split(“A|B||D”, “|”) -> {“A”, “B”, "", “D”} splitEx(“A|B||D”, “|”) -> {“A”, “B”, “D”} split(“A| B\t\t||D| E|F ”, “|”) -> {“A”, “ B\t\t”, "", “D”, “ E”, “F ”} splitEx(“A| B\t\tC||D| E|F ”, “|”) -> {“A”, “B”, “D”, “E”, “F”} Additional DrawSprite functions for the client and mapper were added. You can transfer true with the last argument and as the result, the shift which is stored in the current file will be added to the sprite’s position. void DrawSprite(uint sprId, int sprIndex, int x, int y, uint color, bool applyOffsets) void DrawSprite(uint sprId, int sprIndex, int x, int y, int w, int h, bool scratch, bool center, uint color, bool applyOffsets) Fixed bugs with incorrect ini settings parsing in the scripts. Rev.122 http://www2.xp-dev.com/sc/change/94227/122 Client scripts updates: For the reserved function void render_iface(uint layer) was added calling with value layer 100 to give the ability of drawing on the global map. Also the next global variables were added for operating with the global map: bool __GmapActive – whether global map is active and all the variables below are correct; bool __GmapWait – whether waiting mode of encounter affirming is active; float __GmapZoom – current zoom, don’t forget it to take into account while drawing a map; int __GmapOffsetX, __GmapOffsetY – map shift from the zero-coordinate (up-left corner); int __GmapGroupX, __GmapGroupY – player’s group coordinates; int __GmapMoveX, __GmapMoveY – destination point’s coordinates; float __GmapSpeedX, __GmapSpeedY – movement speed every 50 ms, without taking relief into account For example, calculating the current pixel group’s position - (x = __GmapGroupX / __GmapZoom + __GmapOffsetX), (y = __GmapGroupY / __GmapZoom + __GmapOffsetY). Fixed bug with hanging when drawing 3d model, occurred in the last update. Fixed missing bracket in English texts. (by Kilgore) Rev.121 http://www2.xp-dev.com/sc/change/94227/121 Added more mouse sensitivity and now you can see mouse’s speed percent in the settings. Updated FOConfig.exe. Added AlwaysRun option. Possible values for option Mouse speed were corrected. Option Sleep now can be set to -1, that means switching it off (maximum performance). Added ability of redirecting keyboard’s symbol codes input. For this, use option KeyboardRemap (in FOnline.cfg). It is performed after space – X Y X Y …, where X is the code which is substituted by Y. Code numbers - http://fonline.pastebin.com/Qy3E0qwj Interface description in default.ini is formatted and commented. (by LoadRunner) Location prototypes updates: Option max_copy was deleted. Option max_players was added. It limits the amount of players who can be on the location simultaneously. Players, who can’t enter location because of exceeding the limit will see message 904 from FOGAME.MSG {904}{}{Location is overcrowded, try to enter later.} Password encryption in server *.client. files was added. Mouse shift when switching between movement modes was fixed. Also, for more accurate work, the hex mask was added – look \Client\data\art\misc\hex_mask.png. Only red colour is taken into account and when it takes on certain value, the shift to certain direction is performed (50 – 5, 100 – 0, 150 – 3, 200 – 2). The mask is optional, you can work without it. Fixed loading/saving tiles in the maps text format. Fixed global map shifting behind screen’s edge. Registration of useless clicks in mapper when switching between windows, now isn’t performed. Fixed the animation of 3d critter standing when situating them on the map. Also now 3d critters don’t play standing animation in the critter’s list. Fixed displaying of critters which have only one direction. Fixed command ~reloadscripts. Now when you mark items for deleting (DeleteItem/DeleteItems), their quantity is saved. So, in the moment when real deleting is performed, server will delete the requested number of items. Now knockout during turn-based fight leads to immediate loosing action points, not after finishing the turn. Also, frequent checks for the necessity of finishing the turn were added at the server - if critter’s dead, critter has negative AP, critter has no more AP. Scripts: Fixed critter’s flags (Critter extra flags, _defines.fos). Fixed special encounter scripts Guardian of Forever, Mad Brahmins. Script trader.fos was formatted. Reserved function was added to client scripts, which is called with attacks void hit_aim(uint8& aim) aim value can be redefined( Hit locations in _defines.fos). Function int Critter::GetScore(uint score) was added to server scripts. Specification Critter::AddScore(int score, int val) was changed to Critter::AddScore(uint score, int val). Function for calculation the size of drawn text was added to client and mapper scripts void GetTextInfo(string& text, int w, int h, int font, int flags, int& tw, int& th, int& lines) string& text – text; int w, h, font, flags – height, width, print, flags; int& tw, int& th, int& lines – total width, height and amount of strings in the current text. Rev.120 http://www2.xp-dev.com/sc/change/94227/120 Unused encounter tables for Fallout 1 and commented original’s scripts were deleted from worldmap_init.fos; Random encounters of “beasts versus beasts” type were enabled, which were presented in the scripts, but were absent in the original. Added some new kinds of non-unique random encounters. Now, if player uses to kill NPC’s of certain group or organizations on random encounters, then they become aggressive. Vault City guard’s automatic search is deactivated. Now you need to activate the dialogue to pass through. Fixes in English dialogues versions. Maps fixes. Rev.119 http://www2.xp-dev.com/sc/change/94227/119 Fixed lots of little mistakes in dialogues; Fixed bugs in some Den and Klamath quests; Maps fixes; Duplicate dialogues with different names were deleted. Rev.118 http://www2.xp-dev.com/sc/change/94227/118 Fixed modificator's argument from Parent-0-7 to Parent0-7. Rev.117 http://www2.xp-dev.com/sc/change/94227/117 Added dialogues to Arroyo doctor and his team. Slight fixes (dialogues, maps). Rev.116 http://www2.xp-dev.com/sc/change/94227/116 Library for importing different 3d models was enabled – Assimp http://assimp.sourceforge.net/ Formats that are supported: http://assimp.sourceforge.net/main_features_formats.html Built-in one is still used for X format, for other ones – this library. If you don’t need the library, you can delete it (file Assimp32.dll), client and mapper are able to work without it. Updated mechanism of linking models and animations, now you can link any animation to any skeleton from any file. fo3d format changes: Modificator ModelAnimation was deleted. Modificators Anim, RenderFrame, RenderFrames were expanded – now file name which consists needed animation is placed before the animation’s name (if you state “ModelFile”, then search is performed in the file of loaded model)/ Specification of indicating parent texture (Texture X Parent) was expanded. Now you can additionally state the mesh number and its part, from which the texture is taken - Texture X ParentY-Z, where X is the texture’s number, Y is mesh number, Z is mesh part number; parameters Y-Z are optional, you may don’t use them at all or you may use them partly (Parent, Parent0, Parent-5). Fixed bug with incorrect script processing when operating with Critter::ShowScreen. Fixed bug with incorrect operating and crashing when using Log function with some special symbols. Added Combat Armor 3d model (by Gray). Rev.115 http://www2.xp-dev.com/sc/change/94227/115 Added special encounter "Warehouse of lost doughnuts" (author - Ponchik). Scripts for some original special encounters (author - Cracker). Remade some prototypes. Windows without glasses in Vault's walls can be shooted through now. Slight fixes. Rev.114 http://www2.xp-dev.com/sc/change/94227/114 Maps for quests from the 113 revision. Rev.113 http://www2.xp-dev.com/sc/change/94227/113 Klamath: quests - "Worker searching", "Husband's alert", "Brahmins vaccination" (author - Ponchik). Slight fixes. Rev.112 http://www2.xp-dev.com/sc/change/94227/112 Finished appearance of random encounter "Ocean Trader". Slight maps, dialogues and graphics fixes. Added buttons for BarterGround, GECK town, Warehouse and Hell for the global map (author - Ponchik). Slight fixes. Rev.111 http://www2.xp-dev.com/sc/change/94227/111 Added additional mechanism for data files loading (dat, zip). It is necessary for loading data files loading before scripts initializing and processing start() function as some date is needed to be used before this (effects, prints and some other resourses). For adding files to loading – create DataFiles.cfg file in which you should list all necessary file names. The program searches for the content from the last to the first data file. This mechanism uses server, client, mapper. If list isn’t found then no alerts will be displayed. If one of the files from the list can’t be found or load error appears, then alert will be shown. Option PatchDatPath was deleted, loading of this file is moved to DataFiles.cfg. Rev.110 http://www2.xp-dev.com/sc/change/94227/110 Fixed model's borders calculating which caused nick or text shift above critter's head. Rev.109 http://www2.xp-dev.com/sc/change/94227/109 Fixed skin setting-up when registration 3d character. Fixed order of loaded packs (dat, zip) scanning while searching and parsing ini files. Addition to 106 revision – for stating specific keys for certain resolutions now are used not separate files with different names, but marks in the main file. At the start of the string write “resolution”, than min. width and height for starting using these options. By default these values are equal to zero. For example: "resolution 1024 768 key = value..." It means, that “key = value ...(and so on till the next keyword ”resolution”)” will be included in the final ini. Found data will be inserted in the main file as screen width grows. Rev.108 http://www2.xp-dev.com/sc/change/94227/108 Actual cash files. Rev.107 http://www2.xp-dev.com/sc/change/94227/107 SDK is switched to 3d players mode. Normal version will be restored after finishing mechanism debugging process. For switching off 3d players models – comment the next strings in Server\scripts\_defines.fos #define PLAYERS_3D // Enable 3d players #define PLAYERS_3D_NO_HEAD // No head slot #define PLAYERS_3D_VAULT_SUITE // Vault suite by default, not naked 3d updates: Fixed and reduced the size of attributes and weapons. Added missing attributes of opened pipboy. In the left hand now is displayed the item, which player has in the second slot. Armor’s models are divided between the current armor items in the such way, that gamer could see the difference. For example combat armor consists of power armor and the helmet, robes are replaced by jail suit and etc. Fixed animation playing during creating the new character in single mode. Added skin change processing in start intro and after Kitty’s haircut. Added skeleton’s skins. Added sound for men and women. Fixed sound name for critters parameter’s loading (CritterTypes.cfg, SoundName). Now characters walk slowly with double click if alwaysrun option is turned on. Rev.106 http://www2.xp-dev.com/sc/change/94227/106 Added ability to make 3d characters available to play for. To enable it (it is disabled as default) - comment certain strings in _defines.fos // #define PLAYERS_3D // Enable 3d players // #define PLAYERS_3D_NO_HEAD // No head slot // #define PLAYERS_3D_VAULT_SUITE // Vault suite by default, not naked Updated mechanism of working with ini files. Now, when searching for the keys, excess spaces and tabulations are skipped (now you can type “ key = value ”, previously was correct only variant “key=value”) Added function bool AppendIfaceIni(string& iniName), which enables additional ini files. If the name includes slashes, than the search is being performed from data root, if not - than from folder data/art/interface/. default.ini is added automatically by the engine, others you can enable in start() client function. Loading is performed sequentially from default.ini to ones enabled by user by turn. Every packed file is checked by the turn of loading, then in the folder. Global variable string __UserInterface was deleted. Fixed bug with incorrect parsing of animation indexes in fo3d file. Fixed bug with incorrect position of the egg of transparence in zoom mode. For better readability the next scripts were formatted: start_server_client.fos client_main.fos In the future this practice will be continued. Rev.105 http://www2.xp-dev.com/sc/change/94227/105 Documentation update - slight fixes. Rev.104 http://www2.xp-dev.com/sc/change/94227/104 Added structure of script array (ScriptArray) to native scripts. Added ability to client's native scripts of calling hex data - Field. Data is stored in Field* GameOptions::ClientMap, uint GameOptions::ClientMapWidth/ClientMapHeight. If map is loaded, than ClientMap != NULL, hex calling - ClientMap[hexY * ClientMapWidth + hexX]. Rev.103 http://www2.xp-dev.com/sc/change/94227/103 Added always run option - can be enabled in client's config file “AlwaysRun”. Disabled as default. Added global variables for AlwaysRun regulating: bool __AlwaysRun (as default - false) - enabling AlwaysRun ability; uint __AlwaysRunMoveDist (as default = 1) - run with click, if distance is equal or more than the value; uint __AlwaysRunUseDist (as default = 5) - run with using smth/dialogue/etc, if distance is equal or more than the value. TLA's mechanics is equal to original - always run with click, always run with using if distance is more than 4 hexes. Added parameter uint Critter::ItemTransferCount to native scripts. It stores the value of transferred items during the last transaction. Rev.102 http://www2.xp-dev.com/sc/change/94227/102 Optimized server operation (script calling) in one tread operation mode, performance increased up to 400%. Fixed bug with crash when calling Critter::Say* methods with parametr SAY_SAY_TITLE. Rev.101 http://www2.xp-dev.com/sc/change/94227/101 Changes in fo3d format, new specification was created - look this theme: http://www.fonline.ru/forum/showthread.php?t=19689 New format added new abilities of working with 3d objects - trasmission of texures, other paremeters, etc. Also added ability to render certain animation to sprites as for one frame, either for the whole animation. But the bug with cutting off the shade situated below the lowest edge of model still presents. Updated old fo3d files, also VanBuren's critters and weapon models were added. Changed effects structure, added effect for normal mapping (3D_NormalMapping.fx). Added transfer of real numbers through scripts, float __EffectValue0..9. Fixed bugs with loading 3ds files - miss of meshes except the first; crash if texture coordinates are not presented. Fixed bug in Mapper with data copying when copy-pasting a large number of objects. Fixed text centering of hexes amount in zoom mode. Rev.100 http://www2.xp-dev.com/sc/change/94227/100 Documentation update. Rev.99 http://www2.xp-dev.com/sc/change/94227/99 Updated documentation file, which was missed in the previous revision. Rev.98 http://www2.xp-dev.com/sc/change/94227/98 Added resourse gathering system; Documentation updating. Rev.97 http://www2.xp-dev.com/sc/change/94227/97 Fixes of "Night is tender" quest, now healing must work properly. Added preview from global map for GECK location. Rev.96 http://www2.xp-dev.com/sc/change/94227/96 Gecks counting on the location now affects its auto moving away and visibility separately; Parameter geck_enabled (Map::GeckEnabled) renamed to geck_visible (Map::GeckVisible). Rev.95 http://www2.xp-dev.com/sc/change/94227/95 Added global server function void SetChosenSendParameter(int index, bool enabled) which can denie transmitting parameters to client. Transmitting of all parameters is enabled by default. Rev.94 http://www2.xp-dev.com/sc/change/94227/94 Fixes of sea encounter maps. Rev.93 http://www2.xp-dev.com/sc/change/94227/93 Added sea encounters; Added posibility of an encounter while travelling on air/water transport; Player always have possibility of cancellation water/air encounter and never gains experience for that; Bug fix in mapper with incorrect editing critter's parameters. Rev.92 http://www2.xp-dev.com/sc/change/94227/92 Fixed displaying rating in pipboy. In mapper additional indication of cut sprites was added to make lines, which are needed for correct interaction, visible. Rev.91 http://www2.xp-dev.com/sc/change/94227/91 Added traffic encryption between server and client. Rev.90 http://www2.xp-dev.com/sc/change/94227/90 Fixed choosing automatically cut sprites in zoom mode. Rev.89 http://www2.xp-dev.com/sc/change/94227/89 Added parametr DrawOrderOffsetHexY for shifting order of drawing lower (Y axis). This is an analogue for recently deleted DrawPosOffsX. Fixed using car trunk. Different slight fixes. Rev.88 http://www2.xp-dev.com/sc/change/94227/88 Fixed exit from Redding; slight fixes. Rev.87 http://www2.xp-dev.com/sc/change/94227/87 Fix for weapon AP cost. Rev.86 http://www2.xp-dev.com/sc/change/94227/86 May be fixed bug with incorrect displaying of some tiles. Fixed bug with unworking elevators. Added restoration of effects when loosing a device (cause crashed e.g. with alt+tab) Rev.85 http://www2.xp-dev.com/sc/change/94227/85 Fixed bug with chat disappearing. Fixed AI bug when combat plans always finished with REASON_CANT_WALK. Rev.84 http://www2.xp-dev.com/sc/change/94227/84 Fix for DT params reading. Rev.83 http://www2.xp-dev.com/sc/change/94227/83 Safety checks for radio commands. Rev.82 http://www2.xp-dev.com/sc/change/94227/82 Fixes of some dialogues; translations of dialogues on Barterground; map fixes; fixes of encounter table; slight fixes. Rev.81 http://www2.xp-dev.com/sc/change/94227/81 Fixed another bug during moving on the global map. Fixed unplanned activating of b/w effect. Rev.80 http://www2.xp-dev.com/sc/change/94227/80 Fixed teleportation bug during moving on the global map. Rev.79 http://www2.xp-dev.com/sc/change/94227/79 Fixed bug with incorrect tear and wear and fuel consumption calculation during moving on the global map by car. Rev.78 http://www2.xp-dev.com/sc/change/94227/78 Fixed brightness output. Fixed outlining activation. Rev.77 http://www2.xp-dev.com/sc/change/94227/77 Added automatic sprite cutting. Main purpose – correct displaying of long walls. Parameter SpriteCut was added to prototypes and mapper (only for scenery) for modification. Cutting values: 0 – switched off, 1 – horizontal (X axis), 2 – vertical (Y axis). Wall blocks should be set manually , for that purpose six blocks with different corner types with visual indication were added. It is necessary for correct calculation of brightness and egg of transparence reaction. Numbers 6800..6805 at the end of Wall and Fast list. Fixed client instability after recent update. Primary indexes array for animations was expanded to the range ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789. For value changing use native means (structure CritterType in fonline.h). Support of effects (HLSL) loading with earlier version of compiler. Automatic attempt of compilation is performed after failure in compilation with the current library. Added data updating for client function GetIniStr in the start function (start) after each call of LoadDataFile. Mapper update: Fixed bug with error in loading tiles with extension not in lower case. Fixed algorithm of sprite displaying calculation (when big sprites were disappearing near the screen edge). Additional visual means for debugging: - Ctrl + Q: Corners type viewing; - Ctrl + W: Viewing the result of sprite cutting, linking them to hexes; - Ctrl + E: Viewing the sequence of sprites drawing. At the time of renewing NPC’s bag, only items which are not in inventory are repaired and reloaded. Added ability to set sprite shift in screen coordinates to prototypes. Fixed bug with double notification of quest state change. Rev.76 http://www2.xp-dev.com/sc/change/94227/76 Added quest “Night is tender” Rev.75 http://www2.xp-dev.com/sc/change/94227/75 Tables for sea encounters, slight fixes. Rev.74 http://www2.xp-dev.com/sc/change/94227/74 Source documentation. Rev.73 http://www2.xp-dev.com/sc/change/94227/73 SPECIAL calculating is moved to native scripts - fonline_tla.dll for server and fonline_tla_client.dll for client (must be situated in data\scripts). The other parameters which are used in the engine are needed generally for drawing GUI, but soon they’ll be moved to scripts too. Native scripts files are moved from data folder to scripts. Added bat-file make_tla.bat for their compilation (installation of MSVS8 is necessary). For example of use new methods for critter classes are added (IsInjured, IsDmgArm...), items (IsHtHAttack, IsGunAttack...) with pragma bindfunc. Example of linking global varieties of standard and native scripts is added (__HitAimEyes, __HitAimHead..., these global varieties are moved to scripts). Callback functions are added (to GameOptions) for item usage cost determination - GetUseApCost. For attack max range determination - - GetAttackDistantion. It further such functions will force out usage of critter parameters in the engine. These functions are binded at the stage of connecting of library to the engine (DllMainEx). For operating with the engine added the next functions (to GameOptions): CritterChangeParameter – for correct change of critter parameter, this function should be called firstly, then you can change the value. CritterTypes – index of CritterType structures where data from CritterTypes.cfg is stored. Added method to client’s critters for detection whether now is time of its move in the turn-based mode bool CritterCl::IsTurnBasedTurn() const Some logics of operating with turn-based mode is moved to the scripts - turn_based_process main.fos. Some recommended specifications for the reserved functions are changed - templates.fos. Min. time of dialogue or barter with NPC now is regulated by the global varieties __DlgTalkMinTime (now default 100 seconds) и __DlgBarterMinTime (now default 50 seconds). Range for all prototypes (maps, locations, items) is expanded to 30000. Fixed bug with incorrect drawing of minimap in the pipboy. Fixed bug with incorrect calculating of healing rate while registration. Fixes of Zerg’s special encounter. Rev.72 http://www2.xp-dev.com/sc/change/94227/72 Data library for script compilation (updated on 27 October) Rev.71 http://www2.xp-dev.com/sc/change/94227/71 Added Zerg special encounter. Fixed bug with incorrect names in Fixboy. Added function LoadDataFile to server scripts, analogue of client/mapper. Fixed mistiming of player movement on global map. Deleted function Critter::SendQuestVar, now alert about changing of local variable is automatic. Changed function specification void ShowScreen(int screenType, uint param, string& funcName) to void ShowScreen(int screenType, uint param, string@+ funcName), now can transmit both empty string or null. Rev.70 http://www2.xp-dev.com/sc/change/94227/70 Documentation is updated. Deleted incorrect splash-picture. Added urgent files for scripts autoaddition in Notepad++. Rev.69 http://www2.xp-dev.com/sc/change/94227/69 Added ability to use your own shaders for game graphics drawing. High Level Shader Language is used for this. Effects folder is situated in data\effects. After the first compilation they are cashed in the folder data\cache (in futher other different data will be cashed there). You can read specifications on the game engine effects in data\effects\ReadMe.txt. Added ability to link any effect to sprite or model in .fofrm and .fo3d (“effect=effect_name.fx”). For default effect changing, function void SetEffect(int effectType, int effectSubtype, string@+ effectName) was implemented into the client scripts. int effectType, effectSubtype – effect types look in _client_defines.fos (Subtype for fonts used font type); string@+ effectName – the name of the effect file (with extension) is in the folder data\effects. Added changing of detailization of game objects for demonstration. For activation press Alt+W, for return press Alt+Q. Added client function for map redrawing void RefreshMap(bool onlyTiles, bool onlyRoof, bool onlyLight) if all three parameters are false, than everything will be redrawed. Also these three parameters are incompatible. Fixed bug in mapper with impossibility of viewing 3d critters in prototypes table. At present time they can’t be ranged. Added ability to play sounds/music from different folders. void RefreshMap(bool onlyTiles, bool onlyRoof, bool onlyLight) If there isn’t slashes (‘/’,‘\’) in path name than search is performed in the folder sfx/music. If there are slashes, than in the root (“data/mysounds/mysound.ogg”). Rev.68 http://www2.xp-dev.com/sc/change/94227/68 Fixed bug in the ObjectEditor when damage type is saved incorrectly. Rev.67 http://www2.xp-dev.com/sc/change/94227/67 Fixed crashing when calling CritterCl::[Param/Stat/Perk/etc]Base in client scripts; Fixed error with recording Anydata of zero length (by Atom). Rev.66 http://www2.xp-dev.com/sc/change/94227/66 Fixed incorrect weapon prototype; errors in checking for special encounters; added decraft of the sand sack to fixboy; other little fixes. Rev.65 http://www2.xp-dev.com/sc/change/94227/65 Redding: finished map according to the last concept; - Garbage was returned to static locations; - Ammo craft on benches (beta-version); - Destruction of the sack using skill repair now gives use empty sack. - Entering Den message was moved to texts from script. Rev.64 http://www2.xp-dev.com/sc/change/94227/64 AngelScript updated to 732 revision. Added new methods for arrays: void T[]::insertAt(uint, const T&) – element inserting in specified position in the array; void T[]::removeAt(uint) – deleting the element by index; void T[]::insertFirst(const T&) – element inserting to the beginning of the array; void T[]::removeFirst() – deleting the first element; void T[]::insertLast(const T&) – element inserting to the end of the array; void T[]::removeLast() – deleting the last element; void T[]::grow(uint) – add elements (the sames as a.resize(length()+X)); void T[]::reduce(uint) – delete elements (the same as a.resize(length()-X)); T& T[]::first() – call of the first element of the array (the same as a[0]); T& T[]::last() – call of the last element of the array (the same as a[a.length()-1]). Also deleted all functions ArrayPushBack as the built-in array functional was expanded. All the scripts were fixed accordingly. Rev.63 http://www2.xp-dev.com/sc/change/94227/63 Added ability to start the server as a service. For registration/start use key “-service” (shortcut FOServerService.exe.lnk). For deleting use keys “-service -delete” (shortcut FOServerServiceDelete.exe.lnk). Added ability to log using function OutputDebugString. The log can be caught (even remotely) using program DebugView http://technet.microsoft.com/en-us/sysinternals/bb896647.aspx For switching it on in server and client configs option LoggingDebugOutput is added. Server/client/mapper will work normally now with incorrect active folders. At start you set the current folder of executable. Fixed bug with absence of replacement “x” by “ч” in built-in punto switcher. Fixed crash in turn based mode and incorrect work of Map::GetCritter(uint critterId). Rev.62 http://www2.xp-dev.com/sc/change/94227/62 Fixed bug with updating vehicle data on the global map. Fixed bug with system hanging while looking items quantity in game info. Fixed bug with the incorrect login/disconnect. Fixed bug with incorrect creating non-stacking items on the map in the number of >1. Fixed bug with incorrect critters gathering when path tracing (by Atom). CRITTER_EVENT_TALK now performed before checking NPC for settings which could restrict speaking with it. Added new mechanism for script garbage gathering (by Atom). For config file simplification, the next options were removed: ASGarbageTime, VarsGarbageTime. Deleted transfer of a group of critters into global map processing global_process, CRITTER_EVENT_GLOBAL_PROCESS. Also instead of transferring a group into global map processing global_invite, CRITTER_EVENT_GLOBAL_INVITE, now only the leader is transferred. Instead of picking group use Critter@[]@ Critter::GetGlobalGroup(). Because of that, specification methods were changed: bool Critter::EventGlobalProcess(int type, Critter@[]& group, ...) bool Critter::EventGlobalInvite(Critter@[]& group, ...) for bool Critter::EventGlobalProcess(int type, Critter& cr, ...) bool Critter::EventGlobalInvite(Critter& leader, ...) Reserved functions of critter event CRITTER_EVENT_GLOBAL_PROCESS, CRITTER_EVENT_GLOBAL_INVITE bool _FuncName(Critter& cr, int type, Critter@[]& group, ...) bool _FuncName(Critter& leader, Critter@[]& group, ...) for bool _FuncName(Critter& cr, int type, ...) bool _FuncName(Critter& leader, ...) Fixed bug with incorrect cooldown for hijacking, now it is equal for a normal lock. Added checking for unopenable door to the lock break script. Rev.61 http://www2.xp-dev.com/sc/change/94227/61 Fixed bug with incorrect reappraisal of item flags in Mapper. Fixed bug when player isn't notified about moved item. Rev.60 http://www2.xp-dev.com/sc/change/94227/60 Fixed bug with incorrect displaying of the rain on roofs. Rev.59 http://www2.xp-dev.com/sc/change/94227/59 Mapper's fix for correct operating with new folder and print's names. Rev.58 http://www2.xp-dev.com/sc/change/94227/58 For editing use program Bitmap Font Generator v1.12. http://www.angelcode.com/products/bmfont/ Print should have the next attributes - OEM RUSSIAN, Padding 1 (in all directions), Binary, all symbols should be placed on the one texture. All prints are moved in the separate folder “Client\data\fonts\”. For the example print FONT_COURIER_NEW_SMALL is added. Look _client_defines.fos, client_main.fos, CourierNewSmall.bmfc, CourierNewSmall.fnt, CourierNewSmall_0.png. Added function in client’s scripts of activating the clock which shows you the time signal comes to server and returns (ping). You can use it for restriction of input while waiting for server’s answer. Fixed crushing when looking players statistics on server. Fixed crushing of Dialogue Editor (by Atom). Rev.57 http://www2.xp-dev.com/sc/change/94227/57 Expanded mechanism of operating with ingame radio. Added flag ITEM_RADIO for radio. (in _defines.fos). Radio messages are now also sent to radios which are on the ground . For their identification engine sends them with color 0xFFFFFFFE (in map_message in client_main.fos). Realization is in script radio.fos (interface, mechanics), call from main.fos. Interface data is taken from default.ini (Radio*). You can edit it with using item or using science skill on it. Radio data is situated in general fields of several item types. That’s why it isn’t a good idea to use this flag with Doors, Keys, Cars, Weapons, Armors, Holodiscs. Transmitting and receiving functions are separated. For managing the next flags and range types are used (_defines.fos): Restriction of transmitting/receiving is stored in Item/ItemCl::RadioFlags, used by the engine: RADIO_DISABLE_SEND, RADIO_DISABLE_RECV. Restriction of switching radio state in в Item/ItemCl::RadioFlags: RADIO_DISABLE_SHIFT_SEND, RADIO_DISABLE_SHIFT_RECV - restriction of switching transmit/receive; RADIO_DISABLE_SHIFT_BC_SEND, RADIO_DISABLE_SHIFT_BC_RECV - restriction of changing distance range; RADIO_DISABLE_SHIFT_CHANNEL – restriction of channel switching. Range types are stored in Item/ItemCl::RadioBroadcastSend/RadioBroadcastRecv, are used by the engine: RADIO_BROADCAST_WORLD – works all over the world; RADIO_BROADCAST_MAP – works within the limits of the current map; RADIO_BROADCAST_LOCATION - works within the limits of the current location; RADIO_BROADCAST_ZONE(x) - works within the limits of “x” zones on the global map; RADIO_BROADCAST_FORCE_ALL – works everywhere regardless of the adjustments of transmitting or receiving radio/ Added support of these flags to the object editor (both engine and script ones). Added scripts uint16 ProtoItem::RadioChannel, uint16 ProtoItem::RadioFlags, uint8 ProtoItem::RadioBroadcastSend, uint8 ProtoItem::RadioBroadcastRecv. For holodisc marking added flag ITEM_HOLODISK (in _defines.fos). Holodisc data is situated in general fields of several item types. That’s why it isn’t a good idea to use this flag with Doors, Keys, Cars, Weapons, Armors, Holodiscs. Added support of this flag in object editor. Added script uint ProtoItem::HolodiskNum. Added ability to use built-in cartridge indicator for other purposes. Added the next parameters: uint8 ProtoItem::IndicatorStart – initial value, - Item/ItemCl::Indicator; uint8 ProtoItem::IndicatorMax – maximum available value (for correct calculation of the strip position); uint8 Item/ItemCl::Indicator – current value. Mechanism is considered activated if maximum value in the prototype isn’t equal to zero. Added support of editing of initial and maximum values in the object editor. Method Item::GetMapPosition for the items which are in the global map returns their coordinates. Fixed bug with system hanging while looking online statistics. Added storing up to 20 ip addresses for one account (fonline.h). Item prototype’s fields, which are equal to zero, now cannot be saved. All prototypes are resaved. Continued working on multithreading in game logics. Added ignoring of non-initialized maps or locations while loading save (NPC’s would be moved to global map, items - deleted). Fixed bug in the dialogue on BiX location. Updated abilities of GUI scripting. In script _defines.fos notes “Used in engine” are replaced by “Hardcoded”; point is the same - to show that this data is used by engine also. Corrected some specifications in template.fos of reserved functions. Rev.56 http://www2.xp-dev.com/sc/change/94227/56 Changes in craft: some new recipe's (new weapon, etc.), added workbenches in some town/military bases. Rev.55 http://www2.xp-dev.com/sc/change/94227/55 - Updated Redding maps; - Deleted unused graphics; - Added second entrance to NCR; - Some changes in NPC's inventories on encounters. Rev.54 http://www2.xp-dev.com/sc/change/94227/54 - Slight fixes in Hartman's and Shrim's dialogues (Vault City); - Fixed problem with immediate sending off caravans/patrols Ahe9mPDq; - Changed content of the quest variable for the quest "Third trial. Drill." - Restored functions for triggers t_DialogNpc and scenery s_TransitToMap. Rev.53 http://www2.xp-dev.com/sc/change/94227/53 Fixes of KotW location. Quest for oil can can be done by everybody in Arroyo now. Rev.52 http://www2.xp-dev.com/sc/change/94227/52 Fixes of Brok and Xander Church location (by VaultTec) Rev.51 http://www2.xp-dev.com/sc/change/94227/51 Fixed names loading (*Names.lst) with the dialogue editor. Changed extention of its config file. Rev.50 http://www2.xp-dev.com/sc/change/94227/50 Fixed bug with duplicating of time events. Rev.49 http://www2.xp-dev.com/sc/change/94227/49 Slight optimization of multi-threading. Rev.48 http://www2.xp-dev.com/sc/change/94227/48 Fixed error in loading of games variables values. Fixed loading of saves games in single player mode. Rev.47 http://www2.xp-dev.com/sc/change/94227/47 Time events changes. - function specification void EraseTimeEvent(uint num) changed to bool EraseTimeEvent(uint num) Return value shows whether deleting is done or the event isn't found. - Deleted the next functions: uint CreateTimeEvent(uint beginSecond, string& funcName, Critter& cr, bool save) uint CreateTimeEvent(uint beginSecond, string& funcName, Item& item, bool save) uint CreateTimeEvent(uint beginSecond, string& funcName, Critter@[]+ critters, Item[]@+ items, bool save) For migration just put the identificator to the critter or item. Added the next functions for operating with event's values: bool GetTimeEvent(uint num, uint& duration, uint[]@+ values) bool GetTimeEvent(uint num, uint& duration, int[]@+ values) bool SetTimeEvent(uint num, uint duration, uint[]@+ values) bool SetTimeEvent(uint num, uint duration, int[]@+ values) Parametr "duration" - time till the event is done in seconds. Return value means that operation is completed, error means that event wasn't found. These functions are thread-safe, 2 thread can't operate with the events simultaneously. Function GetTimeEvent blocks using (changing) of the event until the script is finished or until SetTimeEvent is called, which unblocks the event. GetTimeEvent writes value to the end of the array, SetTimeEvent rewrites it completely. When null is transmitted to values SetTimeEvent values are not changed. - Event function specification can be of two types now: uint e_FuncName(uint[]@ values) uint e_FuncName(int[]@ values) Fixed bug with crashing while loading 3ds file without texture coordinates. Rev.46 http://www2.xp-dev.com/sc/change/94227/46 Added next fuctional for operating with files (class "file"): - for data reading uint8 file::readUint8() uint16 file::readUint16() uint32 file::readUint32() uint64 file::readUint64() In the case of error or the end of file it returns 0. uint file::readData(uint count, uint8[]& data) If data == 0 then program read all data till the end of the file beginning from the current position. Read data is added to the end of the array. The return value shows the real amount of read bytes. - For data recording bool file::writeUint8(uint8 data) bool file::writeUint16(uint16 data) bool file::writeUint32(uint32 data) bool file::writeUint64(uint64 data) bool file::writeData(uint8[]& data, uint count) If count == 0 it records all data from an array. In the case of error it returns false. Fixed bug with incorrect output of zoom value on minimap. Rev.45 http://www2.xp-dev.com/sc/change/94227/45 Extended range of game variables: - local variable of location (LLVAR_); - local variable of map (LMVAR_); - local variable of item (LIVAR_). When using them in dialogue values are taken from: for location - current critter's location; for map - current critter's map; for item - current item in the main slot. For operating with scripts use function GetLocalVar with transmitting of needed operator. Server will delete unused variables of all types automatically. Deleted server function uint DeleteVars(uint id). Dialog editor was adapted to the last updates of game variables. Added ability to define named value (DefineNames.lst) as a value for conditions and results. Added missed translations. Translations of commit history you can find here: http://www.xp-dev.com/forum/topic/3220 Rev.44 http://www2.xp-dev.com/sc/change/94227/44 Updated format of time output in dialogue with repairer-npc; Added script for realization of npc-travellers on global map.(traveller.fos and Davine's script in sf_common.fos); Added npc-traveller explosives-seller Davine. Can be hired in GECK town; Added trade mode "cash only" MODE_BARTER_ONLY_CASH; Fixed bugs in maps structure on maps with holodiscs. Rev.43 http://www2.xp-dev.com/sc/change/94227/43 Added setting in config which defines whether to bind logic threads to the core or let OS do it. In default it is enabled (1) 1. If zero then operating system automatically manage threads between cores, else affinity thread per core LogicThreadSetAffinity=1 Continued work on multi-threading of game logics. Rev.42 http://www2.xp-dev.com/sc/change/94227/42 Fixed crashing under certain conditions; Fixed cycle counting per second. Rev.41 http://www2.xp-dev.com/sc/change/94227/41 Fixed bug connected with the last update. Rev.40 http://www2.xp-dev.com/sc/change/94227/40 Multi-threading of game logics is now supported. You can read about this in details on the forum; Fixed path of recording/reading ban files; Added seconds on the globalmap clock; Decreased permissible length of text listener of channels and maps from 5 to 2 symbols; Deleted global server function void DeleteNpcForce(Critter& npc); Changed specification of method from uint Location::GetMaps(Map@[]& maps) const to uint Location::GetMaps(Map@[]@+ maps) const Now you can know the amount of maps on the location without recording them into array; Added basic server command ~log (~37). It is intended for text listening of server log. Minimum access: administrator. For adding to text listening you should transmit arguement "+", for disconnecting "-"; Fixed basic creating locations command ~addloc (~16); Upgraded basic command of looking player's id using his name ~id (~4); Changed specifications of global functions void critter_attack(Critter& cr, Critter& target, ProtoItem& weapon, ProtoItem@ ammo, uint8 aim) -> void critter_attack(Critter& cr, Critter& target, ProtoItem& weapon, uint8 weaponMode, ProtoItem@ ammo) int to_hit(CritterCl& chosen, CritterCl& target, ProtoItem& weapon, int hitLocation) -> int to_hit(CritterCl& chosen, CritterCl& target, ProtoItem& weapon, uint8 weaponMode); Added variables for weapons which state their active mode const uint8 Item::Mode const uint8 ItemCl::Mode 4 high-order bits - sight (look Hit locations in _defines.fos), 4 low-order bits - mode (0 – primary, 1 – secondary, 2 – third); Added macroses for convenience _WeaponModeUse, _WeaponModeAim, _WeaponModeMake в _macros.fos; Added returnable value of the current mode in method GetSlotProto (urgent for weapons) ProtoItem@+ Critter/CritterCl::GetSlotProto(int slot, uint8& mode) const; Renamed parametr #define ST_RATE_ITEM (102) to #define ST_HANDS_ITEM_AND_MODE (102) value stored in it: XXXX00YY, where XXXX pid - unarmed blow, and YY - mode. Changed way of the dialogue redirecting. You should use returnable value of result function or say-mode instead of uint __ForceDialog; Added specifications of functions: uint r_FuncName(...), uint dlg_FuncName(...) which are detected by server automatically; Fixed bug with moving pushed players only in one direction; Object pointers (derivatives arrays or class members)Location, Map, Critter, Item, GameVar can't be saved in global varities now. For scripts migration save their identificators (Location::Id, Map::Id, Critter::Id, Item::Id), addresing to the objects with (GetLocation, GetMap, GetCritter, GetItem). Weapons prototypes don't save curret mode of fire (in connection with multi-threading). Changed specifications of class members ProtoItem const uint8 Weapon_Skill, const uint8 Weapon_DmgType, const uint8 Weapon_Anim2, const uint16 Weapon_DmgMin, const uint16 Weapon_DmgMax, const uint16 Weapon_MaxDist, const uint16 Weapon_Effect, const uint16 Weapon_Round, const uint8 Weapon_ApCost, const uint8 Weapon_SoundId, const bool Weapon_Remove, const bool Weapon_Aim, const uint8 Weapon_CurrentUse, void Weapon_SetUse(uint8 use) const to const uint16 Weapon_Skill_F, const uint16 Weapon_Skill_S, const uint16 Weapon_Skill_T, const uint16 Weapon_DmgType_F, const uint16 Weapon_DmgType_S, const uint16 Weapon_DmgType_T, const uint16 Weapon_Anim2_F, const uint16 Weapon_Anim2_S, const uint16 Weapon_Anim2_T, const uint16 Weapon_DmgMin_F, const uint16 Weapon_DmgMin_S, const uint16 Weapon_DmgMin_T, const uint16 Weapon_DmgMax_F, const uint16 Weapon_DmgMax_S, const uint16 Weapon_DmgMax_T, const uint16 Weapon_MaxDist_F, const uint16 Weapon_MaxDist_S, const uint16 Weapon_MaxDist_T, const uint16 Weapon_Effect_F, const uint16 Weapon_Effect_S, const uint16 Weapon_Effect_T, const uint16 Weapon_Round_F, const uint16 Weapon_Round_S, const uint16 Weapon_Round_T, const uint16 Weapon_ApCost_F, const uint16 Weapon_ApCost_S, const uint16 Weapon_ApCost_T, const uint8 Weapon_SoundId_F, const uint8 Weapon_SoundId_S, const uint8 Weapon_SoundId_T, const bool Weapon_Remove_F, const bool Weapon_Remove_S, const bool Weapon_Remove_T, const bool Weapon_Aim_F, const bool Weapon_Aim_S, const bool Weapon_Aim_T Added special macros for convenience (Weapon in _macros.fos) _WeaponIsPrimaryAviable, _WeaponIsSecondaryAviable, _WeaponIsThirdAviable, _WeaponSkill, _WeaponDmgType, _WeaponAnim2, _WeaponDmgMin, _WeaponDmgMax, _WeaponMaxDist, _WeaponEffect, _WeaponRound, _WeaponApCost, _WeaponSoundId, _WeaponRemove, _WeaponAim, _WeaponModeUse, _WeaponModeAim, _WeaponModeMake Mapper updates: string@ MapperObject::PicMap/PicInv now return prototype's picturename if other isn't set up; Added const uint16 MapperMap::Width, const uint16 MapperMap::Height for storing current map sizes; Fixed function GetMapFileNames(...). Rev.39 http://www2.xp-dev.com/sc/change/94227/39 Slight fixes of quests in Den, Klamath Improved closed location in Redding Rev.38 http://www2.xp-dev.com/sc/change/94227/38 Slight fixes of quests from string "Guard"; Added services for guardsmen: doc. Troy can heal player; give stimpacks; Valery repairs items; Added universal repairing script for npc (repairer.fos). E.g. in the dialogue vc_valery.foldg 3 new special encounters with holodiscs; Several deleted functions from stdlib are returned. Rev.37 http://www2.xp-dev.com/sc/change/94227/37 Fix of calculating amount of dead NPC on location when necessity of attack is being determinated. Fix of amount loss allies counter when finishing the quest. Output of messages to log is disabled in quest “The drill”. Fix of limit of times amount quest “Dangerous hunt” can be done. Descriptions of deleted maps were returned, which made server restart impossible without saves clearing. Rev.36 http://www2.xp-dev.com/sc/change/94227/36 Fix of Hartman’s dialog. The wrong requirement was deleted. Rev.35 http://www2.xp-dev.com/sc/change/94227/35 New quests from string “Guard” in Vaultcity - Vaultcity guard. Third trial. Drill. - Easy walk. - Go there, don’t know where. - Dangerous hunt. - Diplomatic courier. Fix of caravan’s and patrol’s departure time. Relative departure time was substituted for absolute. Added ability of caravan’s instant departure from the dialog. Fix of items that were generated in encounters 0 in number. (It was impossible to throw out them) Fix of quest “Hub bibliography”. Player need 7 books to gain reputation instead of 6. Rev.34 http://www2.xp-dev.com/sc/change/94227/34 - Maps fixes - Fixed reaction of BG guards on explosives activation Rev.33 http://www2.xp-dev.com/sc/change/94227/33 - Graphics fixes - Non-used files were deleted - Original map of BG was returned Rev.32 http://www2.xp-dev.com/sc/change/94227/32 Private car parking in geck town is disabled till the problem with car boot is solved. Rev.31 http://www2.xp-dev.com/sc/change/94227/31 Added first quests of string “Guardsman”, VaultCity. (Clearing of server saves is needed) Added template for making quests-combats with npc. (fighter_quest.fos, e.g. “Guard. First trial.”) Added ability to take quest “Hub bibliography” again if player failed to finish it at previous time. Fixed incorrect condition in Dappo’s dialogue in quest “Lot of defective rifles”. Added verification of addressee in “Postman” quest, now player can’t bring letter to any npc of type stated in the letter. Rev.30 http://www2.xp-dev.com/sc/change/94227/30 Deleted not used MSG files - FOSCRIPT.MSG. Rev.29 http://www2.xp-dev.com/sc/change/94227/29 Updates of way of making records into log. Added ability to look the name of the thread which made a record. Option in config – LoggingThread. You can also turn on output in the server application using “Logging with thread”. Changed format of time output. Now it is not “time in ms”, but “hours:minutes:seconds:milliseconds”. Rev.28 http://www2.xp-dev.com/sc/change/94227/28 Fix and formatting. Rev.27 http://www2.xp-dev.com/sc/change/94227/27 Fixed mistakes in calculating karma in quest "Returning of the fugitive". Rev.26 http://www2.xp-dev.com/sc/change/94227/26 Changes on Church of Brok and Xander location: - fixed Preacher, Scientist, repairer Alechandro, Cook, Mickey dialogs; - quests work correctly now; - repairer Alechandro identifies items correctly; - ability to record the information about Church was added (after completing Preacher's quest). Rev.25 http://www2.xp-dev.com/sc/change/94227/25 Activating time of dynamite was fixed. Rev.24 http://www2.xp-dev.com/sc/change/94227/24 New algorithm of generating of pseudorandom variables was added (Mersenne twister). Previously was standart C algorythm srand/rand. Rev.23 http://www2.xp-dev.com/sc/change/94227/23 Energy barrier on the entrance of GECK town was improved. Rev.22 http://www2.xp-dev.com/sc/change/94227/22 Fixed client crashing on start. For preventing this bug in future the control system of versions of cashed scripts in the client has been added. Rev.21 http://www2.xp-dev.com/sc/change/94227/21 Fixed problem when it was impossible to add players to GECK town after removing them with option "Clear list". Rev.20 http://www2.xp-dev.com/sc/change/94227/20 Fixed cooldown of the Postman quest. Rev.19 http://www2.xp-dev.com/sc/change/94227/19 Wrongly deleted dialogs are returned. Rev.18 http://www2.xp-dev.com/sc/change/94227/18 Fixes Deleted not used files. Fixed errors when player removes child killer karma additional times. Fixed error with incorrect name of script of map_v15_village map. Added output of message of increasing trade skill when finishing “Farm vermins” quest to the log. Weakened the giant wasp in the quest in Modoc. Rev.17 http://www2.xp-dev.com/sc/change/94227/17 AngelScript was updated to rev.684, v. 2.19.2 Added global variables to the client: bool __ShowTile, __ShowRoof, __ShowItem, __ShowScen, __ShowWall, __ShowCrit, __ShowFast, __ShowPlayerNames, __ShowNpcNames, __ShowCritId. Deleted limit of min. time of using Map::SetLoopTime (it was 1 second). Fixed registration of the global variables of string type (pragma globalvar). Fixed using reserved global variables string type. Added global variables to mapper: string __ClientPath, __ServerPath. Deleted constant modificators in client from string CritterlCl::Name, CritterlCl::Lexems. Added variable CritterlCl::NameOnHead, which if is not empty, outputted above critter’s head. Rev.16 http://www2.xp-dev.com/sc/change/94227/16 Fixed reclearing of child killer status. Rev.15 http://www2.xp-dev.com/sc/change/94227/15 Fixes: - Fixed names of Giant Wasps and bugs in kills statistic; - Reduced requirements of amount of killed mobs and intelligence in Broken Hills quests (bh_marcus.fodlg, bh_super.fodlg); - Reduced requirement of intelligence for “Fresh blood” quest (vc_doctor_troy.foldg); - Fixed possibility of gaining experience multiple times in “Cabbage” quest in Modoc (mod_farmer_q.fodlg); - Player receives reputation in NCR for quest “True cowboy” even if only one Brahmin is brought (ncr_felix.fodlg); - Michael’s miniquest in NCR can be done by every player only once (ncr_michael.fodlg); - Added requirement of 16 level for “buggy” quest (ncr_ratch.fodlg); - Fixed amount of gaining experience when player rejects gratuity in “Postman” quest (q_mail_reciever.fodlg); - Fixed cooldown of “Postman” quest; - Cave mobs – spawn point near the exit grid was removed in the smallest cave; - Fixes of several dialogues in Vault City; - New quest – “Fugitive returning” – when finished, status “Child killer” is removed. Hubbologist in Redding bank offers this quest; - New quest “Farm vermines”. It is offered by Joe in Modoc (mod_joe.fodlg); - Fixed energy barrier in GECK town; - Added computer for breaking of energy barrier inside the town; - Added car lots for GECK town citizens (not more than 2); - Added ability of clearing of citizens list by town leader using the terminal. Rev.14 http://www2.xp-dev.com/sc/change/94227/14 Update for Notepad++ (Syntax_highlighting, autocomplete, function parameters hints) Rev.13 http://www2.xp-dev.com/sc/change/94227/13 First stable version.h3. Your title here...

SidleJinks picture

Description: Rev.178 http://www2.xp-dev.com/sc/change/94227/178 Superfluous rifles on offer were fixed. Rev.177 http://www2.xp-dev.com/sc/change/94227/177 Game version increment. Rev.176 http://www2.xp-dev.com/sc/change/94227/176 Sequence of handlers calling was fixed MAP_EVENT_OUT_CRITTER, MAP_EVENT_IN_CRITTER now the first one is called initially, then the second On intro_init map static lighting was set. Group moving indication on the global map was fixed (previous update bug). Rev.175 http://www2.xp-dev.com/sc/change/94227/175 Console command ~globalmap was added. It moves player to global map. It works only on noPvP maps for players not in combat mode and with noPvP mode turned on. In caravans and travellers scripts functions of moving to final destination's map were updated. Rev.174 http://www2.xp-dev.com/sc/change/94227/174 Porting game to Linux was started. Also supporting of 64 bit platforms. Client’s native libraries are now transmitted automatically. They are stored in ‘Client/data/cache’. Folder with scripts ‘Client/data/scripts’ is not used anymore and was deleted. To the server’s folder library STLPort (http://www.stlport.org/) was added. Client’s libraries are now compiling with it’s help. It is connected with porting to other platforms. Additional methods of moving were added to critters in server scripts bool Critter::TransitToMap(uint mapId, uint16 hexX, uint16 hexY, uint8 dir, bool withGroup) bool Critter::TransitToMap(uint mapId, int entireNum, bool withGroup) bool withGroup – when moving from global map to local map, all the group will be moved. Regular TransitToMap (without bool withGroup) work as with withGroup == false. Previously they worked as как withGroup == true, what led to moving all the group when replicating, if dead critter was on the global map. 3d critters were switched off. For switching on see PLAYERS_3D in _defines.fos. Constants for operating with game constants were added(see 168 revision, http://www2.xp-dev.com/sc/change/94227/168). Specification for the reserved function Log in native scripts was changed. Now the first returned parameter is function’s name from which it was called. Rev.173 http://www2.xp-dev.com/sc/change/94227/173 Traders were added to Atoll and Redding. Barterground was moved to position 690:760 as it isn’t needed anymore in north-west region due to noPvP mode. Locations “BiX Church” and “Atom’s Church” were moved to special encounters class. Fixed rewards in some quests. Maps fixes. Biscuit on Modoc can be received only once now (as in Fallout 2). Rev.172 http://www2.xp-dev.com/sc/change/94227/172 noPvP mode was activated on some TLA maps. It will be used on the next TLA session. For switching it off on your server set global variable __NoPvpMaps=false; in script config.fos Ability of making a list of ignored players, it works similarly NameColorizing. It needs manual adding nickname of ignored player to IgnoreList.txt For refreshing the list of ignored players in game use console command ~ignorelist. Rev.171 http://www2.xp-dev.com/sc/change/94227/171 Derivative objects system for mapper was updated. When placing base object, all his derivatives are placed automatically. If one object from the group is being selected - all others are being selected too. If the prototype or position of the derivative object is changed, changes will be automatically applied by mapper or server when loading. For the example see cars, at the present time they have one derivative object – their trunk. Now when placing the car, it will be created automatically, also it will be moved with it and if base or derivative object is deleted, all the group will be deleted too. The system of moving selected objects in mapper was upgraded. Now in hexagonal system the selected objects will be moved without being tearing apart. Also the selected objects, when being moved, will stop at the map’s edge, so they won’t mix into a pile. The problem with detecting whether items in container belong to their inventory or container. Previously items were placing on the hex and if you place two containers on the same hex, all the items will stack in one container. Now it is fixed. Item::TrapValue initialization through mapper was fixed. If rewriting is performed on prototypes loading, alert is displayed. It was added for items and critters prototypes. In object’s structure in mapper was deleted field const bool Item_InContainer and added const uint UID, ContainerUID, ParentUID, ParentChildIndex Rev.170 http://www2.xp-dev.com/sc/change/94227/170 Now server doesn't block client's libraries while working. Previously you needed to stop the server to replace client's dll (Server/scripts/fonline_tla_client.dll). Rev.169 http://www2.xp-dev.com/sc/change/94227/169 Combined content of MASTER.DAT + CRITTER.DAT. Size - 201 MB! Rev.168 http://www2.xp-dev.com/sc/change/94227/168 Client and Mapper are no longer bounded with Fallout’s data files - MASTER.DAT and CRITTER.DAT. These files content is combined (excess data is deleted) and packed into fallout.dat (will be uploaded with the next update) and defined in DataFiles.cfg. Global variables string __MasterPath, __CritterPath were deleted. The configurator (FOConfig.exe) is updated accordingly fixes above. Critter’s lighting in the death moment and flat items lighting was fixed. To server/client/mapper scripts the next functions for operating with the constants (*Names.lst) were added: int GetConstantValue(int constCollection, string@+ name) – identifying constant’s value by the name; string@ GetConstantName(int constCollection, int value) - identifying constant’s name by the value; void AddConstant(int constCollection, string@+ name, int value) – adding separate constant to the collection; bool LoadConstants(int constCollection, string@+ fileName, int pathType) – loading/reloading the collection; int constCollection – collection’s number, see Constants collections in _defines.fos, also you can define your own collections; string@+ name – constant’s name; int value - constant’s value; string@+ fileName, int pathType – collection file’s name and folder path. Rev.167 http://www2.xp-dev.com/sc/change/94227/167 Bug with error of name/password in login menu if it exceeds 12 symbols was fixed. Screen centering on the player when loading map in right-angle geometry was fixed. Copying objects in Mapper from smaller map to the bigger one was fixed. Mapper hanging up when Sleep < 0 was fixed. Crashes when loading ART files were fixed. Principe of transparency defining with parameter ‘”t” was changed, now it isn’t equal to 255 – paletteIndex, but to max(R, G, B). Rev.166 http://www2.xp-dev.com/sc/change/94227/166 System of operating with items prototypes was updated (ProtoItem). Ability to add your own fields to proto class was added. New pragma ‘bindfield’ is used for this, e.g.: #pragma bindfield "const int ProtoItem::MyValue -> 400" it means creation of field MyValue of int type with offset 400 (considering thas int is 4 byte, it will occupy bytes 400, 401, 402, 403). Totally for user’s fields 500 bytes are available. Field is equal to zero as defaults, but it is possible to change the value by defining value (in the current case MyValue=111 or MyValue=SkillBigGuns) in proto file (.fopro), number (if it contains only numbers) or path to the file (it is identified by the presence of ‘/’ or ‘\’ symbols). For now fields which are not used by the engine are taken out to scripts, see _defines.fos Item prototypes fields. Changes in structure ProtoItem. All next methods are deleted uint8 GetType() const uint16 GetProtoId() const bool IsGrouped() const bool IsWeared() const bool Container_IsGroundLevel() const List of new fields which are registered in the engine (part of them is renamed, some were deleted) http://pastebin.com/8R4QkP3h The other fields are registered with #pragma bindfield in _defines.fos. Now all items can stack and wear out, for this Boolean fields are added to the prototypes bool ProtoItem::IsStackable bool ProtoItem::IsDeteriorable Item type ITEM_MISC_EX was deleted, it is combined with ITEM_MISC (miscex.fopro is deleted). Vehicles are taken out to separate type ITEM_CAR (car.fopro was added). Also now user can define any type numbers for the items. Former fields uint MiscEx_StartVal0..9 of the start values for Item::Val0..9 were moved to common area named StartValue0..9, and with these values Item::Val0..9 are initialized. Metod bool Item::IsCar() const was deleted, instead of it use GetType()==ITEM_CAR. The next methods are renamed bool Item::IsGrouped() const -> bool Item::IsStackable() const bool Item::IsWeared() const -> bool Item::IsDeteriorable() const The next fields are renamed uint16 Item/ItemCl::BrokenWear -> Item/ItemCl::Deterioration uint16 Item/ItemCl::CarDeteoration -> Item/ItemCl::CarDeterioration uint8 MapperObject::Item_DeteorationFlags -> uint8 MapperObject::Item_BrokenFlags uint8 MapperObject::Item_DeteorationCount -> uint8 MapperObject::Item_BrokenCount uint16 MapperObject::Item_DeteorationValue -> uint16 MapperObject::Item_Deterioration Mechanism of affiliated objects was moved for common use. Previously it was available only for vehicle’s trunk. One object can have up to five derivatives. Numbers of the derivative objects are defined in uint16 ProtoItem::ChildPid_0..4. By creation of base object, derivatives are created automatically. For now Mapper doesn’t create affiliated obkects automatically, but it will be fixed in further. For setting the place of situation, special field ChildLines_0..4 is used (former MiscEx.Car.Bag_0..1, see below by recording format). Also it is possible now to define automatic blocking for any objects, not only for vehicles – field BlockLines (former MiscEx.Car.Blockers). Recording format for Child/BlockLines – XYXYXY..., where X is direction number (0..5/7), Y is the amount of steps (1..9) in this direction (previously for vehicle’s trunk for another recording format - XXXX...). Maximum amount of steps for BlockLines – 50, for ChildLines – 6. For operating with derivative objects use methods Item@+ Item::GetChild(uint childIndex) const (бывшая Item@+ Item::CarGetBag(int numBag)) bool Map::CheckPlaceForItem(uint16 hexX, uint16 hexY, uint16 pid) const (bool Map::CheckPlaceForCar(uint16 hexX, uint16 hexY, uint16 pid) const) Fields renaming affected lots of scripts, be attentive. Old proto format is converted to the new one automatically, but Object Editor (ObjectEditor.exe) still operates only with old format. It will be fixed soon. To replication.fos and entires.fos scripts the influence of right-angled geometry was added. Script main_planes.fos is formatted as a separate module. All pragmas were move to the end of _defines.fos. Drop of FPS when switching on view/attack borders was fixed. Rev.165 http://www2.xp-dev.com/sc/change/94227/165 Fix for the ASCompiler. Rev.164 http://www2.xp-dev.com/sc/change/94227/164 Changed ASCompiler output format to “filename(linenumber) : message”. Such output is recognized by a number of IDEs and allow jumping to the code by a double-click on the output line. Rev.163 http://www2.xp-dev.com/sc/change/94227/163 Tabs management system was added to Mapper. Now one tab can have numerous subtabs. Tabs names and its filling is defined in mappers scripts. But some tabs already have initial filling. Item – items prototypes by defaults (items.lst); Tile – tiles by default, search is performed in ‘art/tiles/’; Crit – critters prototypes by defaults (critters.lst); Fast – displays often used objects, initial state is defined in scripts (InitializeTabs in mapper_main.fos); Ign – Ignore, shows ignored objects which are not shown on the map; Inv, Msg, Map – special tabs which have nothing to do with the mechanism, but it is possible to change its name throug TabSetName (see below). The tab can have subtabs only of one type – tiles, critters or items (displayed in priority order). For items and critters the subtab’s name is chosen by user, for the tiles it is performed automatically. The lowest subtab “all” contains all prototypes (or tiles) on a list above. For activation the menu of tab choosing – perform a double click on it. If positions are numerous then use mouse wheel for navigation (scroll speed: normal – 4, with pressed shift – 8, with pressed ctrl – 20, with pressed alt – 50). For tabs management use scripts, functions Tab* uint TabGetTileDirs(int tab, string@[]+ dirNames, bool[]+ includeSubdirs) uint TabGetItemPids(int tab, string@+ subTab, uint16[]@+ itemPids) uint TabGetCritterPids(int tab, string@+ subTab, uint16[]@+ critterPids) void TabSetTileDirs(int tab, string@[]+ dirNames, bool[]+ includeSubdirs) void TabSetItemPids(int tab, string@+ subTab, uint16[]@+ itemPids) void TabSetCritterPids(int tab, string@+ subTab, uint16[]@+ critterPids) void TabDelete(int tab) void TabSelect(int tab, string@+ subTab) void TabSetName(int tab, string@+ tabName) int tab – tab’s number (see Tabs in _mapper_defines.fos); string@[]@+ dirNames – folder’s names for tiles searching; bool[]@+ includeSubdirs – turn on search in subfolders; string@+ subTab – subtab’s name; uint16[]@+ itemPids – item’s prototype numbers array; uint16[]@+ critterPids - critters’s prototype numbers array; string@+ subName – tab’s name. Global variable was added bool __SplitTilesCollection = true It defines whether tiles should be divided into groups in the folders. The group is defined as a string in the file’s name before the first number (e.g. abc12.png - group abc), if the number is absent, then group is defined as '<other>'. In connection with these changes, the global functions are deleted uint GetFastPrototypes(uint16[]@+ pids) void SetFastPrototypes(uint16[]@+ pids) Other updates. Fixed incorrect work of server/client which caused some bugs. Global variable int __GeometryType was added to _defines.fos for the indication of chosen geometry. See constants in _defines.fos Geometry. Depending on its value, tab with Tactics and Arcanum is added. Ability to work with file names which include spaces is added. When loading ART files, it is possible to flip them vertical or horizontal. Parameters in the file name - ‘v’/‘V’ and ‘h’/‘H’. When loading SPR file, if you define in changing color parameter – layer’s number -1, then the modificator will be applied to all four layers. Rev.162 http://www2.xp-dev.com/sc/change/94227/162 Quest perks “Midnight Child”, “Nosderatu Blood” were added (Modoc, “Night’s tender”). Now new home position is set for NPC-travelers (Devin, Eli) when they enter new location. Female characters now can finish quest of removing childkiller status. Allies HP and resistances were increased in “Dangerous hunt” quest. Also a simple dialogue is added to them. The forged letter is now removed from the inventory when finishing quest “Forgery”. Edvin in Klamath tells with a popup phrase when starting gathering items. A delay was added to the prisoner giving the cues in “Ernst Telman” quest. Ability of intimidating the NPC visitor if it’s a woman was deleted in quest “Wrath”. Barcus now reacts with popup phrases to the futher meetings with the player who have done quest “Amnesty for Joshua”. Upon the receiving lieutenant rank of Vaultcity’s Guard, player is awarded with a black combat armor. In “Diplomatic Courier” quest time (24 hours) which Sheiman takes for the thoughts now is calculated correctly. Upon finishing this quest, player receives +1 reputation in NCR. Sell price of the buggy which player receives upon finishing the quest in NCR was set to zero. Dialogue launch when player uses an antidote in quest “Poisoned Regulator” in Redding was fixed. Players who gained Vaultcity citizenship now can trade with Randal with no restrictions. Reputation calculation in quests “Real Cowboy”, “Hub Bibliography” in NCR was fixed. If player refuses the reward in “Hub Bibliography” quest, he gains +2 reputation (was +1) when he delivers 5 books. Increasing raider’s resistances and skills every new attack on NCR was switched off. Ability of crafting and buying chitin armor was added. Giant beetles drop chitin. Items with ITEM_GAG flag deletion upon player’s death was fixed. Rev.161 http://www2.xp-dev.com/sc/change/94227/161 Ability to customize game geometry was added, either the support of isometric projection with quadrangles was. For customization use global variables bool __MapHexagonal – isometry type: true - hexagonal, false - quadrangular; int __MapHexWidth – hex width; int __MapHexHeight – hex height; int __MapHexLineHeight – hex line height; int __MapTileOffsX/Y – ground tiles offset; int __MapRoofOffsX/Y – roof tiles offset; int __MapRoofSkipSize – amount of hex per one roof tile (necessary for its correct hiding); float __MapCameraAngle – 3d model rendering angle; bool __MapSmoothPath – path smoothing when moving; string __MapDataPrefix – path and prefix for the geometry files. Operational sprites for geometry are situated in art/geometry/. Quadrangular isometry use 8 directions, hexagonal – 6. In script config.fos in function InitializeGeometry(), necessary adjustments for 3 games (Fallout1/2, Fallout Tactics and Arcanum) are added. This function can be called in server, client and mapper scripts, as all three of them need geometry information. Global variables uint __LookDir4, uint __LookSneakDir4 were added for 8-directional geometry. Fixed Tactics SPR files loading. Mode MODE_NO_TALK was added. It affects ability to talk and appearance of the icon in the context menu. Double click on hex, affecting avatar’s moving, was fixed. Creation of descriptions for critters prototypes (FODLG.MSG) with high identifiers was fixed. Image of elephant gun was added in 3d. Rev.160 http://www2.xp-dev.com/sc/change/94227/160 Fixed a bug with server and client communication. Fixed a bug with wrong sprites display. Rev.159 http://www2.xp-dev.com/sc/change/94227/159 Documentation's update, mistakes fixes. Rev.158 http://www2.xp-dev.com/sc/change/94227/158 Script start_server_client.fos was renamed to config.fos and now it isn't simply pasted into function start(), but presented as a separate module with function InitializeGame(). Macros for operating with time were moved from _macros.fos to separate module _time.fos. Slight fix of drugs.fos. Rev.157 http://www2.xp-dev.com/sc/change/94227/157 Errors messages in server log when operating with functions GetPlayerName/GetPlayerId were removed. Also GetPlayerName returns null now, if the player wasn't found. Bugs of reputation calculation were fixed. Rev.156 http://www2.xp-dev.com/sc/change/94227/156 Ability to affect the colors when loading Tactics sprites was added. To make color shift, define necessary values in file name’s parameters (“$”). Format: fileName$[index,r,g,b]animName.spr (can be any amount of shifts […]) where index – body part’s number (0 - miscellaneous, 1 - skin, 2 -hair, 3 - armor); r,g,b – color shift for the each component, can be negative Example: someSprite$[2,50,-30,-20]anim1.spr – load sprite someSprite.spr, with animation anim1 and hair’s color shift in RGB (50,-30,-20). Additional flags for operating with color’s shift were added for Tactics critters (_animation.fos, animation.fos). Use macros ANIM1_COLOR_SKIN(index), ANIM1_COLOR_HAIR(index), ANIM1_COLOR_ARMOR(index) for values defining. Index can take on value from 0 to 15, appropriate to it values of color shift look in array colorOffsets of animation.fos script. For ability testing you can use text function void ColorOffset(Critter& cr, int skin, int hair, int armor) in test.fos. Rev.155 Some native structures were fixed. Rev.154 http://www2.xp-dev.com/sc/change/94227/154 AngleScript is updated to revision 822. Ability of sorting is added to scripts arrays Ascending sort void array::sortAsc() void array::sortAsc(uint index, uint count) Descending sort void array::sortDesc() void array::sortDesc(uint index, uint count) For user’s classes sorting realize opCmp method http://www.angelcode.com/angelscript/sdk/docs/manual/doc_script_class_ops.html Vehicle animations on the global map and item’s animations in Mapper are fixed. Some points in operating with critter’s animations are fixed (animation.fos). Global variable __GmapActive is fixed. Global variable for setting min. offline time after that client will completely exit from the game was added. uint __MinimumOfflineTime = 180000; // 3 minutes Rev.153 http://www2.xp-dev.com/sc/change/94227/153 Additional constants for operating with Chosen's actions were updated (Get/SetChosenActions, for CHOSEN_USE_ITEM). Rev.152 http://www2.xp-dev.com/sc/change/94227/152 Additional constants for operating with Chosen's actions were added (Get/SetChosenActions). Rev.151 http://www2.xp-dev.com/sc/change/94227/151 Bugs with incorrect files's names path detecting were fixed. Rev.150 http://www2.xp-dev.com/sc/change/94227/150 3d models loading was fixed. 3d models rendering to sprites was fixed. Critters animations were fixed (death in 2d and 3d modes). Shift calculation for some models was fixed. SAY_DIALOG/SAY_APPEND mechanics was fixed. (by Atom) Server’s config loading in Mapper was fixed. (by Atom) File HashNames.lst was added to client. Names of files which contain parameters (‘$params’) should be entered in it. If you use such names in the prototypes, Mapper or scripts GetStrHash), then include this name to this list. Format of writing: [any number] [file’s name] [end of string] E.g. 0 art\scenery\BrazureFire$t.ART 0 art\scenery\BrazureFire$t3.ART In further it is possible to detect and transmit such names automatically, but for the present use this system. Roof disappearing if it is situated in odd hex in two axis. Rev.149 http://www2.xp-dev.com/sc/change/94227/149 Documentation was updated. Some fixes in Arroyo (Minoc’s quest about raiders). Usage mode was added for sledgehammer and supersledge (for resources mining). Guard lib was brought into common standard of scripts formatting. Rev.148 http://www2.xp-dev.com/sc/change/94227/148 Two reserved variables were added to HLSL effects float AnimPosProc – current animation’s per cent 0%..100%, [0,1); float AnimPosTime – current animation’s time in seconds. Client’s hanging under certain circumstances was fixed (e.g. receiving item’s data when player in process of moving between maps). Dump generation when closing server application without stopping was switched off. Generation of unnecessary messages to log in function animation_ animation.fos was fixed. Rev.147 http://www2.xp-dev.com/sc/change/94227/147 Parameters for critter’s movement controlling were added. Time for moving in milliseconds: #define ST_WALK_TIME (117) #define ST_RUN_TIME (118) Ability to move #define MODE_NO_WALK (539) #define MODE_NO_RUN (540) If these parameters are equal to zero, then data is taken from CritterTypes.cfg. Loading of some ART files was fixed (Arcanum). Ability of specifying special image processing was added. Palette elements will be transparent depending on its index in the palette (alpha = 255 – index). To chose this loading type - use symbol “t” (or “T”) in file name parameters. E.g. ‘filename$t.art’; also you can combine with palette, e.g. ‘filename$1t.art’. Ignoring of spec.symbol “/r” was additionally added for splitEx function. In functions void DrawSprite(... bool applyOffsets) if applyOffsets == true there were additionally added shifting of width/2 and height of the image. Unnecessary fo3d files were deleted. Palette influence for Arcanum critters was fixed. Rev.146 http://www2.xp-dev.com/sc/change/94227/146 One more fix of incorrect critter displaying. Rev.145 http://www2.xp-dev.com/sc/change/94227/145 Quest “Communicated” was added (Redding). Caravaneers phrases were fixed, now they tell correct departure dates. Quest “Honomer’s bodyguard” was added (San Francisco). Retina scanner in GECK town was fixed. Slight fixes of the hubbolog’s map in San Francisco. Special result function for skill rise calculation through a dialogue was added.(dialog@r_SkillUp) The script for quest locations creating was fixed (hostile_location_quest.fos), allies and enemies scripts now work correctly. Resetting of a quest variable when deleting the location was fixed. Script for realization a dialogue between several npc’s with popping up phrases was added. (npc_dialog.fos) Story line implementation was continued. Maps numeration in the location with mutants was fixed (quest string “Guardian”). Rev.144 http://www2.xp-dev.com/sc/change/94227/144 Critter’s hitpoints regeneration was moved to scripts, you can look realization in function critter_idle main.fos. Global function for critters sampling from the global map was added to server scripts. uint GetGlobalMapCritters(uint16 worldX, uint16 worldY, uint radius, int findType, Critter@[]@+ critters) Additionally to methods bool Map::GetNearEntireCoords(int& entire, uint16& hexX, uint16& hexY) const bool Map::GetEntireCoords(int entire, uint skip, uint16& hexX, uint16& hexY) const were added methods bool Map::GetNearEntireCoords(int& entire, uint16& hexX, uint16& hexY, uint8& dir) const bool Map::GetEntireCoords(int entire, uint skip, uint16& hexX, uint16& hexY, uint8& dir) const which return direction. Global variable which specifies if the password in the client’s login window should be hidden was added bool __HidePassword = true Incorrect critters creation in Mapper was fixed. Displaying of switching critter’s type 3d->2d on the client’s side was fixed. Rev.143 http://www2.xp-dev.com/sc/change/94227/143 Fixed critters loading in Mapper (141 revision's bug). Rev.142 http://www2.xp-dev.com/sc/change/94227/142 Fixed server loading (the previous revision bug). Rev.141 http://www2.xp-dev.com/sc/change/94227/141 Mechanism for identifying critter’s animation file name was added. Now you can operate with critter’s animations from Tactics and Arcanum without any conversions. All data files which you need for enabling one or another critters are cited in CritterTypes.cfg comments. The next critters were added to SDK: Humanoid, Behemoth, MTT, Pacification. They are repacked to the separate archive ftrobots.bos. But all available critters from Tactics and Arcanum are added to CritterTypes.cfg with correctly defined parameters for them (by Tabloid), so you can enable the needed data files and use the critters. All animations are transformed to the general appearance (ANIM2_2D*, ANIM2_3D* -> ANIM2*). The functional for operating with them is moved to scripts. In some places where these values are used, numeric literals are replaced by string constants, which description you can find in DefineNames.lst. Fixes were made in weapons prototypes (weapons.fopro) and fo3d templates for 3d critters from VanBuren (_VBHuman.fo3d, _VBMob.fo3d, _VBWeapon.fo3d). Now three sets of primary and secondary animations are used for critters, for three condition types – alive, knockout, dead const uint Critter/CritterCl::Anim1/2Life/Knockout/Dead (const uint Critter/CritterCl::Anim1/2 were deleted). These values are used for animations as default. Pay attention that Anim1 additionally is summed up with animation of the weapon in the active slot, bit-by-bit OR. It is necessary for assignation certain values on continuing basis (e.g. sitting, lying position). For changing these values the next method is used void Critter::SetAnims(int cond, uint anim1, uint anim2) int cond – defines the position to apply values to (COND_* in _defines.fos), if null it is applied to all three; uint anim1, anim2 – animation values. Deleted const uint8 Critter/CritterCl::CondExt Accordingly all COND_*_* for them are deleted. Now position is differentiated by the animations. In connection with it, the next methods specifications were changed void ToDead(uint anim2, Critter@+ killer) bool ToKnockout(uint anim2begin, uint anim2idle, uint anim2end, uint lostAp, uint16 knockHx, uint16 knockHy) void EventKnockout(uint anim2begin, uint anim2idle, uint anim2end, uint lostAp, uint knockDist) void EventSmthKnockout(Critter& fromCr, uint anim2begin, uint anim2idle, uint anim2end, uint lostAp, uint knockDist) uint anim2begin, anim2idle, anim2end – animations of the knockout begging, staying in it and coming to yourself. Standard macroses are defined for the transfer KNOCKOUT_ANIM2_DEFAULT, KNOCKOUT_ANIM2_STUNNED (in _animation.fos). Also Mapper operates now not with CondExt, but with Anim1/Anim2 for the current Cond. Global variables for client/mapper for defining combat mode animations were added uint __Anim2CombatBegin = ANIM2_BEGIN_COMBAT uint __Anim2CombatIdle = ANIM2_IDLE_COMBAT uint __Anim2CombatEnd = ANIM2_END_COMBAT The next reserved client/mapper functions were added (animation.fos): - string@ critter_animation(int animType, uint crType, uint anim1, uint anim2, uint& pass, uint& flags, int& ox, int& oy) Function which is called when loading necessary animation. Returned value - file’s path and name. int animType – critter’s animation type (new parameter which is set in CritterTypes.cfg); uint crType – critter’s type; uint anim1, anim2 – animation’s indexes; uint& pass – function call’s number, is changed by the user. If animation loading failed and this parameter was changed, then function will be recalled (in certain cases you should try to load different files for the one animation); uint& flags – flags, at the present moment two of them – to take the first or the last frame from the animation ( Anim loading flags in _animation.fos); int& ox, &oy – shifts for the animation, in pixels. - bool critter_animation_substitute(int animType, uint crTypeBase, uint anim1Base, uint anim2Base, uint& crType, uint& anim1, uint& anim2) If animation loading failed (and uint& pass wasn’t changed), then this function is called for animation substitute detection (e.g. left hook can be replaced by the right hook). true is returned if the substitute was found (engine also additionally checks if crType, anim1, anim2 were really changed), false – no substitute, animation won’t be loaded and played. int animType – see above; uint crTypeBase, anim1Base, anim2Base – base critter’s and animation’s type, which were at the start; uint& crType, &anim1, &anim2 - critter’s and the current animation’s type for the substitution - bool critter_animation_fallout(uint crType, uint& anim1, uint& anim2, uint& anim1ex, uint& anim2ex, uint& flags) As Fallout’s animations are still loaded by the engine (additional shifts calculation and animations pasting together is needed), for determining animations conformity this function is called, i.e. instead of critter_animation for fallout’s animations this function is called. true is returned if animation is presented, false – not. Method bool Critter::IsAnim3d() const is deleted, use instead of it the global function int GetCritterAnimType(uint crType) values look in Anim types _animation.fos. Critters actions sounds now are played in the scripts, in animation_2d/3d_process. New mechanism for sound file name identification was made, look PlayAnimSound in animation.fos. Critters prototypes were divided into fallout’s (fallout2.fopro) and TLA's (tla.fopro). Bug with roof’s non-transparency in Mapper was fixed. Name indication of chosen critter or tile prototype in mapper was added. Format fo3d now recognizes named constants DefineNames.fos, namely for modificators Mesh, Subset, Layer, Value, DisableLayer, DisableSubset, Texture, EffDef (для Dword), Anim, AnimSpeed, AnimEqual. Global server variable for determining call frequency was added GLOBAL_PROCESS_MOVE uint __EncounterTime = 5000 Global client variable for determining frequency of foolish trick animation call was added uint __CritterFidgetTime = 50000 is deleted using formula Random(__CritterFidgetTime, __CritterFidgetTime * 2) Item prototype’s parameter was deleted bool ProtoItem::Weapon_RequiresActivation now if animation doesn’t exist, it is just not played. Parameters uint16 MapperObject::Scenery_ToMapX/Y were deleted, in mapper also. Moving between locations is performed by entery points. In weapons prototypes types of action animations were substituted from numeric by string constants (accordance look in DefineNames.lst). Appropriate changes were performed in ObjectEditor. Client functions PlaySound andPlayMusic now return bool, signalizing if file was found or not. Global functions for server/client/mapper which return appropriate values from CritterTypes.fos were added uint GetCritterAlias(uint crType) string@ GetCritterTypeName(uint crType) string@ GetCritterSoundName(uint crType) Mapper’s scripts were moved to server’s scripts folder. Also the whole set of functions for operating with CritterTypes.fos was added to Mapper bool IsCritterCanWalk(uint crType) bool IsCritterCanRun(uint crType) bool IsCritterCanRotate(uint crType) bool IsCritterCanAim(uint crType) bool IsCritterAnim1(uint crType, uint anim1) int GetCritterAnimType(uint crType) uint GetCritterAlias(uint crType) string@ GetCritterTypeName(uint crType) string@ GetCritterSoundName(uint crType) Specifications of client’s reserved functions were changed animation2d_process, animation3d_process parameter bool animateStay was added to the beginning. It indicates if any action is performed now (false) or stand animation (true). Reaction for global map’s interface buttons pressing when the size of map’s area (GmapMap) covers the buttons area was fixed. Bug with incorrect loading/saving maps in which script’s or function’s name consists of spaces was fixed. Bug with potential server crashing when using AI_PLANE_MISC was fixed. Rev.140 http://www2.xp-dev.com/sc/change/94227/140 Some robots from Fallout Tactics (look the next revision). Rev.139 http://www2.xp-dev.com/sc/change/94227/139 The next quests were added in San Francisco: “Introduction into Hubbology”, “Hub’s justice”. Transport to Atoll is available for the players who are doing “Introduction into Hubbology” quest (npc is in the docs area of San Fracisco); Automatic transfer to the command center of GECK city citizens when entering the map was removed. Now citizens can choose spawn point. Quest location “Hubbologists laboratory” was added (author JunoReactor). Rev.138 http://www2.xp-dev.com/sc/change/94227/138 Arroyo: Quest “Evidence of Chosen’s death” was added (Todd Stewart); Two courier quests were added (Cassidy, Todd Stewart); Encounter fixes: Fixed bugs of the 120 revision; Fixed random encounters where normally aggressive npc’s didn’t attack after fighting with the other npc’s; Fixed bug with unlimited experience in Den; Fixed mistakes in NCR quests cooldowns; Slight dialogues fixes. Rev.137 http://www2.xp-dev.com/sc/change/94227/137 Ability to specify the layer of tiles/roof to organize correct query of displaying. Totally there can be 5 layers, from 0 to 4. You can switch between them with pressing shift and pressing appropriate key (from 0 to 4). Indication of the current layer is specified in the map’s supplemental information (in upper right corner). Specification of MapperMap AddTile/AddTileName methods was expanded, also layer parameter was added void AddTile(uint16 hexX, uint16 hexY, int offsX, int offsY, int layer, bool roof, uint picHash) void AddTileName(uint16 hexX, uint16 hexY, int offsX, int offsY, int layer, bool roof, string@+ picName) Functions for hash calculation by file’s name and inverse function were added to the native scripts const char* (*GetNameByHash)(uint hash); // Get name of file by hash uint (* GetHashByName)(const char* name); // Get hash of file name The functional for operating with the chosen’s actions was added to the client’s scripts. For taking or specifying the actions use functions uint GetChosenActions(uint[]@+ actions) void SetChosenActions(uint[]@+ actions) This array consists of blocks of seven variables, the first is the type, the other are the parameters. Values of types and parameters look in _client_defines.fos Chosen actions. Argument with the location was added to the reserved function for checking the entries into this location bool entrance_FuncName(Location& loc, Critter@[]& critters, uint8 entrance) The next events were added for critters CRITTER_EVENT_USE_ITEM_ON_ME bool EventUseItemOnMe(Critter& whoUse, Item& item) CRITTER_EVENT_USE_SKILL_ON_ME bool EventUseSkillOnMe(Critter& whoUse, int skill) In the calls stack it is situated between CRITTER_EVENT_USE_* and the global handler. That is CRITTER_EVENT_USE_ITEM for the player + CRITTER_EVENT_SMTH_USE_ITEM for those who can see the player. CRITTER_EVENT_USE_ITEM_ON_ME The global handler critter_use_item. and CRITTER_EVENT_USE_SKILL for the player + CRITTER_EVENT_SMTH_USE_SKILL for those who can see the player. CRITTER_EVENT_USE_SKILL_ON_ME The global handler critter_use_skill. The supplemental information (current hex, fps, etc.) in Mapper is presented in the upper right corner. Bug of 135 revision with transparent tiles when placing them was fixed. Data connected with unfinished mechanism of textured grid was deleted. Rev.136 http://www2.xp-dev.com/sc/change/94227/136 Maps converted to text format. Rev.135 http://www2.xp-dev.com/sc/change/94227/135 Now only text format is used for maps, it is binary only for loading. All maps are converted to the text format (they will be uploaded with the next revision). Extension of this format is “fomap”. To convert your own maps to the new format – execute in Mapper ““#ConvertMaps”, then you should manually or using Mapper set required values in Time, NoLogOut, ScriptModule, ScriptFunc fields, which values you can see in file Maps.cfg. File Maps.cfg is not used anymore, locations prototype numbers are defined opposite to their name in file Locations.cfg, as in the most cases the one map prototype is used for the one location. According to these changes, the next MapperMap methods are deleted: uint GetTile(uint16 tileX, uint16 tileY, bool roof) const void SetTile(uint16 tileX, uint16 tileY, bool roof, uint picHash) string@ GetTileName(uint16 tileX, uint16 tileY, bool roof) const void SetTileName(uint16 tileX, uint16 tileY, bool roof, string@+ picName) And the next are added: uint GetTilesCount(uint16 hexX, uint16 hexY, bool roof) const void DeleteTile(uint16 hexX, uint16 hexY, bool roof, uint index) uint GetTile(uint16 hexX, uint16 hexY, bool roof, uint index) const void AddTile(uint16 hexX, uint16 hexY, int offsX, int offsY, bool roof, uint picHash) string@ GetTileName(uint16 hexX, uint16 hexY, bool roof, uint index) const void AddTileName(uint16 hexX, uint16 hexY, int offsX, int offsY, bool roof, string@+ picName) Also the next fields are added: const int WorkHexX const int WorkHexY int Time bool NoLogOut string ScriptModule string ScriptFunc The next methods are deleted (as their technology is not good enough for now): string@ GetTerrainName(uint16 tileX, uint16 tileY) cons void SetTerrainName(uint16 tileX, uint16 tileY, string@+ terrainName). Function bool SaveMap(MapperMap@+ map, string& fileName, int pathType, bool text, bool pack) now looks as bool SaveMap(MapperMap@+ map, string& fileName, int pathType). The ability to transmit commands /text /pack when saving by the console is deleted respectively. Several functions for operating with map’s fields were added to mapper script (you can do this procedure simply editing necessary field in the map’s file with text editor): #MapTime value – map’s time in minutes; #MapNoLogOut value –possibility to log out on the map; #MapScriptModule moduleName – script, module’s name; #MapScriptFunc funcName – script, function’s name. Now it is possible to place lots of sprites on one hex. Be attentive, fallout’s tiles have the same size and if you place two tiles on the same hex, you won’t see it (only if you select it , it will be less transparent than the others). Take it into account when you place or copy-paste tiles. Function #ClearTiles can help you with this problem, it deletes superfluous tiles from the hex. So, if you operate with fallout’s tiles and you don’t need several tiles on the same hex, execute this script when you finish work. Also you can place tiles on every hex, not in two. Ability of shifting is added for tiles. To produce tile shift just make the same operations as switching between tiles, but additionally pressing shift. Also you can use the same shift procedure for items. To cancel shift, press Alt with Shift and move objects. Fixed 130 revision’s bugs. Fixed bug with absence of shifting in fofrm with one sprite. Fixed bug with error in loading sprites in scripts (LoadSprite), which caused several other bugs. Remained ini files were formatted. Rev.134 http://www2.xp-dev.com/sc/change/94227/134 Config was uploaded by mistake. Take into accont, don't use config file from 132 and 133 revisions, admin pass is "hh" there. Rev.133 http://www2.xp-dev.com/sc/change/94227/133 Redding maps fixed, quest NPC were added. Rev.132 http://www2.xp-dev.com/sc/change/94227/132 Fixed "Anger" quest, the missing dialogue was restored, now it can be finished. Added quest "Forgery". (VC, Linnet) Rev.131 http://www2.xp-dev.com/sc/change/94227/131 New quests "Anger", "Ernst Telman" were added. (VC, Linnet) Fixed bug in VC guard's AI scripts. Fixed mistakes in quest “Amnesty for Joshua” dialogues. Ability to cancel their service for mercs/companions was added if the owner exits from location to the global map. Rev.130 http://www2.xp-dev.com/sc/change/94227/130 Support of graphics files SPR, TIL, ZAR from Fallout Tactics was added. Support of data files BOS from Fallout Tactics was added (works as ZIP archieve). For loading certain animation from SPR files, state it in the name after “$” sign. E.g. loading CrouchAttackClubSwing animation from file Mutant.spr - “Mutant$CrouchAttackClubSwing.spr”. The first frame of first animation is taken without direction. Also, ability to set certain palette for ART files (graphics files from Arcanum) was added – state palette’s number (from 0 to 3) after “$” sign. E.g. to load dfmbnsba.art file with the second palette - “dfmbnsba$1.art”. First palette is taken without direction (that is 0). Operation with sprites was changed. Now all interface graphics (which is set in ini files) is represented not as one sprite, as continuously played animation. Functional for operation with currently drawn sprites on the map was added to the native client’s and mapper’s scripts. Structures: struct Sprite – displayed sprite; struct SpriteInfo – additional information about the sprite. Functions: Sprite* (*GetDrawingSprites)(uint& count); - currently drawn sprites, if no sprites (on the global, menu), then NULL is returned and count == 0; SpriteInfo* (*GetSpriteInfo)(uint sprId); - getting additional information about certain sprite; uint (*GetSpriteColor)(uint sprId, int x, int y, bool affectZoom); - getting pixel’s colour, with the ability of taking zoom into account; it isn’t available for 3d models yet; format - ARGB; bool (IsSpriteHit)(Sprite sprite, int x, int y, bool checkEgg); - test whether the point on the display matches with the current sprite with taking zoom, transparence and egg of transparence into account (optional). The reserved native global variable GameOpt was renamed to Game. Global variables int __MouseX, __MouseY for current mouse position indication were added. Function void GetMousePosition(int& x, int& y) was deleted. Indication of opened console bool __ConsoleActive was added to client’s scripts. Bug with memory leak when rendering 3d graphics to sprites was fixed. Rev.129 http://www2.xp-dev.com/sc/change/94227/129 Added ability to use robot-guards from Sierra as bodyguards (for those who had completed quest "No-sweat job" in Navarro) Added quest "Amnesty for Joshua" (VC, Amanda) Work of teleport on special encounter "Mad scientist's laboratory" was restored. Rev.128 http://www2.xp-dev.com/sc/change/94227/128 Second stable SDK assembly. For the purpose of decreasing repository's size, assemblies will be stored in another places. Links you can find in text files. Rev.127 http://www2.xp-dev.com/sc/change/94227/127 Quest "No-sweat job" in Navarro. Rev.126 http://www2.xp-dev.com/sc/change/94227/126 Mercenaries and companions mechanism (merc.fos) was updated. Now every companion has term of service. Companions don’t meddle in player’s showdowns with NPC’s. Fixed quest “Dip.Courier”. Now it can be finished. Fixed quest “Dock’s attack”. Now it can be finished after killing 5 giant insects. Added 3 new mercs for Lo Pan. Updates NPC-travellers mechanism (traveller.fos). The first NPC-traveller was added (eli.fos). Functions which cooldowns checkup for NPCs in dialogues were fixed. When character dies, all items with flag ITEM_GAG are deleted. Fixed cooldowns for quests “Hub bibliography”, “Sick Brahmin” and in the dialogue with dr.Klaus for stimpacks and first aid kits delivery. When NPC repairs an item, ammo is ejected. Script for NPC monologues realization was added. (monologue.fos) Rev.125 http://www2.xp-dev.com/sc/change/94227/125 Fixes of password encryption in the client's files. Rev.124 http://www2.xp-dev.com/sc/change/94227/124 Fixed bug with graphics loading in the previous update. Rev.123 http://www2.xp-dev.com/sc/change/94227/123 DAT2.1 (Arcanum) files support was added. ART (Arcanum) graphic format was added. Function for operating with strings splitEx was added. Principle is the same as in split, but empty elements are not included in the result array. Also spaces/tabs/string_hyphenation are deleted from the result elements. Examples: split(“A|B||D”, “|”) -> {“A”, “B”, "", “D”} splitEx(“A|B||D”, “|”) -> {“A”, “B”, “D”} split(“A| B\t\t||D| E|F ”, “|”) -> {“A”, “ B\t\t”, "", “D”, “ E”, “F ”} splitEx(“A| B\t\tC||D| E|F ”, “|”) -> {“A”, “B”, “D”, “E”, “F”} Additional DrawSprite functions for the client and mapper were added. You can transfer true with the last argument and as the result, the shift which is stored in the current file will be added to the sprite’s position. void DrawSprite(uint sprId, int sprIndex, int x, int y, uint color, bool applyOffsets) void DrawSprite(uint sprId, int sprIndex, int x, int y, int w, int h, bool scratch, bool center, uint color, bool applyOffsets) Fixed bugs with incorrect ini settings parsing in the scripts. Rev.122 http://www2.xp-dev.com/sc/change/94227/122 Client scripts updates: For the reserved function void render_iface(uint layer) was added calling with value layer 100 to give the ability of drawing on the global map. Also the next global variables were added for operating with the global map: bool __GmapActive – whether global map is active and all the variables below are correct; bool __GmapWait – whether waiting mode of encounter affirming is active; float __GmapZoom – current zoom, don’t forget it to take into account while drawing a map; int __GmapOffsetX, __GmapOffsetY – map shift from the zero-coordinate (up-left corner); int __GmapGroupX, __GmapGroupY – player’s group coordinates; int __GmapMoveX, __GmapMoveY – destination point’s coordinates; float __GmapSpeedX, __GmapSpeedY – movement speed every 50 ms, without taking relief into account For example, calculating the current pixel group’s position - (x = __GmapGroupX / __GmapZoom + __GmapOffsetX), (y = __GmapGroupY / __GmapZoom + __GmapOffsetY). Fixed bug with hanging when drawing 3d model, occurred in the last update. Fixed missing bracket in English texts. (by Kilgore) Rev.121 http://www2.xp-dev.com/sc/change/94227/121 Added more mouse sensitivity and now you can see mouse’s speed percent in the settings. Updated FOConfig.exe. Added AlwaysRun option. Possible values for option Mouse speed were corrected. Option Sleep now can be set to -1, that means switching it off (maximum performance). Added ability of redirecting keyboard’s symbol codes input. For this, use option KeyboardRemap (in FOnline.cfg). It is performed after space – X Y X Y …, where X is the code which is substituted by Y. Code numbers - http://fonline.pastebin.com/Qy3E0qwj Interface description in default.ini is formatted and commented. (by LoadRunner) Location prototypes updates: Option max_copy was deleted. Option max_players was added. It limits the amount of players who can be on the location simultaneously. Players, who can’t enter location because of exceeding the limit will see message 904 from FOGAME.MSG {904}{}{Location is overcrowded, try to enter later.} Password encryption in server *.client. files was added. Mouse shift when switching between movement modes was fixed. Also, for more accurate work, the hex mask was added – look \Client\data\art\misc\hex_mask.png. Only red colour is taken into account and when it takes on certain value, the shift to certain direction is performed (50 – 5, 100 – 0, 150 – 3, 200 – 2). The mask is optional, you can work without it. Fixed loading/saving tiles in the maps text format. Fixed global map shifting behind screen’s edge. Registration of useless clicks in mapper when switching between windows, now isn’t performed. Fixed the animation of 3d critter standing when situating them on the map. Also now 3d critters don’t play standing animation in the critter’s list. Fixed displaying of critters which have only one direction. Fixed command ~reloadscripts. Now when you mark items for deleting (DeleteItem/DeleteItems), their quantity is saved. So, in the moment when real deleting is performed, server will delete the requested number of items. Now knockout during turn-based fight leads to immediate loosing action points, not after finishing the turn. Also, frequent checks for the necessity of finishing the turn were added at the server - if critter’s dead, critter has negative AP, critter has no more AP. Scripts: Fixed critter’s flags (Critter extra flags, _defines.fos). Fixed special encounter scripts Guardian of Forever, Mad Brahmins. Script trader.fos was formatted. Reserved function was added to client scripts, which is called with attacks void hit_aim(uint8& aim) aim value can be redefined( Hit locations in _defines.fos). Function int Critter::GetScore(uint score) was added to server scripts. Specification Critter::AddScore(int score, int val) was changed to Critter::AddScore(uint score, int val). Function for calculation the size of drawn text was added to client and mapper scripts void GetTextInfo(string& text, int w, int h, int font, int flags, int& tw, int& th, int& lines) string& text – text; int w, h, font, flags – height, width, print, flags; int& tw, int& th, int& lines – total width, height and amount of strings in the current text. Rev.120 http://www2.xp-dev.com/sc/change/94227/120 Unused encounter tables for Fallout 1 and commented original’s scripts were deleted from worldmap_init.fos; Random encounters of “beasts versus beasts” type were enabled, which were presented in the scripts, but were absent in the original. Added some new kinds of non-unique random encounters. Now, if player uses to kill NPC’s of certain group or organizations on random encounters, then they become aggressive. Vault City guard’s automatic search is deactivated. Now you need to activate the dialogue to pass through. Fixes in English dialogues versions. Maps fixes. Rev.119 http://www2.xp-dev.com/sc/change/94227/119 Fixed lots of little mistakes in dialogues; Fixed bugs in some Den and Klamath quests; Maps fixes; Duplicate dialogues with different names were deleted. Rev.118 http://www2.xp-dev.com/sc/change/94227/118 Fixed modificator's argument from Parent-0-7 to Parent0-7. Rev.117 http://www2.xp-dev.com/sc/change/94227/117 Added dialogues to Arroyo doctor and his team. Slight fixes (dialogues, maps). Rev.116 http://www2.xp-dev.com/sc/change/94227/116 Library for importing different 3d models was enabled – Assimp http://assimp.sourceforge.net/ Formats that are supported: http://assimp.sourceforge.net/main_features_formats.html Built-in one is still used for X format, for other ones – this library. If you don’t need the library, you can delete it (file Assimp32.dll), client and mapper are able to work without it. Updated mechanism of linking models and animations, now you can link any animation to any skeleton from any file. fo3d format changes: Modificator ModelAnimation was deleted. Modificators Anim, RenderFrame, RenderFrames were expanded – now file name which consists needed animation is placed before the animation’s name (if you state “ModelFile”, then search is performed in the file of loaded model)/ Specification of indicating parent texture (Texture X Parent) was expanded. Now you can additionally state the mesh number and its part, from which the texture is taken - Texture X ParentY-Z, where X is the texture’s number, Y is mesh number, Z is mesh part number; parameters Y-Z are optional, you may don’t use them at all or you may use them partly (Parent, Parent0, Parent-5). Fixed bug with incorrect script processing when operating with Critter::ShowScreen. Fixed bug with incorrect operating and crashing when using Log function with some special symbols. Added Combat Armor 3d model (by Gray). Rev.115 http://www2.xp-dev.com/sc/change/94227/115 Added special encounter "Warehouse of lost doughnuts" (author - Ponchik). Scripts for some original special encounters (author - Cracker). Remade some prototypes. Windows without glasses in Vault's walls can be shooted through now. Slight fixes. Rev.114 http://www2.xp-dev.com/sc/change/94227/114 Maps for quests from the 113 revision. Rev.113 http://www2.xp-dev.com/sc/change/94227/113 Klamath: quests - "Worker searching", "Husband's alert", "Brahmins vaccination" (author - Ponchik). Slight fixes. Rev.112 http://www2.xp-dev.com/sc/change/94227/112 Finished appearance of random encounter "Ocean Trader". Slight maps, dialogues and graphics fixes. Added buttons for BarterGround, GECK town, Warehouse and Hell for the global map (author - Ponchik). Slight fixes. Rev.111 http://www2.xp-dev.com/sc/change/94227/111 Added additional mechanism for data files loading (dat, zip). It is necessary for loading data files loading before scripts initializing and processing start() function as some date is needed to be used before this (effects, prints and some other resourses). For adding files to loading – create DataFiles.cfg file in which you should list all necessary file names. The program searches for the content from the last to the first data file. This mechanism uses server, client, mapper. If list isn’t found then no alerts will be displayed. If one of the files from the list can’t be found or load error appears, then alert will be shown. Option PatchDatPath was deleted, loading of this file is moved to DataFiles.cfg. Rev.110 http://www2.xp-dev.com/sc/change/94227/110 Fixed model's borders calculating which caused nick or text shift above critter's head. Rev.109 http://www2.xp-dev.com/sc/change/94227/109 Fixed skin setting-up when registration 3d character. Fixed order of loaded packs (dat, zip) scanning while searching and parsing ini files. Addition to 106 revision – for stating specific keys for certain resolutions now are used not separate files with different names, but marks in the main file. At the start of the string write “resolution”, than min. width and height for starting using these options. By default these values are equal to zero. For example: "resolution 1024 768 key = value..." It means, that “key = value ...(and so on till the next keyword ”resolution”)” will be included in the final ini. Found data will be inserted in the main file as screen width grows. Rev.108 http://www2.xp-dev.com/sc/change/94227/108 Actual cash files. Rev.107 http://www2.xp-dev.com/sc/change/94227/107 SDK is switched to 3d players mode. Normal version will be restored after finishing mechanism debugging process. For switching off 3d players models – comment the next strings in Server\scripts\_defines.fos #define PLAYERS_3D // Enable 3d players #define PLAYERS_3D_NO_HEAD // No head slot #define PLAYERS_3D_VAULT_SUITE // Vault suite by default, not naked 3d updates: Fixed and reduced the size of attributes and weapons. Added missing attributes of opened pipboy. In the left hand now is displayed the item, which player has in the second slot. Armor’s models are divided between the current armor items in the such way, that gamer could see the difference. For example combat armor consists of power armor and the helmet, robes are replaced by jail suit and etc. Fixed animation playing during creating the new character in single mode. Added skin change processing in start intro and after Kitty’s haircut. Added skeleton’s skins. Added sound for men and women. Fixed sound name for critters parameter’s loading (CritterTypes.cfg, SoundName). Now characters walk slowly with double click if alwaysrun option is turned on. Rev.106 http://www2.xp-dev.com/sc/change/94227/106 Added ability to make 3d characters available to play for. To enable it (it is disabled as default) - comment certain strings in _defines.fos // #define PLAYERS_3D // Enable 3d players // #define PLAYERS_3D_NO_HEAD // No head slot // #define PLAYERS_3D_VAULT_SUITE // Vault suite by default, not naked Updated mechanism of working with ini files. Now, when searching for the keys, excess spaces and tabulations are skipped (now you can type “ key = value ”, previously was correct only variant “key=value”) Added function bool AppendIfaceIni(string& iniName), which enables additional ini files. If the name includes slashes, than the search is being performed from data root, if not - than from folder data/art/interface/. default.ini is added automatically by the engine, others you can enable in start() client function. Loading is performed sequentially from default.ini to ones enabled by user by turn. Every packed file is checked by the turn of loading, then in the folder. Global variable string __UserInterface was deleted. Fixed bug with incorrect parsing of animation indexes in fo3d file. Fixed bug with incorrect position of the egg of transparence in zoom mode. For better readability the next scripts were formatted: start_server_client.fos client_main.fos In the future this practice will be continued. Rev.105 http://www2.xp-dev.com/sc/change/94227/105 Documentation update - slight fixes. Rev.104 http://www2.xp-dev.com/sc/change/94227/104 Added structure of script array (ScriptArray) to native scripts. Added ability to client's native scripts of calling hex data - Field. Data is stored in Field* GameOptions::ClientMap, uint GameOptions::ClientMapWidth/ClientMapHeight. If map is loaded, than ClientMap != NULL, hex calling - ClientMap[hexY * ClientMapWidth + hexX]. Rev.103 http://www2.xp-dev.com/sc/change/94227/103 Added always run option - can be enabled in client's config file “AlwaysRun”. Disabled as default. Added global variables for AlwaysRun regulating: bool __AlwaysRun (as default - false) - enabling AlwaysRun ability; uint __AlwaysRunMoveDist (as default = 1) - run with click, if distance is equal or more than the value; uint __AlwaysRunUseDist (as default = 5) - run with using smth/dialogue/etc, if distance is equal or more than the value. TLA's mechanics is equal to original - always run with click, always run with using if distance is more than 4 hexes. Added parameter uint Critter::ItemTransferCount to native scripts. It stores the value of transferred items during the last transaction. Rev.102 http://www2.xp-dev.com/sc/change/94227/102 Optimized server operation (script calling) in one tread operation mode, performance increased up to 400%. Fixed bug with crash when calling Critter::Say* methods with parametr SAY_SAY_TITLE. Rev.101 http://www2.xp-dev.com/sc/change/94227/101 Changes in fo3d format, new specification was created - look this theme: http://www.fonline.ru/forum/showthread.php?t=19689 New format added new abilities of working with 3d objects - trasmission of texures, other paremeters, etc. Also added ability to render certain animation to sprites as for one frame, either for the whole animation. But the bug with cutting off the shade situated below the lowest edge of model still presents. Updated old fo3d files, also VanBuren's critters and weapon models were added. Changed effects structure, added effect for normal mapping (3D_NormalMapping.fx). Added transfer of real numbers through scripts, float __EffectValue0..9. Fixed bugs with loading 3ds files - miss of meshes except the first; crash if texture coordinates are not presented. Fixed bug in Mapper with data copying when copy-pasting a large number of objects. Fixed text centering of hexes amount in zoom mode. Rev.100 http://www2.xp-dev.com/sc/change/94227/100 Documentation update. Rev.99 http://www2.xp-dev.com/sc/change/94227/99 Updated documentation file, which was missed in the previous revision. Rev.98 http://www2.xp-dev.com/sc/change/94227/98 Added resourse gathering system; Documentation updating. Rev.97 http://www2.xp-dev.com/sc/change/94227/97 Fixes of "Night is tender" quest, now healing must work properly. Added preview from global map for GECK location. Rev.96 http://www2.xp-dev.com/sc/change/94227/96 Gecks counting on the location now affects its auto moving away and visibility separately; Parameter geck_enabled (Map::GeckEnabled) renamed to geck_visible (Map::GeckVisible). Rev.95 http://www2.xp-dev.com/sc/change/94227/95 Added global server function void SetChosenSendParameter(int index, bool enabled) which can denie transmitting parameters to client. Transmitting of all parameters is enabled by default. Rev.94 http://www2.xp-dev.com/sc/change/94227/94 Fixes of sea encounter maps. Rev.93 http://www2.xp-dev.com/sc/change/94227/93 Added sea encounters; Added posibility of an encounter while travelling on air/water transport; Player always have possibility of cancellation water/air encounter and never gains experience for that; Bug fix in mapper with incorrect editing critter's parameters. Rev.92 http://www2.xp-dev.com/sc/change/94227/92 Fixed displaying rating in pipboy. In mapper additional indication of cut sprites was added to make lines, which are needed for correct interaction, visible. Rev.91 http://www2.xp-dev.com/sc/change/94227/91 Added traffic encryption between server and client. Rev.90 http://www2.xp-dev.com/sc/change/94227/90 Fixed choosing automatically cut sprites in zoom mode. Rev.89 http://www2.xp-dev.com/sc/change/94227/89 Added parametr DrawOrderOffsetHexY for shifting order of drawing lower (Y axis). This is an analogue for recently deleted DrawPosOffsX. Fixed using car trunk. Different slight fixes. Rev.88 http://www2.xp-dev.com/sc/change/94227/88 Fixed exit from Redding; slight fixes. Rev.87 http://www2.xp-dev.com/sc/change/94227/87 Fix for weapon AP cost. Rev.86 http://www2.xp-dev.com/sc/change/94227/86 May be fixed bug with incorrect displaying of some tiles. Fixed bug with unworking elevators. Added restoration of effects when loosing a device (cause crashed e.g. with alt+tab) Rev.85 http://www2.xp-dev.com/sc/change/94227/85 Fixed bug with chat disappearing. Fixed AI bug when combat plans always finished with REASON_CANT_WALK. Rev.84 http://www2.xp-dev.com/sc/change/94227/84 Fix for DT params reading. Rev.83 http://www2.xp-dev.com/sc/change/94227/83 Safety checks for radio commands. Rev.82 http://www2.xp-dev.com/sc/change/94227/82 Fixes of some dialogues; translations of dialogues on Barterground; map fixes; fixes of encounter table; slight fixes. Rev.81 http://www2.xp-dev.com/sc/change/94227/81 Fixed another bug during moving on the global map. Fixed unplanned activating of b/w effect. Rev.80 http://www2.xp-dev.com/sc/change/94227/80 Fixed teleportation bug during moving on the global map. Rev.79 http://www2.xp-dev.com/sc/change/94227/79 Fixed bug with incorrect tear and wear and fuel consumption calculation during moving on the global map by car. Rev.78 http://www2.xp-dev.com/sc/change/94227/78 Fixed brightness output. Fixed outlining activation. Rev.77 http://www2.xp-dev.com/sc/change/94227/77 Added automatic sprite cutting. Main purpose – correct displaying of long walls. Parameter SpriteCut was added to prototypes and mapper (only for scenery) for modification. Cutting values: 0 – switched off, 1 – horizontal (X axis), 2 – vertical (Y axis). Wall blocks should be set manually , for that purpose six blocks with different corner types with visual indication were added. It is necessary for correct calculation of brightness and egg of transparence reaction. Numbers 6800..6805 at the end of Wall and Fast list. Fixed client instability after recent update. Primary indexes array for animations was expanded to the range ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789. For value changing use native means (structure CritterType in fonline.h). Support of effects (HLSL) loading with earlier version of compiler. Automatic attempt of compilation is performed after failure in compilation with the current library. Added data updating for client function GetIniStr in the start function (start) after each call of LoadDataFile. Mapper update: Fixed bug with error in loading tiles with extension not in lower case. Fixed algorithm of sprite displaying calculation (when big sprites were disappearing near the screen edge). Additional visual means for debugging: - Ctrl + Q: Corners type viewing; - Ctrl + W: Viewing the result of sprite cutting, linking them to hexes; - Ctrl + E: Viewing the sequence of sprites drawing. At the time of renewing NPC’s bag, only items which are not in inventory are repaired and reloaded. Added ability to set sprite shift in screen coordinates to prototypes. Fixed bug with double notification of quest state change. Rev.76 http://www2.xp-dev.com/sc/change/94227/76 Added quest “Night is tender” Rev.75 http://www2.xp-dev.com/sc/change/94227/75 Tables for sea encounters, slight fixes. Rev.74 http://www2.xp-dev.com/sc/change/94227/74 Source documentation. Rev.73 http://www2.xp-dev.com/sc/change/94227/73 SPECIAL calculating is moved to native scripts - fonline_tla.dll for server and fonline_tla_client.dll for client (must be situated in data\scripts). The other parameters which are used in the engine are needed generally for drawing GUI, but soon they’ll be moved to scripts too. Native scripts files are moved from data folder to scripts. Added bat-file make_tla.bat for their compilation (installation of MSVS8 is necessary). For example of use new methods for critter classes are added (IsInjured, IsDmgArm...), items (IsHtHAttack, IsGunAttack...) with pragma bindfunc. Example of linking global varieties of standard and native scripts is added (__HitAimEyes, __HitAimHead..., these global varieties are moved to scripts). Callback functions are added (to GameOptions) for item usage cost determination - GetUseApCost. For attack max range determination - - GetAttackDistantion. It further such functions will force out usage of critter parameters in the engine. These functions are binded at the stage of connecting of library to the engine (DllMainEx). For operating with the engine added the next functions (to GameOptions): CritterChangeParameter – for correct change of critter parameter, this function should be called firstly, then you can change the value. CritterTypes – index of CritterType structures where data from CritterTypes.cfg is stored. Added method to client’s critters for detection whether now is time of its move in the turn-based mode bool CritterCl::IsTurnBasedTurn() const Some logics of operating with turn-based mode is moved to the scripts - turn_based_process main.fos. Some recommended specifications for the reserved functions are changed - templates.fos. Min. time of dialogue or barter with NPC now is regulated by the global varieties __DlgTalkMinTime (now default 100 seconds) и __DlgBarterMinTime (now default 50 seconds). Range for all prototypes (maps, locations, items) is expanded to 30000. Fixed bug with incorrect drawing of minimap in the pipboy. Fixed bug with incorrect calculating of healing rate while registration. Fixes of Zerg’s special encounter. Rev.72 http://www2.xp-dev.com/sc/change/94227/72 Data library for script compilation (updated on 27 October) Rev.71 http://www2.xp-dev.com/sc/change/94227/71 Added Zerg special encounter. Fixed bug with incorrect names in Fixboy. Added function LoadDataFile to server scripts, analogue of client/mapper. Fixed mistiming of player movement on global map. Deleted function Critter::SendQuestVar, now alert about changing of local variable is automatic. Changed function specification void ShowScreen(int screenType, uint param, string& funcName) to void ShowScreen(int screenType, uint param, string@+ funcName), now can transmit both empty string or null. Rev.70 http://www2.xp-dev.com/sc/change/94227/70 Documentation is updated. Deleted incorrect splash-picture. Added urgent files for scripts autoaddition in Notepad++. Rev.69 http://www2.xp-dev.com/sc/change/94227/69 Added ability to use your own shaders for game graphics drawing. High Level Shader Language is used for this. Effects folder is situated in data\effects. After the first compilation they are cashed in the folder data\cache (in futher other different data will be cashed there). You can read specifications on the game engine effects in data\effects\ReadMe.txt. Added ability to link any effect to sprite or model in .fofrm and .fo3d (“effect=effect_name.fx”). For default effect changing, function void SetEffect(int effectType, int effectSubtype, string@+ effectName) was implemented into the client scripts. int effectType, effectSubtype – effect types look in _client_defines.fos (Subtype for fonts used font type); string@+ effectName – the name of the effect file (with extension) is in the folder data\effects. Added changing of detailization of game objects for demonstration. For activation press Alt+W, for return press Alt+Q. Added client function for map redrawing void RefreshMap(bool onlyTiles, bool onlyRoof, bool onlyLight) if all three parameters are false, than everything will be redrawed. Also these three parameters are incompatible. Fixed bug in mapper with impossibility of viewing 3d critters in prototypes table. At present time they can’t be ranged. Added ability to play sounds/music from different folders. void RefreshMap(bool onlyTiles, bool onlyRoof, bool onlyLight) If there isn’t slashes (‘/’,‘\’) in path name than search is performed in the folder sfx/music. If there are slashes, than in the root (“data/mysounds/mysound.ogg”). Rev.68 http://www2.xp-dev.com/sc/change/94227/68 Fixed bug in the ObjectEditor when damage type is saved incorrectly. Rev.67 http://www2.xp-dev.com/sc/change/94227/67 Fixed crashing when calling CritterCl::[Param/Stat/Perk/etc]Base in client scripts; Fixed error with recording Anydata of zero length (by Atom). Rev.66 http://www2.xp-dev.com/sc/change/94227/66 Fixed incorrect weapon prototype; errors in checking for special encounters; added decraft of the sand sack to fixboy; other little fixes. Rev.65 http://www2.xp-dev.com/sc/change/94227/65 Redding: finished map according to the last concept; - Garbage was returned to static locations; - Ammo craft on benches (beta-version); - Destruction of the sack using skill repair now gives use empty sack. - Entering Den message was moved to texts from script. Rev.64 http://www2.xp-dev.com/sc/change/94227/64 AngelScript updated to 732 revision. Added new methods for arrays: void T[]::insertAt(uint, const T&) – element inserting in specified position in the array; void T[]::removeAt(uint) – deleting the element by index; void T[]::insertFirst(const T&) – element inserting to the beginning of the array; void T[]::removeFirst() – deleting the first element; void T[]::insertLast(const T&) – element inserting to the end of the array; void T[]::removeLast() – deleting the last element; void T[]::grow(uint) – add elements (the sames as a.resize(length()+X)); void T[]::reduce(uint) – delete elements (the same as a.resize(length()-X)); T& T[]::first() – call of the first element of the array (the same as a[0]); T& T[]::last() – call of the last element of the array (the same as a[a.length()-1]). Also deleted all functions ArrayPushBack as the built-in array functional was expanded. All the scripts were fixed accordingly. Rev.63 http://www2.xp-dev.com/sc/change/94227/63 Added ability to start the server as a service. For registration/start use key “-service” (shortcut FOServerService.exe.lnk). For deleting use keys “-service -delete” (shortcut FOServerServiceDelete.exe.lnk). Added ability to log using function OutputDebugString. The log can be caught (even remotely) using program DebugView http://technet.microsoft.com/en-us/sysinternals/bb896647.aspx For switching it on in server and client configs option LoggingDebugOutput is added. Server/client/mapper will work normally now with incorrect active folders. At start you set the current folder of executable. Fixed bug with absence of replacement “x” by “ч” in built-in punto switcher. Fixed crash in turn based mode and incorrect work of Map::GetCritter(uint critterId). Rev.62 http://www2.xp-dev.com/sc/change/94227/62 Fixed bug with updating vehicle data on the global map. Fixed bug with system hanging while looking items quantity in game info. Fixed bug with the incorrect login/disconnect. Fixed bug with incorrect creating non-stacking items on the map in the number of >1. Fixed bug with incorrect critters gathering when path tracing (by Atom). CRITTER_EVENT_TALK now performed before checking NPC for settings which could restrict speaking with it. Added new mechanism for script garbage gathering (by Atom). For config file simplification, the next options were removed: ASGarbageTime, VarsGarbageTime. Deleted transfer of a group of critters into global map processing global_process, CRITTER_EVENT_GLOBAL_PROCESS. Also instead of transferring a group into global map processing global_invite, CRITTER_EVENT_GLOBAL_INVITE, now only the leader is transferred. Instead of picking group use Critter@[]@ Critter::GetGlobalGroup(). Because of that, specification methods were changed: bool Critter::EventGlobalProcess(int type, Critter@[]& group, ...) bool Critter::EventGlobalInvite(Critter@[]& group, ...) for bool Critter::EventGlobalProcess(int type, Critter& cr, ...) bool Critter::EventGlobalInvite(Critter& leader, ...) Reserved functions of critter event CRITTER_EVENT_GLOBAL_PROCESS, CRITTER_EVENT_GLOBAL_INVITE bool _FuncName(Critter& cr, int type, Critter@[]& group, ...) bool _FuncName(Critter& leader, Critter@[]& group, ...) for bool _FuncName(Critter& cr, int type, ...) bool _FuncName(Critter& leader, ...) Fixed bug with incorrect cooldown for hijacking, now it is equal for a normal lock. Added checking for unopenable door to the lock break script. Rev.61 http://www2.xp-dev.com/sc/change/94227/61 Fixed bug with incorrect reappraisal of item flags in Mapper. Fixed bug when player isn't notified about moved item. Rev.60 http://www2.xp-dev.com/sc/change/94227/60 Fixed bug with incorrect displaying of the rain on roofs. Rev.59 http://www2.xp-dev.com/sc/change/94227/59 Mapper's fix for correct operating with new folder and print's names. Rev.58 http://www2.xp-dev.com/sc/change/94227/58 For editing use program Bitmap Font Generator v1.12. http://www.angelcode.com/products/bmfont/ Print should have the next attributes - OEM RUSSIAN, Padding 1 (in all directions), Binary, all symbols should be placed on the one texture. All prints are moved in the separate folder “Client\data\fonts\”. For the example print FONT_COURIER_NEW_SMALL is added. Look _client_defines.fos, client_main.fos, CourierNewSmall.bmfc, CourierNewSmall.fnt, CourierNewSmall_0.png. Added function in client’s scripts of activating the clock which shows you the time signal comes to server and returns (ping). You can use it for restriction of input while waiting for server’s answer. Fixed crushing when looking players statistics on server. Fixed crushing of Dialogue Editor (by Atom). Rev.57 http://www2.xp-dev.com/sc/change/94227/57 Expanded mechanism of operating with ingame radio. Added flag ITEM_RADIO for radio. (in _defines.fos). Radio messages are now also sent to radios which are on the ground . For their identification engine sends them with color 0xFFFFFFFE (in map_message in client_main.fos). Realization is in script radio.fos (interface, mechanics), call from main.fos. Interface data is taken from default.ini (Radio*). You can edit it with using item or using science skill on it. Radio data is situated in general fields of several item types. That’s why it isn’t a good idea to use this flag with Doors, Keys, Cars, Weapons, Armors, Holodiscs. Transmitting and receiving functions are separated. For managing the next flags and range types are used (_defines.fos): Restriction of transmitting/receiving is stored in Item/ItemCl::RadioFlags, used by the engine: RADIO_DISABLE_SEND, RADIO_DISABLE_RECV. Restriction of switching radio state in в Item/ItemCl::RadioFlags: RADIO_DISABLE_SHIFT_SEND, RADIO_DISABLE_SHIFT_RECV - restriction of switching transmit/receive; RADIO_DISABLE_SHIFT_BC_SEND, RADIO_DISABLE_SHIFT_BC_RECV - restriction of changing distance range; RADIO_DISABLE_SHIFT_CHANNEL – restriction of channel switching. Range types are stored in Item/ItemCl::RadioBroadcastSend/RadioBroadcastRecv, are used by the engine: RADIO_BROADCAST_WORLD – works all over the world; RADIO_BROADCAST_MAP – works within the limits of the current map; RADIO_BROADCAST_LOCATION - works within the limits of the current location; RADIO_BROADCAST_ZONE(x) - works within the limits of “x” zones on the global map; RADIO_BROADCAST_FORCE_ALL – works everywhere regardless of the adjustments of transmitting or receiving radio/ Added support of these flags to the object editor (both engine and script ones). Added scripts uint16 ProtoItem::RadioChannel, uint16 ProtoItem::RadioFlags, uint8 ProtoItem::RadioBroadcastSend, uint8 ProtoItem::RadioBroadcastRecv. For holodisc marking added flag ITEM_HOLODISK (in _defines.fos). Holodisc data is situated in general fields of several item types. That’s why it isn’t a good idea to use this flag with Doors, Keys, Cars, Weapons, Armors, Holodiscs. Added support of this flag in object editor. Added script uint ProtoItem::HolodiskNum. Added ability to use built-in cartridge indicator for other purposes. Added the next parameters: uint8 ProtoItem::IndicatorStart – initial value, - Item/ItemCl::Indicator; uint8 ProtoItem::IndicatorMax – maximum available value (for correct calculation of the strip position); uint8 Item/ItemCl::Indicator – current value. Mechanism is considered activated if maximum value in the prototype isn’t equal to zero. Added support of editing of initial and maximum values in the object editor. Method Item::GetMapPosition for the items which are in the global map returns their coordinates. Fixed bug with system hanging while looking online statistics. Added storing up to 20 ip addresses for one account (fonline.h). Item prototype’s fields, which are equal to zero, now cannot be saved. All prototypes are resaved. Continued working on multithreading in game logics. Added ignoring of non-initialized maps or locations while loading save (NPC’s would be moved to global map, items - deleted). Fixed bug in the dialogue on BiX location. Updated abilities of GUI scripting. In script _defines.fos notes “Used in engine” are replaced by “Hardcoded”; point is the same - to show that this data is used by engine also. Corrected some specifications in template.fos of reserved functions. Rev.56 http://www2.xp-dev.com/sc/change/94227/56 Changes in craft: some new recipe's (new weapon, etc.), added workbenches in some town/military bases. Rev.55 http://www2.xp-dev.com/sc/change/94227/55 - Updated Redding maps; - Deleted unused graphics; - Added second entrance to NCR; - Some changes in NPC's inventories on encounters. Rev.54 http://www2.xp-dev.com/sc/change/94227/54 - Slight fixes in Hartman's and Shrim's dialogues (Vault City); - Fixed problem with immediate sending off caravans/patrols Ahe9mPDq; - Changed content of the quest variable for the quest "Third trial. Drill." - Restored functions for triggers t_DialogNpc and scenery s_TransitToMap. Rev.53 http://www2.xp-dev.com/sc/change/94227/53 Fixes of KotW location. Quest for oil can can be done by everybody in Arroyo now. Rev.52 http://www2.xp-dev.com/sc/change/94227/52 Fixes of Brok and Xander Church location (by VaultTec) Rev.51 http://www2.xp-dev.com/sc/change/94227/51 Fixed names loading (*Names.lst) with the dialogue editor. Changed extention of its config file. Rev.50 http://www2.xp-dev.com/sc/change/94227/50 Fixed bug with duplicating of time events. Rev.49 http://www2.xp-dev.com/sc/change/94227/49 Slight optimization of multi-threading. Rev.48 http://www2.xp-dev.com/sc/change/94227/48 Fixed error in loading of games variables values. Fixed loading of saves games in single player mode. Rev.47 http://www2.xp-dev.com/sc/change/94227/47 Time events changes. - function specification void EraseTimeEvent(uint num) changed to bool EraseTimeEvent(uint num) Return value shows whether deleting is done or the event isn't found. - Deleted the next functions: uint CreateTimeEvent(uint beginSecond, string& funcName, Critter& cr, bool save) uint CreateTimeEvent(uint beginSecond, string& funcName, Item& item, bool save) uint CreateTimeEvent(uint beginSecond, string& funcName, Critter@[]+ critters, Item[]@+ items, bool save) For migration just put the identificator to the critter or item. Added the next functions for operating with event's values: bool GetTimeEvent(uint num, uint& duration, uint[]@+ values) bool GetTimeEvent(uint num, uint& duration, int[]@+ values) bool SetTimeEvent(uint num, uint duration, uint[]@+ values) bool SetTimeEvent(uint num, uint duration, int[]@+ values) Parametr "duration" - time till the event is done in seconds. Return value means that operation is completed, error means that event wasn't found. These functions are thread-safe, 2 thread can't operate with the events simultaneously. Function GetTimeEvent blocks using (changing) of the event until the script is finished or until SetTimeEvent is called, which unblocks the event. GetTimeEvent writes value to the end of the array, SetTimeEvent rewrites it completely. When null is transmitted to values SetTimeEvent values are not changed. - Event function specification can be of two types now: uint e_FuncName(uint[]@ values) uint e_FuncName(int[]@ values) Fixed bug with crashing while loading 3ds file without texture coordinates. Rev.46 http://www2.xp-dev.com/sc/change/94227/46 Added next fuctional for operating with files (class "file"): - for data reading uint8 file::readUint8() uint16 file::readUint16() uint32 file::readUint32() uint64 file::readUint64() In the case of error or the end of file it returns 0. uint file::readData(uint count, uint8[]& data) If data == 0 then program read all data till the end of the file beginning from the current position. Read data is added to the end of the array. The return value shows the real amount of read bytes. - For data recording bool file::writeUint8(uint8 data) bool file::writeUint16(uint16 data) bool file::writeUint32(uint32 data) bool file::writeUint64(uint64 data) bool file::writeData(uint8[]& data, uint count) If count == 0 it records all data from an array. In the case of error it returns false. Fixed bug with incorrect output of zoom value on minimap. Rev.45 http://www2.xp-dev.com/sc/change/94227/45 Extended range of game variables: - local variable of location (LLVAR_); - local variable of map (LMVAR_); - local variable of item (LIVAR_). When using them in dialogue values are taken from: for location - current critter's location; for map - current critter's map; for item - current item in the main slot. For operating with scripts use function GetLocalVar with transmitting of needed operator. Server will delete unused variables of all types automatically. Deleted server function uint DeleteVars(uint id). Dialog editor was adapted to the last updates of game variables. Added ability to define named value (DefineNames.lst) as a value for conditions and results. Added missed translations. Translations of commit history you can find here: http://www.xp-dev.com/forum/topic/3220 Rev.44 http://www2.xp-dev.com/sc/change/94227/44 Updated format of time output in dialogue with repairer-npc; Added script for realization of npc-travellers on global map.(traveller.fos and Davine's script in sf_common.fos); Added npc-traveller explosives-seller Davine. Can be hired in GECK town; Added trade mode "cash only" MODE_BARTER_ONLY_CASH; Fixed bugs in maps structure on maps with holodiscs. Rev.43 http://www2.xp-dev.com/sc/change/94227/43 Added setting in config which defines whether to bind logic threads to the core or let OS do it. In default it is enabled (1) 1. If zero then operating system automatically manage threads between cores, else affinity thread per core LogicThreadSetAffinity=1 Continued work on multi-threading of game logics. Rev.42 http://www2.xp-dev.com/sc/change/94227/42 Fixed crashing under certain conditions; Fixed cycle counting per second. Rev.41 http://www2.xp-dev.com/sc/change/94227/41 Fixed bug connected with the last update. Rev.40 http://www2.xp-dev.com/sc/change/94227/40 Multi-threading of game logics is now supported. You can read about this in details on the forum; Fixed path of recording/reading ban files; Added seconds on the globalmap clock; Decreased permissible length of text listener of channels and maps from 5 to 2 symbols; Deleted global server function void DeleteNpcForce(Critter& npc); Changed specification of method from uint Location::GetMaps(Map@[]& maps) const to uint Location::GetMaps(Map@[]@+ maps) const Now you can know the amount of maps on the location without recording them into array; Added basic server command ~log (~37). It is intended for text listening of server log. Minimum access: administrator. For adding to text listening you should transmit arguement "+", for disconnecting "-"; Fixed basic creating locations command ~addloc (~16); Upgraded basic command of looking player's id using his name ~id (~4); Changed specifications of global functions void critter_attack(Critter& cr, Critter& target, ProtoItem& weapon, ProtoItem@ ammo, uint8 aim) -> void critter_attack(Critter& cr, Critter& target, ProtoItem& weapon, uint8 weaponMode, ProtoItem@ ammo) int to_hit(CritterCl& chosen, CritterCl& target, ProtoItem& weapon, int hitLocation) -> int to_hit(CritterCl& chosen, CritterCl& target, ProtoItem& weapon, uint8 weaponMode); Added variables for weapons which state their active mode const uint8 Item::Mode const uint8 ItemCl::Mode 4 high-order bits - sight (look Hit locations in _defines.fos), 4 low-order bits - mode (0 – primary, 1 – secondary, 2 – third); Added macroses for convenience _WeaponModeUse, _WeaponModeAim, _WeaponModeMake в _macros.fos; Added returnable value of the current mode in method GetSlotProto (urgent for weapons) ProtoItem@+ Critter/CritterCl::GetSlotProto(int slot, uint8& mode) const; Renamed parametr #define ST_RATE_ITEM (102) to #define ST_HANDS_ITEM_AND_MODE (102) value stored in it: XXXX00YY, where XXXX pid - unarmed blow, and YY - mode. Changed way of the dialogue redirecting. You should use returnable value of result function or say-mode instead of uint __ForceDialog; Added specifications of functions: uint r_FuncName(...), uint dlg_FuncName(...) which are detected by server automatically; Fixed bug with moving pushed players only in one direction; Object pointers (derivatives arrays or class members)Location, Map, Critter, Item, GameVar can't be saved in global varities now. For scripts migration save their identificators (Location::Id, Map::Id, Critter::Id, Item::Id), addresing to the objects with (GetLocation, GetMap, GetCritter, GetItem). Weapons prototypes don't save curret mode of fire (in connection with multi-threading). Changed specifications of class members ProtoItem const uint8 Weapon_Skill, const uint8 Weapon_DmgType, const uint8 Weapon_Anim2, const uint16 Weapon_DmgMin, const uint16 Weapon_DmgMax, const uint16 Weapon_MaxDist, const uint16 Weapon_Effect, const uint16 Weapon_Round, const uint8 Weapon_ApCost, const uint8 Weapon_SoundId, const bool Weapon_Remove, const bool Weapon_Aim, const uint8 Weapon_CurrentUse, void Weapon_SetUse(uint8 use) const to const uint16 Weapon_Skill_F, const uint16 Weapon_Skill_S, const uint16 Weapon_Skill_T, const uint16 Weapon_DmgType_F, const uint16 Weapon_DmgType_S, const uint16 Weapon_DmgType_T, const uint16 Weapon_Anim2_F, const uint16 Weapon_Anim2_S, const uint16 Weapon_Anim2_T, const uint16 Weapon_DmgMin_F, const uint16 Weapon_DmgMin_S, const uint16 Weapon_DmgMin_T, const uint16 Weapon_DmgMax_F, const uint16 Weapon_DmgMax_S, const uint16 Weapon_DmgMax_T, const uint16 Weapon_MaxDist_F, const uint16 Weapon_MaxDist_S, const uint16 Weapon_MaxDist_T, const uint16 Weapon_Effect_F, const uint16 Weapon_Effect_S, const uint16 Weapon_Effect_T, const uint16 Weapon_Round_F, const uint16 Weapon_Round_S, const uint16 Weapon_Round_T, const uint16 Weapon_ApCost_F, const uint16 Weapon_ApCost_S, const uint16 Weapon_ApCost_T, const uint8 Weapon_SoundId_F, const uint8 Weapon_SoundId_S, const uint8 Weapon_SoundId_T, const bool Weapon_Remove_F, const bool Weapon_Remove_S, const bool Weapon_Remove_T, const bool Weapon_Aim_F, const bool Weapon_Aim_S, const bool Weapon_Aim_T Added special macros for convenience (Weapon in _macros.fos) _WeaponIsPrimaryAviable, _WeaponIsSecondaryAviable, _WeaponIsThirdAviable, _WeaponSkill, _WeaponDmgType, _WeaponAnim2, _WeaponDmgMin, _WeaponDmgMax, _WeaponMaxDist, _WeaponEffect, _WeaponRound, _WeaponApCost, _WeaponSoundId, _WeaponRemove, _WeaponAim, _WeaponModeUse, _WeaponModeAim, _WeaponModeMake Mapper updates: string@ MapperObject::PicMap/PicInv now return prototype's picturename if other isn't set up; Added const uint16 MapperMap::Width, const uint16 MapperMap::Height for storing current map sizes; Fixed function GetMapFileNames(...). Rev.39 http://www2.xp-dev.com/sc/change/94227/39 Slight fixes of quests in Den, Klamath Improved closed location in Redding Rev.38 http://www2.xp-dev.com/sc/change/94227/38 Slight fixes of quests from string "Guard"; Added services for guardsmen: doc. Troy can heal player; give stimpacks; Valery repairs items; Added universal repairing script for npc (repairer.fos). E.g. in the dialogue vc_valery.foldg 3 new special encounters with holodiscs; Several deleted functions from stdlib are returned. Rev.37 http://www2.xp-dev.com/sc/change/94227/37 Fix of calculating amount of dead NPC on location when necessity of attack is being determinated. Fix of amount loss allies counter when finishing the quest. Output of messages to log is disabled in quest “The drill”. Fix of limit of times amount quest “Dangerous hunt” can be done. Descriptions of deleted maps were returned, which made server restart impossible without saves clearing. Rev.36 http://www2.xp-dev.com/sc/change/94227/36 Fix of Hartman’s dialog. The wrong requirement was deleted. Rev.35 http://www2.xp-dev.com/sc/change/94227/35 New quests from string “Guard” in Vaultcity - Vaultcity guard. Third trial. Drill. - Easy walk. - Go there, don’t know where. - Dangerous hunt. - Diplomatic courier. Fix of caravan’s and patrol’s departure time. Relative departure time was substituted for absolute. Added ability of caravan’s instant departure from the dialog. Fix of items that were generated in encounters 0 in number. (It was impossible to throw out them) Fix of quest “Hub bibliography”. Player need 7 books to gain reputation instead of 6. Rev.34 http://www2.xp-dev.com/sc/change/94227/34 - Maps fixes - Fixed reaction of BG guards on explosives activation Rev.33 http://www2.xp-dev.com/sc/change/94227/33 - Graphics fixes - Non-used files were deleted - Original map of BG was returned Rev.32 http://www2.xp-dev.com/sc/change/94227/32 Private car parking in geck town is disabled till the problem with car boot is solved. Rev.31 http://www2.xp-dev.com/sc/change/94227/31 Added first quests of string “Guardsman”, VaultCity. (Clearing of server saves is needed) Added template for making quests-combats with npc. (fighter_quest.fos, e.g. “Guard. First trial.”) Added ability to take quest “Hub bibliography” again if player failed to finish it at previous time. Fixed incorrect condition in Dappo’s dialogue in quest “Lot of defective rifles”. Added verification of addressee in “Postman” quest, now player can’t bring letter to any npc of type stated in the letter. Rev.30 http://www2.xp-dev.com/sc/change/94227/30 Deleted not used MSG files - FOSCRIPT.MSG. Rev.29 http://www2.xp-dev.com/sc/change/94227/29 Updates of way of making records into log. Added ability to look the name of the thread which made a record. Option in config – LoggingThread. You can also turn on output in the server application using “Logging with thread”. Changed format of time output. Now it is not “time in ms”, but “hours:minutes:seconds:milliseconds”. Rev.28 http://www2.xp-dev.com/sc/change/94227/28 Fix and formatting. Rev.27 http://www2.xp-dev.com/sc/change/94227/27 Fixed mistakes in calculating karma in quest "Returning of the fugitive". Rev.26 http://www2.xp-dev.com/sc/change/94227/26 Changes on Church of Brok and Xander location: - fixed Preacher, Scientist, repairer Alechandro, Cook, Mickey dialogs; - quests work correctly now; - repairer Alechandro identifies items correctly; - ability to record the information about Church was added (after completing Preacher's quest). Rev.25 http://www2.xp-dev.com/sc/change/94227/25 Activating time of dynamite was fixed. Rev.24 http://www2.xp-dev.com/sc/change/94227/24 New algorithm of generating of pseudorandom variables was added (Mersenne twister). Previously was standart C algorythm srand/rand. Rev.23 http://www2.xp-dev.com/sc/change/94227/23 Energy barrier on the entrance of GECK town was improved. Rev.22 http://www2.xp-dev.com/sc/change/94227/22 Fixed client crashing on start. For preventing this bug in future the control system of versions of cashed scripts in the client has been added. Rev.21 http://www2.xp-dev.com/sc/change/94227/21 Fixed problem when it was impossible to add players to GECK town after removing them with option "Clear list". Rev.20 http://www2.xp-dev.com/sc/change/94227/20 Fixed cooldown of the Postman quest. Rev.19 http://www2.xp-dev.com/sc/change/94227/19 Wrongly deleted dialogs are returned. Rev.18 http://www2.xp-dev.com/sc/change/94227/18 Fixes Deleted not used files. Fixed errors when player removes child killer karma additional times. Fixed error with incorrect name of script of map_v15_village map. Added output of message of increasing trade skill when finishing “Farm vermins” quest to the log. Weakened the giant wasp in the quest in Modoc. Rev.17 http://www2.xp-dev.com/sc/change/94227/17 AngelScript was updated to rev.684, v. 2.19.2 Added global variables to the client: bool __ShowTile, __ShowRoof, __ShowItem, __ShowScen, __ShowWall, __ShowCrit, __ShowFast, __ShowPlayerNames, __ShowNpcNames, __ShowCritId. Deleted limit of min. time of using Map::SetLoopTime (it was 1 second). Fixed registration of the global variables of string type (pragma globalvar). Fixed using reserved global variables string type. Added global variables to mapper: string __ClientPath, __ServerPath. Deleted constant modificators in client from string CritterlCl::Name, CritterlCl::Lexems. Added variable CritterlCl::NameOnHead, which if is not empty, outputted above critter’s head. Rev.16 http://www2.xp-dev.com/sc/change/94227/16 Fixed reclearing of child killer status. Rev.15 http://www2.xp-dev.com/sc/change/94227/15 Fixes: - Fixed names of Giant Wasps and bugs in kills statistic; - Reduced requirements of amount of killed mobs and intelligence in Broken Hills quests (bh_marcus.fodlg, bh_super.fodlg); - Reduced requirement of intelligence for “Fresh blood” quest (vc_doctor_troy.foldg); - Fixed possibility of gaining experience multiple times in “Cabbage” quest in Modoc (mod_farmer_q.fodlg); - Player receives reputation in NCR for quest “True cowboy” even if only one Brahmin is brought (ncr_felix.fodlg); - Michael’s miniquest in NCR can be done by every player only once (ncr_michael.fodlg); - Added requirement of 16 level for “buggy” quest (ncr_ratch.fodlg); - Fixed amount of gaining experience when player rejects gratuity in “Postman” quest (q_mail_reciever.fodlg); - Fixed cooldown of “Postman” quest; - Cave mobs – spawn point near the exit grid was removed in the smallest cave; - Fixes of several dialogues in Vault City; - New quest – “Fugitive returning” – when finished, status “Child killer” is removed. Hubbologist in Redding bank offers this quest; - New quest “Farm vermines”. It is offered by Joe in Modoc (mod_joe.fodlg); - Fixed energy barrier in GECK town; - Added computer for breaking of energy barrier inside the town; - Added car lots for GECK town citizens (not more than 2); - Added ability of clearing of citizens list by town leader using the terminal. Rev.14 http://www2.xp-dev.com/sc/change/94227/14 Update for Notepad++ (Syntax_highlighting, autocomplete, function parameters hints) Rev.13 http://www2.xp-dev.com/sc/change/94227/13 First stable version.h3. Your title here...Rev.183 http://www2.xp-dev.com/sc/change/94227/183 Lo Pan’s mercenaries call leader’s name correctly now. Nancy and Sid’s quest location now is deleted after leaving it (previously it wasn’t deleted and hanged in the memory). SF docs were excluded from NoPvP locations. Letters generation in Postman quest was fixed. Holodisk with combat robot’s video recordings can be given to Buster now. Shaneman’s documents now have description in “Diplomatic mission” quest. A dialogue between bar clients in outer Vault City was added (wipe is required). Mini quest “Seduce art” was added in Klamath (wipe is required). Rev.182 http://www2.xp-dev.com/sc/change/94227/182 NPC-travellers will no longer take dead characters to the global map. Atoll was removed from Eli’s destinations. Skill displaying when increasing it through the dialogue was fixed. The mistakes in the newcomer’s dialogues in “Anger” quest were fixed. The mistake in mercenaries script which caused the leaving the employer earlier was fixed. Rev.181 http://www2.xp-dev.com/sc/change/94227/181 Reading nicknames from ignor list file was fixed. Console command for adding a player to the ignor list was added ~ignore PlayerName. Rev.180 http://www2.xp-dev.com/sc/change/94227/180 Mechanism of reputation calculation was switched off due to its incorrect work. Now all the list will be visible, but will work correctly. Rev.179 http://www2.xp-dev.com/sc/change/94227/179 Network protocol bug which caused short hangs up was fixed. Client's script was fixed which could cause null parameter call. Rev.178 http://www2.xp-dev.com/sc/change/94227/178 Superfluous rifles on offer were fixed. Rev.177 http://www2.xp-dev.com/sc/change/94227/177 Game version increment. Rev.176 http://www2.xp-dev.com/sc/change/94227/176 Sequence of handlers calling was fixed MAP_EVENT_OUT_CRITTER, MAP_EVENT_IN_CRITTER now the first one is called initially, then the second On intro_init map static lighting was set. Group moving indication on the global map was fixed (previous update bug). Rev.175 http://www2.xp-dev.com/sc/change/94227/175 Console command ~globalmap was added. It moves player to global map. It works only on noPvP maps for players not in combat mode and with noPvP mode turned on. In caravans and travellers scripts functions of moving to final destination's map were updated. Rev.174 http://www2.xp-dev.com/sc/change/94227/174 Porting game to Linux was started. Also supporting of 64 bit platforms. Client’s native libraries are now transmitted automatically. They are stored in ‘Client/data/cache’. Folder with scripts ‘Client/data/scripts’ is not used anymore and was deleted. To the server’s folder library STLPort (http://www.stlport.org/) was added. Client’s libraries are now compiling with it’s help. It is connected with porting to other platforms. Additional methods of moving were added to critters in server scripts bool Critter::TransitToMap(uint mapId, uint16 hexX, uint16 hexY, uint8 dir, bool withGroup) bool Critter::TransitToMap(uint mapId, int entireNum, bool withGroup) bool withGroup – when moving from global map to local map, all the group will be moved. Regular TransitToMap (without bool withGroup) work as with withGroup == false. Previously they worked as как withGroup == true, what led to moving all the group when replicating, if dead critter was on the global map. 3d critters were switched off. For switching on see PLAYERS_3D in _defines.fos. Constants for operating with game constants were added(see 168 revision, http://www2.xp-dev.com/sc/change/94227/168). Specification for the reserved function Log in native scripts was changed. Now the first returned parameter is function’s name from which it was called. Rev.173 http://www2.xp-dev.com/sc/change/94227/173 Traders were added to Atoll and Redding. Barterground was moved to position 690:760 as it isn’t needed anymore in north-west region due to noPvP mode. Locations “BiX Church” and “Atom’s Church” were moved to special encounters class. Fixed rewards in some quests. Maps fixes. Biscuit on Modoc can be received only once now (as in Fallout 2). Rev.172 http://www2.xp-dev.com/sc/change/94227/172 noPvP mode was activated on some TLA maps. It will be used on the next TLA session. For switching it off on your server set global variable __NoPvpMaps=false; in script config.fos Ability of making a list of ignored players, it works similarly NameColorizing. It needs manual adding nickname of ignored player to IgnoreList.txt For refreshing the list of ignored players in game use console command ~ignorelist. Rev.171 http://www2.xp-dev.com/sc/change/94227/171 Derivative objects system for mapper was updated. When placing base object, all his derivatives are placed automatically. If one object from the group is being selected - all others are being selected too. If the prototype or position of the derivative object is changed, changes will be automatically applied by mapper or server when loading. For the example see cars, at the present time they have one derivative object – their trunk. Now when placing the car, it will be created automatically, also it will be moved with it and if base or derivative object is deleted, all the group will be deleted too. The system of moving selected objects in mapper was upgraded. Now in hexagonal system the selected objects will be moved without being tearing apart. Also the selected objects, when being moved, will stop at the map’s edge, so they won’t mix into a pile. The problem with detecting whether items in container belong to their inventory or container. Previously items were placing on the hex and if you place two containers on the same hex, all the items will stack in one container. Now it is fixed. Item::TrapValue initialization through mapper was fixed. If rewriting is performed on prototypes loading, alert is displayed. It was added for items and critters prototypes. In object’s structure in mapper was deleted field const bool Item_InContainer and added const uint UID, ContainerUID, ParentUID, ParentChildIndex Rev.170 http://www2.xp-dev.com/sc/change/94227/170 Now server doesn't block client's libraries while working. Previously you needed to stop the server to replace client's dll (Server/scripts/fonline_tla_client.dll). Rev.169 http://www2.xp-dev.com/sc/change/94227/169 Combined content of MASTER.DAT + CRITTER.DAT. Size - 201 MB! Rev.168 http://www2.xp-dev.com/sc/change/94227/168 Client and Mapper are no longer bounded with Fallout’s data files - MASTER.DAT and CRITTER.DAT. These files content is combined (excess data is deleted) and packed into fallout.dat (will be uploaded with the next update) and defined in DataFiles.cfg. Global variables string __MasterPath, __CritterPath were deleted. The configurator (FOConfig.exe) is updated accordingly fixes above. Critter’s lighting in the death moment and flat items lighting was fixed. To server/client/mapper scripts the next functions for operating with the constants (*Names.lst) were added: int GetConstantValue(int constCollection, string@+ name) – identifying constant’s value by the name; string@ GetConstantName(int constCollection, int value) - identifying constant’s name by the value; void AddConstant(int constCollection, string@+ name, int value) – adding separate constant to the collection; bool LoadConstants(int constCollection, string@+ fileName, int pathType) – loading/reloading the collection; int constCollection – collection’s number, see Constants collections in _defines.fos, also you can define your own collections; string@+ name – constant’s name; int value - constant’s value; string@+ fileName, int pathType – collection file’s name and folder path. Rev.167 http://www2.xp-dev.com/sc/change/94227/167 Bug with error of name/password in login menu if it exceeds 12 symbols was fixed. Screen centering on the player when loading map in right-angle geometry was fixed. Copying objects in Mapper from smaller map to the bigger one was fixed. Mapper hanging up when Sleep < 0 was fixed. Crashes when loading ART files were fixed. Principe of transparency defining with parameter ‘”t” was changed, now it isn’t equal to 255 – paletteIndex, but to max(R, G, B). Rev.166 http://www2.xp-dev.com/sc/change/94227/166 System of operating with items prototypes was updated (ProtoItem). Ability to add your own fields to proto class was added. New pragma ‘bindfield’ is used for this, e.g.: #pragma bindfield "const int ProtoItem::MyValue -> 400" it means creation of field MyValue of int type with offset 400 (considering thas int is 4 byte, it will occupy bytes 400, 401, 402, 403). Totally for user’s fields 500 bytes are available. Field is equal to zero as defaults, but it is possible to change the value by defining value (in the current case MyValue=111 or MyValue=SkillBigGuns) in proto file (.fopro), number (if it contains only numbers) or path to the file (it is identified by the presence of ‘/’ or ‘\’ symbols). For now fields which are not used by the engine are taken out to scripts, see _defines.fos Item prototypes fields. Changes in structure ProtoItem. All next methods are deleted uint8 GetType() const uint16 GetProtoId() const bool IsGrouped() const bool IsWeared() const bool Container_IsGroundLevel() const List of new fields which are registered in the engine (part of them is renamed, some were deleted) http://pastebin.com/8R4QkP3h The other fields are registered with #pragma bindfield in _defines.fos. Now all items can stack and wear out, for this Boolean fields are added to the prototypes bool ProtoItem::IsStackable bool ProtoItem::IsDeteriorable Item type ITEM_MISC_EX was deleted, it is combined with ITEM_MISC (miscex.fopro is deleted). Vehicles are taken out to separate type ITEM_CAR (car.fopro was added). Also now user can define any type numbers for the items. Former fields uint MiscEx_StartVal0..9 of the start values for Item::Val0..9 were moved to common area named StartValue0..9, and with these values Item::Val0..9 are initialized. Metod bool Item::IsCar() const was deleted, instead of it use GetType()==ITEM_CAR. The next methods are renamed bool Item::IsGrouped() const -> bool Item::IsStackable() const bool Item::IsWeared() const -> bool Item::IsDeteriorable() const The next fields are renamed uint16 Item/ItemCl::BrokenWear -> Item/ItemCl::Deterioration uint16 Item/ItemCl::CarDeteoration -> Item/ItemCl::CarDeterioration uint8 MapperObject::Item_DeteorationFlags -> uint8 MapperObject::Item_BrokenFlags uint8 MapperObject::Item_DeteorationCount -> uint8 MapperObject::Item_BrokenCount uint16 MapperObject::Item_DeteorationValue -> uint16 MapperObject::Item_Deterioration Mechanism of affiliated objects was moved for common use. Previously it was available only for vehicle’s trunk. One object can have up to five derivatives. Numbers of the derivative objects are defined in uint16 ProtoItem::ChildPid_0..4. By creation of base object, derivatives are created automatically. For now Mapper doesn’t create affiliated obkects automatically, but it will be fixed in further. For setting the place of situation, special field ChildLines_0..4 is used (former MiscEx.Car.Bag_0..1, see below by recording format). Also it is possible now to define automatic blocking for any objects, not only for vehicles – field BlockLines (former MiscEx.Car.Blockers). Recording format for Child/BlockLines – XYXYXY..., where X is direction number (0..5/7), Y is the amount of steps (1..9) in this direction (previously for vehicle’s trunk for another recording format - XXXX...). Maximum amount of steps for BlockLines – 50, for ChildLines – 6. For operating with derivative objects use methods Item@+ Item::GetChild(uint childIndex) const (бывшая Item@+ Item::CarGetBag(int numBag)) bool Map::CheckPlaceForItem(uint16 hexX, uint16 hexY, uint16 pid) const (bool Map::CheckPlaceForCar(uint16 hexX, uint16 hexY, uint16 pid) const) Fields renaming affected lots of scripts, be attentive. Old proto format is converted to the new one automatically, but Object Editor (ObjectEditor.exe) still operates only with old format. It will be fixed soon. To replication.fos and entires.fos scripts the influence of right-angled geometry was added. Script main_planes.fos is formatted as a separate module. All pragmas were move to the end of _defines.fos. Drop of FPS when switching on view/attack borders was fixed. Rev.165 http://www2.xp-dev.com/sc/change/94227/165 Fix for the ASCompiler. Rev.164 http://www2.xp-dev.com/sc/change/94227/164 Changed ASCompiler output format to “filename(linenumber) : message”. Such output is recognized by a number of IDEs and allow jumping to the code by a double-click on the output line. Rev.163 http://www2.xp-dev.com/sc/change/94227/163 Tabs management system was added to Mapper. Now one tab can have numerous subtabs. Tabs names and its filling is defined in mappers scripts. But some tabs already have initial filling. Item – items prototypes by defaults (items.lst); Tile – tiles by default, search is performed in ‘art/tiles/’; Crit – critters prototypes by defaults (critters.lst); Fast – displays often used objects, initial state is defined in scripts (InitializeTabs in mapper_main.fos); Ign – Ignore, shows ignored objects which are not shown on the map; Inv, Msg, Map – special tabs which have nothing to do with the mechanism, but it is possible to change its name throug TabSetName (see below). The tab can have subtabs only of one type – tiles, critters or items (displayed in priority order). For items and critters the subtab’s name is chosen by user, for the tiles it is performed automatically. The lowest subtab “all” contains all prototypes (or tiles) on a list above. For activation the menu of tab choosing – perform a double click on it. If positions are numerous then use mouse wheel for navigation (scroll speed: normal – 4, with pressed shift – 8, with pressed ctrl – 20, with pressed alt – 50). For tabs management use scripts, functions Tab* uint TabGetTileDirs(int tab, string@[]+ dirNames, bool[]+ includeSubdirs) uint TabGetItemPids(int tab, string@+ subTab, uint16[]@+ itemPids) uint TabGetCritterPids(int tab, string@+ subTab, uint16[]@+ critterPids) void TabSetTileDirs(int tab, string@[]+ dirNames, bool[]+ includeSubdirs) void TabSetItemPids(int tab, string@+ subTab, uint16[]@+ itemPids) void TabSetCritterPids(int tab, string@+ subTab, uint16[]@+ critterPids) void TabDelete(int tab) void TabSelect(int tab, string@+ subTab) void TabSetName(int tab, string@+ tabName) int tab – tab’s number (see Tabs in _mapper_defines.fos); string@[]@+ dirNames – folder’s names for tiles searching; bool[]@+ includeSubdirs – turn on search in subfolders; string@+ subTab – subtab’s name; uint16[]@+ itemPids – item’s prototype numbers array; uint16[]@+ critterPids - critters’s prototype numbers array; string@+ subName – tab’s name. Global variable was added bool __SplitTilesCollection = true It defines whether tiles should be divided into groups in the folders. The group is defined as a string in the file’s name before the first number (e.g. abc12.png - group abc), if the number is absent, then group is defined as '<other>'. In connection with these changes, the global functions are deleted uint GetFastPrototypes(uint16[]@+ pids) void SetFastPrototypes(uint16[]@+ pids) Other updates. Fixed incorrect work of server/client which caused some bugs. Global variable int __GeometryType was added to _defines.fos for the indication of chosen geometry. See constants in _defines.fos Geometry. Depending on its value, tab with Tactics and Arcanum is added. Ability to work with file names which include spaces is added. When loading ART files, it is possible to flip them vertical or horizontal. Parameters in the file name - ‘v’/‘V’ and ‘h’/‘H’. When loading SPR file, if you define in changing color parameter – layer’s number -1, then the modificator will be applied to all four layers. Rev.162 http://www2.xp-dev.com/sc/change/94227/162 Quest perks “Midnight Child”, “Nosderatu Blood” were added (Modoc, “Night’s tender”). Now new home position is set for NPC-travelers (Devin, Eli) when they enter new location. Female characters now can finish quest of removing childkiller status. Allies HP and resistances were increased in “Dangerous hunt” quest. Also a simple dialogue is added to them. The forged letter is now removed from the inventory when finishing quest “Forgery”. Edvin in Klamath tells with a popup phrase when starting gathering items. A delay was added to the prisoner giving the cues in “Ernst Telman” quest. Ability of intimidating the NPC visitor if it’s a woman was deleted in quest “Wrath”. Barcus now reacts with popup phrases to the futher meetings with the player who have done quest “Amnesty for Joshua”. Upon the receiving lieutenant rank of Vaultcity’s Guard, player is awarded with a black combat armor. In “Diplomatic Courier” quest time (24 hours) which Sheiman takes for the thoughts now is calculated correctly. Upon finishing this quest, player receives +1 reputation in NCR. Sell price of the buggy which player receives upon finishing the quest in NCR was set to zero. Dialogue launch when player uses an antidote in quest “Poisoned Regulator” in Redding was fixed. Players who gained Vaultcity citizenship now can trade with Randal with no restrictions. Reputation calculation in quests “Real Cowboy”, “Hub Bibliography” in NCR was fixed. If player refuses the reward in “Hub Bibliography” quest, he gains +2 reputation (was +1) when he delivers 5 books. Increasing raider’s resistances and skills every new attack on NCR was switched off. Ability of crafting and buying chitin armor was added. Giant beetles drop chitin. Items with ITEM_GAG flag deletion upon player’s death was fixed. Rev.161 http://www2.xp-dev.com/sc/change/94227/161 Ability to customize game geometry was added, either the support of isometric projection with quadrangles was. For customization use global variables bool __MapHexagonal – isometry type: true - hexagonal, false - quadrangular; int __MapHexWidth – hex width; int __MapHexHeight – hex height; int __MapHexLineHeight – hex line height; int __MapTileOffsX/Y – ground tiles offset; int __MapRoofOffsX/Y – roof tiles offset; int __MapRoofSkipSize – amount of hex per one roof tile (necessary for its correct hiding); float __MapCameraAngle – 3d model rendering angle; bool __MapSmoothPath – path smoothing when moving; string __MapDataPrefix – path and prefix for the geometry files. Operational sprites for geometry are situated in art/geometry/. Quadrangular isometry use 8 directions, hexagonal – 6. In script config.fos in function InitializeGeometry(), necessary adjustments for 3 games (Fallout1/2, Fallout Tactics and Arcanum) are added. This function can be called in server, client and mapper scripts, as all three of them need geometry information. Global variables uint __LookDir4, uint __LookSneakDir4 were added for 8-directional geometry. Fixed Tactics SPR files loading. Mode MODE_NO_TALK was added. It affects ability to talk and appearance of the icon in the context menu. Double click on hex, affecting avatar’s moving, was fixed. Creation of descriptions for critters prototypes (FODLG.MSG) with high identifiers was fixed. Image of elephant gun was added in 3d. Rev.160 http://www2.xp-dev.com/sc/change/94227/160 Fixed a bug with server and client communication. Fixed a bug with wrong sprites display. Rev.159 http://www2.xp-dev.com/sc/change/94227/159 Documentation's update, mistakes fixes. Rev.158 http://www2.xp-dev.com/sc/change/94227/158 Script start_server_client.fos was renamed to config.fos and now it isn't simply pasted into function start(), but presented as a separate module with function InitializeGame(). Macros for operating with time were moved from _macros.fos to separate module _time.fos. Slight fix of drugs.fos. Rev.157 http://www2.xp-dev.com/sc/change/94227/157 Errors messages in server log when operating with functions GetPlayerName/GetPlayerId were removed. Also GetPlayerName returns null now, if the player wasn't found. Bugs of reputation calculation were fixed. Rev.156 http://www2.xp-dev.com/sc/change/94227/156 Ability to affect the colors when loading Tactics sprites was added. To make color shift, define necessary values in file name’s parameters (“$”). Format: fileName$[index,r,g,b]animName.spr (can be any amount of shifts […]) where index – body part’s number (0 - miscellaneous, 1 - skin, 2 -hair, 3 - armor); r,g,b – color shift for the each component, can be negative Example: someSprite$[2,50,-30,-20]anim1.spr – load sprite someSprite.spr, with animation anim1 and hair’s color shift in RGB (50,-30,-20). Additional flags for operating with color’s shift were added for Tactics critters (_animation.fos, animation.fos). Use macros ANIM1_COLOR_SKIN(index), ANIM1_COLOR_HAIR(index), ANIM1_COLOR_ARMOR(index) for values defining. Index can take on value from 0 to 15, appropriate to it values of color shift look in array colorOffsets of animation.fos script. For ability testing you can use text function void ColorOffset(Critter& cr, int skin, int hair, int armor) in test.fos. Rev.155 Some native structures were fixed. Rev.154 http://www2.xp-dev.com/sc/change/94227/154 AngleScript is updated to revision 822. Ability of sorting is added to scripts arrays Ascending sort void array::sortAsc() void array::sortAsc(uint index, uint count) Descending sort void array::sortDesc() void array::sortDesc(uint index, uint count) For user’s classes sorting realize opCmp method http://www.angelcode.com/angelscript/sdk/docs/manual/doc_script_class_ops.html Vehicle animations on the global map and item’s animations in Mapper are fixed. Some points in operating with critter’s animations are fixed (animation.fos). Global variable __GmapActive is fixed. Global variable for setting min. offline time after that client will completely exit from the game was added. uint __MinimumOfflineTime = 180000; // 3 minutes Rev.153 http://www2.xp-dev.com/sc/change/94227/153 Additional constants for operating with Chosen's actions were updated (Get/SetChosenActions, for CHOSEN_USE_ITEM). Rev.152 http://www2.xp-dev.com/sc/change/94227/152 Additional constants for operating with Chosen's actions were added (Get/SetChosenActions). Rev.151 http://www2.xp-dev.com/sc/change/94227/151 Bugs with incorrect files's names path detecting were fixed. Rev.150 http://www2.xp-dev.com/sc/change/94227/150 3d models loading was fixed. 3d models rendering to sprites was fixed. Critters animations were fixed (death in 2d and 3d modes). Shift calculation for some models was fixed. SAY_DIALOG/SAY_APPEND mechanics was fixed. (by Atom) Server’s config loading in Mapper was fixed. (by Atom) File HashNames.lst was added to client. Names of files which contain parameters (‘$params’) should be entered in it. If you use such names in the prototypes, Mapper or scripts GetStrHash), then include this name to this list. Format of writing: [any number] [file’s name] [end of string] E.g. 0 art\scenery\BrazureFire$t.ART 0 art\scenery\BrazureFire$t3.ART In further it is possible to detect and transmit such names automatically, but for the present use this system. Roof disappearing if it is situated in odd hex in two axis. Rev.149 http://www2.xp-dev.com/sc/change/94227/149 Documentation was updated. Some fixes in Arroyo (Minoc’s quest about raiders). Usage mode was added for sledgehammer and supersledge (for resources mining). Guard lib was brought into common standard of scripts formatting. Rev.148 http://www2.xp-dev.com/sc/change/94227/148 Two reserved variables were added to HLSL effects float AnimPosProc – current animation’s per cent 0%..100%, [0,1); float AnimPosTime – current animation’s time in seconds. Client’s hanging under certain circumstances was fixed (e.g. receiving item’s data when player in process of moving between maps). Dump generation when closing server application without stopping was switched off. Generation of unnecessary messages to log in function animation_ animation.fos was fixed. Rev.147 http://www2.xp-dev.com/sc/change/94227/147 Parameters for critter’s movement controlling were added. Time for moving in milliseconds: #define ST_WALK_TIME (117) #define ST_RUN_TIME (118) Ability to move #define MODE_NO_WALK (539) #define MODE_NO_RUN (540) If these parameters are equal to zero, then data is taken from CritterTypes.cfg. Loading of some ART files was fixed (Arcanum). Ability of specifying special image processing was added. Palette elements will be transparent depending on its index in the palette (alpha = 255 – index). To chose this loading type - use symbol “t” (or “T”) in file name parameters. E.g. ‘filename$t.art’; also you can combine with palette, e.g. ‘filename$1t.art’. Ignoring of spec.symbol “/r” was additionally added for splitEx function. In functions void DrawSprite(... bool applyOffsets) if applyOffsets == true there were additionally added shifting of width/2 and height of the image. Unnecessary fo3d files were deleted. Palette influence for Arcanum critters was fixed. Rev.146 http://www2.xp-dev.com/sc/change/94227/146 One more fix of incorrect critter displaying. Rev.145 http://www2.xp-dev.com/sc/change/94227/145 Quest “Communicated” was added (Redding). Caravaneers phrases were fixed, now they tell correct departure dates. Quest “Honomer’s bodyguard” was added (San Francisco). Retina scanner in GECK town was fixed. Slight fixes of the hubbolog’s map in San Francisco. Special result function for skill rise calculation through a dialogue was added.(dialog@r_SkillUp) The script for quest locations creating was fixed (hostile_location_quest.fos), allies and enemies scripts now work correctly. Resetting of a quest variable when deleting the location was fixed. Script for realization a dialogue between several npc’s with popping up phrases was added. (npc_dialog.fos) Story line implementation was continued. Maps numeration in the location with mutants was fixed (quest string “Guardian”). Rev.144 http://www2.xp-dev.com/sc/change/94227/144 Critter’s hitpoints regeneration was moved to scripts, you can look realization in function critter_idle main.fos. Global function for critters sampling from the global map was added to server scripts. uint GetGlobalMapCritters(uint16 worldX, uint16 worldY, uint radius, int findType, Critter@[]@+ critters) Additionally to methods bool Map::GetNearEntireCoords(int& entire, uint16& hexX, uint16& hexY) const bool Map::GetEntireCoords(int entire, uint skip, uint16& hexX, uint16& hexY) const were added methods bool Map::GetNearEntireCoords(int& entire, uint16& hexX, uint16& hexY, uint8& dir) const bool Map::GetEntireCoords(int entire, uint skip, uint16& hexX, uint16& hexY, uint8& dir) const which return direction. Global variable which specifies if the password in the client’s login window should be hidden was added bool __HidePassword = true Incorrect critters creation in Mapper was fixed. Displaying of switching critter’s type 3d->2d on the client’s side was fixed. Rev.143 http://www2.xp-dev.com/sc/change/94227/143 Fixed critters loading in Mapper (141 revision's bug). Rev.142 http://www2.xp-dev.com/sc/change/94227/142 Fixed server loading (the previous revision bug). Rev.141 http://www2.xp-dev.com/sc/change/94227/141 Mechanism for identifying critter’s animation file name was added. Now you can operate with critter’s animations from Tactics and Arcanum without any conversions. All data files which you need for enabling one or another critters are cited in CritterTypes.cfg comments. The next critters were added to SDK: Humanoid, Behemoth, MTT, Pacification. They are repacked to the separate archive ftrobots.bos. But all available critters from Tactics and Arcanum are added to CritterTypes.cfg with correctly defined parameters for them (by Tabloid), so you can enable the needed data files and use the critters. All animations are transformed to the general appearance (ANIM2_2D*, ANIM2_3D* -> ANIM2*). The functional for operating with them is moved to scripts. In some places where these values are used, numeric literals are replaced by string constants, which description you can find in DefineNames.lst. Fixes were made in weapons prototypes (weapons.fopro) and fo3d templates for 3d critters from VanBuren (_VBHuman.fo3d, _VBMob.fo3d, _VBWeapon.fo3d). Now three sets of primary and secondary animations are used for critters, for three condition types – alive, knockout, dead const uint Critter/CritterCl::Anim1/2Life/Knockout/Dead (const uint Critter/CritterCl::Anim1/2 were deleted). These values are used for animations as default. Pay attention that Anim1 additionally is summed up with animation of the weapon in the active slot, bit-by-bit OR. It is necessary for assignation certain values on continuing basis (e.g. sitting, lying position). For changing these values the next method is used void Critter::SetAnims(int cond, uint anim1, uint anim2) int cond – defines the position to apply values to (COND_* in _defines.fos), if null it is applied to all three; uint anim1, anim2 – animation values. Deleted const uint8 Critter/CritterCl::CondExt Accordingly all COND_*_* for them are deleted. Now position is differentiated by the animations. In connection with it, the next methods specifications were changed void ToDead(uint anim2, Critter@+ killer) bool ToKnockout(uint anim2begin, uint anim2idle, uint anim2end, uint lostAp, uint16 knockHx, uint16 knockHy) void EventKnockout(uint anim2begin, uint anim2idle, uint anim2end, uint lostAp, uint knockDist) void EventSmthKnockout(Critter& fromCr, uint anim2begin, uint anim2idle, uint anim2end, uint lostAp, uint knockDist) uint anim2begin, anim2idle, anim2end – animations of the knockout begging, staying in it and coming to yourself. Standard macroses are defined for the transfer KNOCKOUT_ANIM2_DEFAULT, KNOCKOUT_ANIM2_STUNNED (in _animation.fos). Also Mapper operates now not with CondExt, but with Anim1/Anim2 for the current Cond. Global variables for client/mapper for defining combat mode animations were added uint __Anim2CombatBegin = ANIM2_BEGIN_COMBAT uint __Anim2CombatIdle = ANIM2_IDLE_COMBAT uint __Anim2CombatEnd = ANIM2_END_COMBAT The next reserved client/mapper functions were added (animation.fos): - string@ critter_animation(int animType, uint crType, uint anim1, uint anim2, uint& pass, uint& flags, int& ox, int& oy) Function which is called when loading necessary animation. Returned value - file’s path and name. int animType – critter’s animation type (new parameter which is set in CritterTypes.cfg); uint crType – critter’s type; uint anim1, anim2 – animation’s indexes; uint& pass – function call’s number, is changed by the user. If animation loading failed and this parameter was changed, then function will be recalled (in certain cases you should try to load different files for the one animation); uint& flags – flags, at the present moment two of them – to take the first or the last frame from the animation ( Anim loading flags in _animation.fos); int& ox, &oy – shifts for the animation, in pixels. - bool critter_animation_substitute(int animType, uint crTypeBase, uint anim1Base, uint anim2Base, uint& crType, uint& anim1, uint& anim2) If animation loading failed (and uint& pass wasn’t changed), then this function is called for animation substitute detection (e.g. left hook can be replaced by the right hook). true is returned if the substitute was found (engine also additionally checks if crType, anim1, anim2 were really changed), false – no substitute, animation won’t be loaded and played. int animType – see above; uint crTypeBase, anim1Base, anim2Base – base critter’s and animation’s type, which were at the start; uint& crType, &anim1, &anim2 - critter’s and the current animation’s type for the substitution - bool critter_animation_fallout(uint crType, uint& anim1, uint& anim2, uint& anim1ex, uint& anim2ex, uint& flags) As Fallout’s animations are still loaded by the engine (additional shifts calculation and animations pasting together is needed), for determining animations conformity this function is called, i.e. instead of critter_animation for fallout’s animations this function is called. true is returned if animation is presented, false – not. Method bool Critter::IsAnim3d() const is deleted, use instead of it the global function int GetCritterAnimType(uint crType) values look in Anim types _animation.fos. Critters actions sounds now are played in the scripts, in animation_2d/3d_process. New mechanism for sound file name identification was made, look PlayAnimSound in animation.fos. Critters prototypes were divided into fallout’s (fallout2.fopro) and TLA's (tla.fopro). Bug with roof’s non-transparency in Mapper was fixed. Name indication of chosen critter or tile prototype in mapper was added. Format fo3d now recognizes named constants DefineNames.fos, namely for modificators Mesh, Subset, Layer, Value, DisableLayer, DisableSubset, Texture, EffDef (для Dword), Anim, AnimSpeed, AnimEqual. Global server variable for determining call frequency was added GLOBAL_PROCESS_MOVE uint __EncounterTime = 5000 Global client variable for determining frequency of foolish trick animation call was added uint __CritterFidgetTime = 50000 is deleted using formula Random(__CritterFidgetTime, __CritterFidgetTime * 2) Item prototype’s parameter was deleted bool ProtoItem::Weapon_RequiresActivation now if animation doesn’t exist, it is just not played. Parameters uint16 MapperObject::Scenery_ToMapX/Y were deleted, in mapper also. Moving between locations is performed by entery points. In weapons prototypes types of action animations were substituted from numeric by string constants (accordance look in DefineNames.lst). Appropriate changes were performed in ObjectEditor. Client functions PlaySound andPlayMusic now return bool, signalizing if file was found or not. Global functions for server/client/mapper which return appropriate values from CritterTypes.fos were added uint GetCritterAlias(uint crType) string@ GetCritterTypeName(uint crType) string@ GetCritterSoundName(uint crType) Mapper’s scripts were moved to server’s scripts folder. Also the whole set of functions for operating with CritterTypes.fos was added to Mapper bool IsCritterCanWalk(uint crType) bool IsCritterCanRun(uint crType) bool IsCritterCanRotate(uint crType) bool IsCritterCanAim(uint crType) bool IsCritterAnim1(uint crType, uint anim1) int GetCritterAnimType(uint crType) uint GetCritterAlias(uint crType) string@ GetCritterTypeName(uint crType) string@ GetCritterSoundName(uint crType) Specifications of client’s reserved functions were changed animation2d_process, animation3d_process parameter bool animateStay was added to the beginning. It indicates if any action is performed now (false) or stand animation (true). Reaction for global map’s interface buttons pressing when the size of map’s area (GmapMap) covers the buttons area was fixed. Bug with incorrect loading/saving maps in which script’s or function’s name consists of spaces was fixed. Bug with potential server crashing when using AI_PLANE_MISC was fixed. Rev.140 http://www2.xp-dev.com/sc/change/94227/140 Some robots from Fallout Tactics (look the next revision). Rev.139 http://www2.xp-dev.com/sc/change/94227/139 The next quests were added in San Francisco: “Introduction into Hubbology”, “Hub’s justice”. Transport to Atoll is available for the players who are doing “Introduction into Hubbology” quest (npc is in the docs area of San Fracisco); Automatic transfer to the command center of GECK city citizens when entering the map was removed. Now citizens can choose spawn point. Quest location “Hubbologists laboratory” was added (author JunoReactor). Rev.138 http://www2.xp-dev.com/sc/change/94227/138 Arroyo: Quest “Evidence of Chosen’s death” was added (Todd Stewart); Two courier quests were added (Cassidy, Todd Stewart); Encounter fixes: Fixed bugs of the 120 revision; Fixed random encounters where normally aggressive npc’s didn’t attack after fighting with the other npc’s; Fixed bug with unlimited experience in Den; Fixed mistakes in NCR quests cooldowns; Slight dialogues fixes. Rev.137 http://www2.xp-dev.com/sc/change/94227/137 Ability to specify the layer of tiles/roof to organize correct query of displaying. Totally there can be 5 layers, from 0 to 4. You can switch between them with pressing shift and pressing appropriate key (from 0 to 4). Indication of the current layer is specified in the map’s supplemental information (in upper right corner). Specification of MapperMap AddTile/AddTileName methods was expanded, also layer parameter was added void AddTile(uint16 hexX, uint16 hexY, int offsX, int offsY, int layer, bool roof, uint picHash) void AddTileName(uint16 hexX, uint16 hexY, int offsX, int offsY, int layer, bool roof, string@+ picName) Functions for hash calculation by file’s name and inverse function were added to the native scripts const char* (*GetNameByHash)(uint hash); // Get name of file by hash uint (* GetHashByName)(const char* name); // Get hash of file name The functional for operating with the chosen’s actions was added to the client’s scripts. For taking or specifying the actions use functions uint GetChosenActions(uint[]@+ actions) void SetChosenActions(uint[]@+ actions) This array consists of blocks of seven variables, the first is the type, the other are the parameters. Values of types and parameters look in _client_defines.fos Chosen actions. Argument with the location was added to the reserved function for checking the entries into this location bool entrance_FuncName(Location& loc, Critter@[]& critters, uint8 entrance) The next events were added for critters CRITTER_EVENT_USE_ITEM_ON_ME bool EventUseItemOnMe(Critter& whoUse, Item& item) CRITTER_EVENT_USE_SKILL_ON_ME bool EventUseSkillOnMe(Critter& whoUse, int skill) In the calls stack it is situated between CRITTER_EVENT_USE_* and the global handler. That is CRITTER_EVENT_USE_ITEM for the player + CRITTER_EVENT_SMTH_USE_ITEM for those who can see the player. CRITTER_EVENT_USE_ITEM_ON_ME The global handler critter_use_item. and CRITTER_EVENT_USE_SKILL for the player + CRITTER_EVENT_SMTH_USE_SKILL for those who can see the player. CRITTER_EVENT_USE_SKILL_ON_ME The global handler critter_use_skill. The supplemental information (current hex, fps, etc.) in Mapper is presented in the upper right corner. Bug of 135 revision with transparent tiles when placing them was fixed. Data connected with unfinished mechanism of textured grid was deleted. Rev.136 http://www2.xp-dev.com/sc/change/94227/136 Maps converted to text format. Rev.135 http://www2.xp-dev.com/sc/change/94227/135 Now only text format is used for maps, it is binary only for loading. All maps are converted to the text format (they will be uploaded with the next revision). Extension of this format is “fomap”. To convert your own maps to the new format – execute in Mapper ““#ConvertMaps”, then you should manually or using Mapper set required values in Time, NoLogOut, ScriptModule, ScriptFunc fields, which values you can see in file Maps.cfg. File Maps.cfg is not used anymore, locations prototype numbers are defined opposite to their name in file Locations.cfg, as in the most cases the one map prototype is used for the one location. According to these changes, the next MapperMap methods are deleted: uint GetTile(uint16 tileX, uint16 tileY, bool roof) const void SetTile(uint16 tileX, uint16 tileY, bool roof, uint picHash) string@ GetTileName(uint16 tileX, uint16 tileY, bool roof) const void SetTileName(uint16 tileX, uint16 tileY, bool roof, string@+ picName) And the next are added: uint GetTilesCount(uint16 hexX, uint16 hexY, bool roof) const void DeleteTile(uint16 hexX, uint16 hexY, bool roof, uint index) uint GetTile(uint16 hexX, uint16 hexY, bool roof, uint index) const void AddTile(uint16 hexX, uint16 hexY, int offsX, int offsY, bool roof, uint picHash) string@ GetTileName(uint16 hexX, uint16 hexY, bool roof, uint index) const void AddTileName(uint16 hexX, uint16 hexY, int offsX, int offsY, bool roof, string@+ picName) Also the next fields are added: const int WorkHexX const int WorkHexY int Time bool NoLogOut string ScriptModule string ScriptFunc The next methods are deleted (as their technology is not good enough for now): string@ GetTerrainName(uint16 tileX, uint16 tileY) cons void SetTerrainName(uint16 tileX, uint16 tileY, string@+ terrainName). Function bool SaveMap(MapperMap@+ map, string& fileName, int pathType, bool text, bool pack) now looks as bool SaveMap(MapperMap@+ map, string& fileName, int pathType). The ability to transmit commands /text /pack when saving by the console is deleted respectively. Several functions for operating with map’s fields were added to mapper script (you can do this procedure simply editing necessary field in the map’s file with text editor): #MapTime value – map’s time in minutes; #MapNoLogOut value –possibility to log out on the map; #MapScriptModule moduleName – script, module’s name; #MapScriptFunc funcName – script, function’s name. Now it is possible to place lots of sprites on one hex. Be attentive, fallout’s tiles have the same size and if you place two tiles on the same hex, you won’t see it (only if you select it , it will be less transparent than the others). Take it into account when you place or copy-paste tiles. Function #ClearTiles can help you with this problem, it deletes superfluous tiles from the hex. So, if you operate with fallout’s tiles and you don’t need several tiles on the same hex, execute this script when you finish work. Also you can place tiles on every hex, not in two. Ability of shifting is added for tiles. To produce tile shift just make the same operations as switching between tiles, but additionally pressing shift. Also you can use the same shift procedure for items. To cancel shift, press Alt with Shift and move objects. Fixed 130 revision’s bugs. Fixed bug with absence of shifting in fofrm with one sprite. Fixed bug with error in loading sprites in scripts (LoadSprite), which caused several other bugs. Remained ini files were formatted. Rev.134 http://www2.xp-dev.com/sc/change/94227/134 Config was uploaded by mistake. Take into accont, don't use config file from 132 and 133 revisions, admin pass is "hh" there. Rev.133 http://www2.xp-dev.com/sc/change/94227/133 Redding maps fixed, quest NPC were added. Rev.132 http://www2.xp-dev.com/sc/change/94227/132 Fixed "Anger" quest, the missing dialogue was restored, now it can be finished. Added quest "Forgery". (VC, Linnet) Rev.131 http://www2.xp-dev.com/sc/change/94227/131 New quests "Anger", "Ernst Telman" were added. (VC, Linnet) Fixed bug in VC guard's AI scripts. Fixed mistakes in quest “Amnesty for Joshua” dialogues. Ability to cancel their service for mercs/companions was added if the owner exits from location to the global map. Rev.130 http://www2.xp-dev.com/sc/change/94227/130 Support of graphics files SPR, TIL, ZAR from Fallout Tactics was added. Support of data files BOS from Fallout Tactics was added (works as ZIP archieve). For loading certain animation from SPR files, state it in the name after “$” sign. E.g. loading CrouchAttackClubSwing animation from file Mutant.spr - “Mutant$CrouchAttackClubSwing.spr”. The first frame of first animation is taken without direction. Also, ability to set certain palette for ART files (graphics files from Arcanum) was added – state palette’s number (from 0 to 3) after “$” sign. E.g. to load dfmbnsba.art file with the second palette - “dfmbnsba$1.art”. First palette is taken without direction (that is 0). Operation with sprites was changed. Now all interface graphics (which is set in ini files) is represented not as one sprite, as continuously played animation. Functional for operation with currently drawn sprites on the map was added to the native client’s and mapper’s scripts. Structures: struct Sprite – displayed sprite; struct SpriteInfo – additional information about the sprite. Functions: Sprite* (*GetDrawingSprites)(uint& count); - currently drawn sprites, if no sprites (on the global, menu), then NULL is returned and count == 0; SpriteInfo* (*GetSpriteInfo)(uint sprId); - getting additional information about certain sprite; uint (*GetSpriteColor)(uint sprId, int x, int y, bool affectZoom); - getting pixel’s colour, with the ability of taking zoom into account; it isn’t available for 3d models yet; format - ARGB; bool (IsSpriteHit)(Sprite sprite, int x, int y, bool checkEgg); - test whether the point on the display matches with the current sprite with taking zoom, transparence and egg of transparence into account (optional). The reserved native global variable GameOpt was renamed to Game. Global variables int __MouseX, __MouseY for current mouse position indication were added. Function void GetMousePosition(int& x, int& y) was deleted. Indication of opened console bool __ConsoleActive was added to client’s scripts. Bug with memory leak when rendering 3d graphics to sprites was fixed. Rev.129 http://www2.xp-dev.com/sc/change/94227/129 Added ability to use robot-guards from Sierra as bodyguards (for those who had completed quest "No-sweat job" in Navarro) Added quest "Amnesty for Joshua" (VC, Amanda) Work of teleport on special encounter "Mad scientist's laboratory" was restored. Rev.128 http://www2.xp-dev.com/sc/change/94227/128 Second stable SDK assembly. For the purpose of decreasing repository's size, assemblies will be stored in another places. Links you can find in text files. Rev.127 http://www2.xp-dev.com/sc/change/94227/127 Quest "No-sweat job" in Navarro. Rev.126 http://www2.xp-dev.com/sc/change/94227/126 Mercenaries and companions mechanism (merc.fos) was updated. Now every companion has term of service. Companions don’t meddle in player’s showdowns with NPC’s. Fixed quest “Dip.Courier”. Now it can be finished. Fixed quest “Dock’s attack”. Now it can be finished after killing 5 giant insects. Added 3 new mercs for Lo Pan. Updates NPC-travellers mechanism (traveller.fos). The first NPC-traveller was added (eli.fos). Functions which cooldowns checkup for NPCs in dialogues were fixed. When character dies, all items with flag ITEM_GAG are deleted. Fixed cooldowns for quests “Hub bibliography”, “Sick Brahmin” and in the dialogue with dr.Klaus for stimpacks and first aid kits delivery. When NPC repairs an item, ammo is ejected. Script for NPC monologues realization was added. (monologue.fos) Rev.125 http://www2.xp-dev.com/sc/change/94227/125 Fixes of password encryption in the client's files. Rev.124 http://www2.xp-dev.com/sc/change/94227/124 Fixed bug with graphics loading in the previous update. Rev.123 http://www2.xp-dev.com/sc/change/94227/123 DAT2.1 (Arcanum) files support was added. ART (Arcanum) graphic format was added. Function for operating with strings splitEx was added. Principle is the same as in split, but empty elements are not included in the result array. Also spaces/tabs/string_hyphenation are deleted from the result elements. Examples: split(“A|B||D”, “|”) -> {“A”, “B”, "", “D”} splitEx(“A|B||D”, “|”) -> {“A”, “B”, “D”} split(“A| B\t\t||D| E|F ”, “|”) -> {“A”, “ B\t\t”, "", “D”, “ E”, “F ”} splitEx(“A| B\t\tC||D| E|F ”, “|”) -> {“A”, “B”, “D”, “E”, “F”} Additional DrawSprite functions for the client and mapper were added. You can transfer true with the last argument and as the result, the shift which is stored in the current file will be added to the sprite’s position. void DrawSprite(uint sprId, int sprIndex, int x, int y, uint color, bool applyOffsets) void DrawSprite(uint sprId, int sprIndex, int x, int y, int w, int h, bool scratch, bool center, uint color, bool applyOffsets) Fixed bugs with incorrect ini settings parsing in the scripts. Rev.122 http://www2.xp-dev.com/sc/change/94227/122 Client scripts updates: For the reserved function void render_iface(uint layer) was added calling with value layer 100 to give the ability of drawing on the global map. Also the next global variables were added for operating with the global map: bool __GmapActive – whether global map is active and all the variables below are correct; bool __GmapWait – whether waiting mode of encounter affirming is active; float __GmapZoom – current zoom, don’t forget it to take into account while drawing a map; int __GmapOffsetX, __GmapOffsetY – map shift from the zero-coordinate (up-left corner); int __GmapGroupX, __GmapGroupY – player’s group coordinates; int __GmapMoveX, __GmapMoveY – destination point’s coordinates; float __GmapSpeedX, __GmapSpeedY – movement speed every 50 ms, without taking relief into account For example, calculating the current pixel group’s position - (x = __GmapGroupX / __GmapZoom + __GmapOffsetX), (y = __GmapGroupY / __GmapZoom + __GmapOffsetY). Fixed bug with hanging when drawing 3d model, occurred in the last update. Fixed missing bracket in English texts. (by Kilgore) Rev.121 http://www2.xp-dev.com/sc/change/94227/121 Added more mouse sensitivity and now you can see mouse’s speed percent in the settings. Updated FOConfig.exe. Added AlwaysRun option. Possible values for option Mouse speed were corrected. Option Sleep now can be set to -1, that means switching it off (maximum performance). Added ability of redirecting keyboard’s symbol codes input. For this, use option KeyboardRemap (in FOnline.cfg). It is performed after space – X Y X Y …, where X is the code which is substituted by Y. Code numbers - http://fonline.pastebin.com/Qy3E0qwj Interface description in default.ini is formatted and commented. (by LoadRunner) Location prototypes updates: Option max_copy was deleted. Option max_players was added. It limits the amount of players who can be on the location simultaneously. Players, who can’t enter location because of exceeding the limit will see message 904 from FOGAME.MSG {904}{}{Location is overcrowded, try to enter later.} Password encryption in server *.client. files was added. Mouse shift when switching between movement modes was fixed. Also, for more accurate work, the hex mask was added – look \Client\data\art\misc\hex_mask.png. Only red colour is taken into account and when it takes on certain value, the shift to certain direction is performed (50 – 5, 100 – 0, 150 – 3, 200 – 2). The mask is optional, you can work without it. Fixed loading/saving tiles in the maps text format. Fixed global map shifting behind screen’s edge. Registration of useless clicks in mapper when switching between windows, now isn’t performed. Fixed the animation of 3d critter standing when situating them on the map. Also now 3d critters don’t play standing animation in the critter’s list. Fixed displaying of critters which have only one direction. Fixed command ~reloadscripts. Now when you mark items for deleting (DeleteItem/DeleteItems), their quantity is saved. So, in the moment when real deleting is performed, server will delete the requested number of items. Now knockout during turn-based fight leads to immediate loosing action points, not after finishing the turn. Also, frequent checks for the necessity of finishing the turn were added at the server - if critter’s dead, critter has negative AP, critter has no more AP. Scripts: Fixed critter’s flags (Critter extra flags, _defines.fos). Fixed special encounter scripts Guardian of Forever, Mad Brahmins. Script trader.fos was formatted. Reserved function was added to client scripts, which is called with attacks void hit_aim(uint8& aim) aim value can be redefined( Hit locations in _defines.fos). Function int Critter::GetScore(uint score) was added to server scripts. Specification Critter::AddScore(int score, int val) was changed to Critter::AddScore(uint score, int val). Function for calculation the size of drawn text was added to client and mapper scripts void GetTextInfo(string& text, int w, int h, int font, int flags, int& tw, int& th, int& lines) string& text – text; int w, h, font, flags – height, width, print, flags; int& tw, int& th, int& lines – total width, height and amount of strings in the current text. Rev.120 http://www2.xp-dev.com/sc/change/94227/120 Unused encounter tables for Fallout 1 and commented original’s scripts were deleted from worldmap_init.fos; Random encounters of “beasts versus beasts” type were enabled, which were presented in the scripts, but were absent in the original. Added some new kinds of non-unique random encounters. Now, if player uses to kill NPC’s of certain group or organizations on random encounters, then they become aggressive. Vault City guard’s automatic search is deactivated. Now you need to activate the dialogue to pass through. Fixes in English dialogues versions. Maps fixes. Rev.119 http://www2.xp-dev.com/sc/change/94227/119 Fixed lots of little mistakes in dialogues; Fixed bugs in some Den and Klamath quests; Maps fixes; Duplicate dialogues with different names were deleted. Rev.118 http://www2.xp-dev.com/sc/change/94227/118 Fixed modificator's argument from Parent-0-7 to Parent0-7. Rev.117 http://www2.xp-dev.com/sc/change/94227/117 Added dialogues to Arroyo doctor and his team. Slight fixes (dialogues, maps). Rev.116 http://www2.xp-dev.com/sc/change/94227/116 Library for importing different 3d models was enabled – Assimp http://assimp.sourceforge.net/ Formats that are supported: http://assimp.sourceforge.net/main_features_formats.html Built-in one is still used for X format, for other ones – this library. If you don’t need the library, you can delete it (file Assimp32.dll), client and mapper are able to work without it. Updated mechanism of linking models and animations, now you can link any animation to any skeleton from any file. fo3d format changes: Modificator ModelAnimation was deleted. Modificators Anim, RenderFrame, RenderFrames were expanded – now file name which consists needed animation is placed before the animation’s name (if you state “ModelFile”, then search is performed in the file of loaded model)/ Specification of indicating parent texture (Texture X Parent) was expanded. Now you can additionally state the mesh number and its part, from which the texture is taken - Texture X ParentY-Z, where X is the texture’s number, Y is mesh number, Z is mesh part number; parameters Y-Z are optional, you may don’t use them at all or you may use them partly (Parent, Parent0, Parent-5). Fixed bug with incorrect script processing when operating with Critter::ShowScreen. Fixed bug with incorrect operating and crashing when using Log function with some special symbols. Added Combat Armor 3d model (by Gray). Rev.115 http://www2.xp-dev.com/sc/change/94227/115 Added special encounter "Warehouse of lost doughnuts" (author - Ponchik). Scripts for some original special encounters (author - Cracker). Remade some prototypes. Windows without glasses in Vault's walls can be shooted through now. Slight fixes. Rev.114 http://www2.xp-dev.com/sc/change/94227/114 Maps for quests from the 113 revision. Rev.113 http://www2.xp-dev.com/sc/change/94227/113 Klamath: quests - "Worker searching", "Husband's alert", "Brahmins vaccination" (author - Ponchik). Slight fixes. Rev.112 http://www2.xp-dev.com/sc/change/94227/112 Finished appearance of random encounter "Ocean Trader". Slight maps, dialogues and graphics fixes. Added buttons for BarterGround, GECK town, Warehouse and Hell for the global map (author - Ponchik). Slight fixes. Rev.111 http://www2.xp-dev.com/sc/change/94227/111 Added additional mechanism for data files loading (dat, zip). It is necessary for loading data files loading before scripts initializing and processing start() function as some date is needed to be used before this (effects, prints and some other resourses). For adding files to loading – create DataFiles.cfg file in which you should list all necessary file names. The program searches for the content from the last to the first data file. This mechanism uses server, client, mapper. If list isn’t found then no alerts will be displayed. If one of the files from the list can’t be found or load error appears, then alert will be shown. Option PatchDatPath was deleted, loading of this file is moved to DataFiles.cfg. Rev.110 http://www2.xp-dev.com/sc/change/94227/110 Fixed model's borders calculating which caused nick or text shift above critter's head. Rev.109 http://www2.xp-dev.com/sc/change/94227/109 Fixed skin setting-up when registration 3d character. Fixed order of loaded packs (dat, zip) scanning while searching and parsing ini files. Addition to 106 revision – for stating specific keys for certain resolutions now are used not separate files with different names, but marks in the main file. At the start of the string write “resolution”, than min. width and height for starting using these options. By default these values are equal to zero. For example: "resolution 1024 768 key = value..." It means, that “key = value ...(and so on till the next keyword ”resolution”)” will be included in the final ini. Found data will be inserted in the main file as screen width grows. Rev.108 http://www2.xp-dev.com/sc/change/94227/108 Actual cash files. Rev.107 http://www2.xp-dev.com/sc/change/94227/107 SDK is switched to 3d players mode. Normal version will be restored after finishing mechanism debugging process. For switching off 3d players models – comment the next strings in Server\scripts\_defines.fos #define PLAYERS_3D // Enable 3d players #define PLAYERS_3D_NO_HEAD // No head slot #define PLAYERS_3D_VAULT_SUITE // Vault suite by default, not naked 3d updates: Fixed and reduced the size of attributes and weapons. Added missing attributes of opened pipboy. In the left hand now is displayed the item, which player has in the second slot. Armor’s models are divided between the current armor items in the such way, that gamer could see the difference. For example combat armor consists of power armor and the helmet, robes are replaced by jail suit and etc. Fixed animation playing during creating the new character in single mode. Added skin change processing in start intro and after Kitty’s haircut. Added skeleton’s skins. Added sound for men and women. Fixed sound name for critters parameter’s loading (CritterTypes.cfg, SoundName). Now characters walk slowly with double click if alwaysrun option is turned on. Rev.106 http://www2.xp-dev.com/sc/change/94227/106 Added ability to make 3d characters available to play for. To enable it (it is disabled as default) - comment certain strings in _defines.fos // #define PLAYERS_3D // Enable 3d players // #define PLAYERS_3D_NO_HEAD // No head slot // #define PLAYERS_3D_VAULT_SUITE // Vault suite by default, not naked Updated mechanism of working with ini files. Now, when searching for the keys, excess spaces and tabulations are skipped (now you can type “ key = value ”, previously was correct only variant “key=value”) Added function bool AppendIfaceIni(string& iniName), which enables additional ini files. If the name includes slashes, than the search is being performed from data root, if not - than from folder data/art/interface/. default.ini is added automatically by the engine, others you can enable in start() client function. Loading is performed sequentially from default.ini to ones enabled by user by turn. Every packed file is checked by the turn of loading, then in the folder. Global variable string __UserInterface was deleted. Fixed bug with incorrect parsing of animation indexes in fo3d file. Fixed bug with incorrect position of the egg of transparence in zoom mode. For better readability the next scripts were formatted: start_server_client.fos client_main.fos In the future this practice will be continued. Rev.105 http://www2.xp-dev.com/sc/change/94227/105 Documentation update - slight fixes. Rev.104 http://www2.xp-dev.com/sc/change/94227/104 Added structure of script array (ScriptArray) to native scripts. Added ability to client's native scripts of calling hex data - Field. Data is stored in Field* GameOptions::ClientMap, uint GameOptions::ClientMapWidth/ClientMapHeight. If map is loaded, than ClientMap != NULL, hex calling - ClientMap[hexY * ClientMapWidth + hexX]. Rev.103 http://www2.xp-dev.com/sc/change/94227/103 Added always run option - can be enabled in client's config file “AlwaysRun”. Disabled as default. Added global variables for AlwaysRun regulating: bool __AlwaysRun (as default - false) - enabling AlwaysRun ability; uint __AlwaysRunMoveDist (as default = 1) - run with click, if distance is equal or more than the value; uint __AlwaysRunUseDist (as default = 5) - run with using smth/dialogue/etc, if distance is equal or more than the value. TLA's mechanics is equal to original - always run with click, always run with using if distance is more than 4 hexes. Added parameter uint Critter::ItemTransferCount to native scripts. It stores the value of transferred items during the last transaction. Rev.102 http://www2.xp-dev.com/sc/change/94227/102 Optimized server operation (script calling) in one tread operation mode, performance increased up to 400%. Fixed bug with crash when calling Critter::Say* methods with parametr SAY_SAY_TITLE. Rev.101 http://www2.xp-dev.com/sc/change/94227/101 Changes in fo3d format, new specification was created - look this theme: http://www.fonline.ru/forum/showthread.php?t=19689 New format added new abilities of working with 3d objects - trasmission of texures, other paremeters, etc. Also added ability to render certain animation to sprites as for one frame, either for the whole animation. But the bug with cutting off the shade situated below the lowest edge of model still presents. Updated old fo3d files, also VanBuren's critters and weapon models were added. Changed effects structure, added effect for normal mapping (3D_NormalMapping.fx). Added transfer of real numbers through scripts, float __EffectValue0..9. Fixed bugs with loading 3ds files - miss of meshes except the first; crash if texture coordinates are not presented. Fixed bug in Mapper with data copying when copy-pasting a large number of objects. Fixed text centering of hexes amount in zoom mode. Rev.100 http://www2.xp-dev.com/sc/change/94227/100 Documentation update. Rev.99 http://www2.xp-dev.com/sc/change/94227/99 Updated documentation file, which was missed in the previous revision. Rev.98 http://www2.xp-dev.com/sc/change/94227/98 Added resourse gathering system; Documentation updating. Rev.97 http://www2.xp-dev.com/sc/change/94227/97 Fixes of "Night is tender" quest, now healing must work properly. Added preview from global map for GECK location. Rev.96 http://www2.xp-dev.com/sc/change/94227/96 Gecks counting on the location now affects its auto moving away and visibility separately; Parameter geck_enabled (Map::GeckEnabled) renamed to geck_visible (Map::GeckVisible). Rev.95 http://www2.xp-dev.com/sc/change/94227/95 Added global server function void SetChosenSendParameter(int index, bool enabled) which can denie transmitting parameters to client. Transmitting of all parameters is enabled by default. Rev.94 http://www2.xp-dev.com/sc/change/94227/94 Fixes of sea encounter maps. Rev.93 http://www2.xp-dev.com/sc/change/94227/93 Added sea encounters; Added posibility of an encounter while travelling on air/water transport; Player always have possibility of cancellation water/air encounter and never gains experience for that; Bug fix in mapper with incorrect editing critter's parameters. Rev.92 http://www2.xp-dev.com/sc/change/94227/92 Fixed displaying rating in pipboy. In mapper additional indication of cut sprites was added to make lines, which are needed for correct interaction, visible. Rev.91 http://www2.xp-dev.com/sc/change/94227/91 Added traffic encryption between server and client. Rev.90 http://www2.xp-dev.com/sc/change/94227/90 Fixed choosing automatically cut sprites in zoom mode. Rev.89 http://www2.xp-dev.com/sc/change/94227/89 Added parametr DrawOrderOffsetHexY for shifting order of drawing lower (Y axis). This is an analogue for recently deleted DrawPosOffsX. Fixed using car trunk. Different slight fixes. Rev.88 http://www2.xp-dev.com/sc/change/94227/88 Fixed exit from Redding; slight fixes. Rev.87 http://www2.xp-dev.com/sc/change/94227/87 Fix for weapon AP cost. Rev.86 http://www2.xp-dev.com/sc/change/94227/86 May be fixed bug with incorrect displaying of some tiles. Fixed bug with unworking elevators. Added restoration of effects when loosing a device (cause crashed e.g. with alt+tab) Rev.85 http://www2.xp-dev.com/sc/change/94227/85 Fixed bug with chat disappearing. Fixed AI bug when combat plans always finished with REASON_CANT_WALK. Rev.84 http://www2.xp-dev.com/sc/change/94227/84 Fix for DT params reading. Rev.83 http://www2.xp-dev.com/sc/change/94227/83 Safety checks for radio commands. Rev.82 http://www2.xp-dev.com/sc/change/94227/82 Fixes of some dialogues; translations of dialogues on Barterground; map fixes; fixes of encounter table; slight fixes. Rev.81 http://www2.xp-dev.com/sc/change/94227/81 Fixed another bug during moving on the global map. Fixed unplanned activating of b/w effect. Rev.80 http://www2.xp-dev.com/sc/change/94227/80 Fixed teleportation bug during moving on the global map. Rev.79 http://www2.xp-dev.com/sc/change/94227/79 Fixed bug with incorrect tear and wear and fuel consumption calculation during moving on the global map by car. Rev.78 http://www2.xp-dev.com/sc/change/94227/78 Fixed brightness output. Fixed outlining activation. Rev.77 http://www2.xp-dev.com/sc/change/94227/77 Added automatic sprite cutting. Main purpose – correct displaying of long walls. Parameter SpriteCut was added to prototypes and mapper (only for scenery) for modification. Cutting values: 0 – switched off, 1 – horizontal (X axis), 2 – vertical (Y axis). Wall blocks should be set manually , for that purpose six blocks with different corner types with visual indication were added. It is necessary for correct calculation of brightness and egg of transparence reaction. Numbers 6800..6805 at the end of Wall and Fast list. Fixed client instability after recent update. Primary indexes array for animations was expanded to the range ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789. For value changing use native means (structure CritterType in fonline.h). Support of effects (HLSL) loading with earlier version of compiler. Automatic attempt of compilation is performed after failure in compilation with the current library. Added data updating for client function GetIniStr in the start function (start) after each call of LoadDataFile. Mapper update: Fixed bug with error in loading tiles with extension not in lower case. Fixed algorithm of sprite displaying calculation (when big sprites were disappearing near the screen edge). Additional visual means for debugging: - Ctrl + Q: Corners type viewing; - Ctrl + W: Viewing the result of sprite cutting, linking them to hexes; - Ctrl + E: Viewing the sequence of sprites drawing. At the time of renewing NPC’s bag, only items which are not in inventory are repaired and reloaded. Added ability to set sprite shift in screen coordinates to prototypes. Fixed bug with double notification of quest state change. Rev.76 http://www2.xp-dev.com/sc/change/94227/76 Added quest “Night is tender” Rev.75 http://www2.xp-dev.com/sc/change/94227/75 Tables for sea encounters, slight fixes. Rev.74 http://www2.xp-dev.com/sc/change/94227/74 Source documentation. Rev.73 http://www2.xp-dev.com/sc/change/94227/73 SPECIAL calculating is moved to native scripts - fonline_tla.dll for server and fonline_tla_client.dll for client (must be situated in data\scripts). The other parameters which are used in the engine are needed generally for drawing GUI, but soon they’ll be moved to scripts too. Native scripts files are moved from data folder to scripts. Added bat-file make_tla.bat for their compilation (installation of MSVS8 is necessary). For example of use new methods for critter classes are added (IsInjured, IsDmgArm...), items (IsHtHAttack, IsGunAttack...) with pragma bindfunc. Example of linking global varieties of standard and native scripts is added (__HitAimEyes, __HitAimHead..., these global varieties are moved to scripts). Callback functions are added (to GameOptions) for item usage cost determination - GetUseApCost. For attack max range determination - - GetAttackDistantion. It further such functions will force out usage of critter parameters in the engine. These functions are binded at the stage of connecting of library to the engine (DllMainEx). For operating with the engine added the next functions (to GameOptions): CritterChangeParameter – for correct change of critter parameter, this function should be called firstly, then you can change the value. CritterTypes – index of CritterType structures where data from CritterTypes.cfg is stored. Added method to client’s critters for detection whether now is time of its move in the turn-based mode bool CritterCl::IsTurnBasedTurn() const Some logics of operating with turn-based mode is moved to the scripts - turn_based_process main.fos. Some recommended specifications for the reserved functions are changed - templates.fos. Min. time of dialogue or barter with NPC now is regulated by the global varieties __DlgTalkMinTime (now default 100 seconds) и __DlgBarterMinTime (now default 50 seconds). Range for all prototypes (maps, locations, items) is expanded to 30000. Fixed bug with incorrect drawing of minimap in the pipboy. Fixed bug with incorrect calculating of healing rate while registration. Fixes of Zerg’s special encounter. Rev.72 http://www2.xp-dev.com/sc/change/94227/72 Data library for script compilation (updated on 27 October) Rev.71 http://www2.xp-dev.com/sc/change/94227/71 Added Zerg special encounter. Fixed bug with incorrect names in Fixboy. Added function LoadDataFile to server scripts, analogue of client/mapper. Fixed mistiming of player movement on global map. Deleted function Critter::SendQuestVar, now alert about changing of local variable is automatic. Changed function specification void ShowScreen(int screenType, uint param, string& funcName) to void ShowScreen(int screenType, uint param, string@+ funcName), now can transmit both empty string or null. Rev.70 http://www2.xp-dev.com/sc/change/94227/70 Documentation is updated. Deleted incorrect splash-picture. Added urgent files for scripts autoaddition in Notepad++. Rev.69 http://www2.xp-dev.com/sc/change/94227/69 Added ability to use your own shaders for game graphics drawing. High Level Shader Language is used for this. Effects folder is situated in data\effects. After the first compilation they are cashed in the folder data\cache (in futher other different data will be cashed there). You can read specifications on the game engine effects in data\effects\ReadMe.txt. Added ability to link any effect to sprite or model in .fofrm and .fo3d (“effect=effect_name.fx”). For default effect changing, function void SetEffect(int effectType, int effectSubtype, string@+ effectName) was implemented into the client scripts. int effectType, effectSubtype – effect types look in _client_defines.fos (Subtype for fonts used font type); string@+ effectName – the name of the effect file (with extension) is in the folder data\effects. Added changing of detailization of game objects for demonstration. For activation press Alt+W, for return press Alt+Q. Added client function for map redrawing void RefreshMap(bool onlyTiles, bool onlyRoof, bool onlyLight) if all three parameters are false, than everything will be redrawed. Also these three parameters are incompatible. Fixed bug in mapper with impossibility of viewing 3d critters in prototypes table. At present time they can’t be ranged. Added ability to play sounds/music from different folders. void RefreshMap(bool onlyTiles, bool onlyRoof, bool onlyLight) If there isn’t slashes (‘/’,‘\’) in path name than search is performed in the folder sfx/music. If there are slashes, than in the root (“data/mysounds/mysound.ogg”). Rev.68 http://www2.xp-dev.com/sc/change/94227/68 Fixed bug in the ObjectEditor when damage type is saved incorrectly. Rev.67 http://www2.xp-dev.com/sc/change/94227/67 Fixed crashing when calling CritterCl::[Param/Stat/Perk/etc]Base in client scripts; Fixed error with recording Anydata of zero length (by Atom). Rev.66 http://www2.xp-dev.com/sc/change/94227/66 Fixed incorrect weapon prototype; errors in checking for special encounters; added decraft of the sand sack to fixboy; other little fixes. Rev.65 http://www2.xp-dev.com/sc/change/94227/65 Redding: finished map according to the last concept; - Garbage was returned to static locations; - Ammo craft on benches (beta-version); - Destruction of the sack using skill repair now gives use empty sack. - Entering Den message was moved to texts from script. Rev.64 http://www2.xp-dev.com/sc/change/94227/64 AngelScript updated to 732 revision. Added new methods for arrays: void T[]::insertAt(uint, const T&) – element inserting in specified position in the array; void T[]::removeAt(uint) – deleting the element by index; void T[]::insertFirst(const T&) – element inserting to the beginning of the array; void T[]::removeFirst() – deleting the first element; void T[]::insertLast(const T&) – element inserting to the end of the array; void T[]::removeLast() – deleting the last element; void T[]::grow(uint) – add elements (the sames as a.resize(length()+X)); void T[]::reduce(uint) – delete elements (the same as a.resize(length()-X)); T& T[]::first() – call of the first element of the array (the same as a[0]); T& T[]::last() – call of the last element of the array (the same as a[a.length()-1]). Also deleted all functions ArrayPushBack as the built-in array functional was expanded. All the scripts were fixed accordingly. Rev.63 http://www2.xp-dev.com/sc/change/94227/63 Added ability to start the server as a service. For registration/start use key “-service” (shortcut FOServerService.exe.lnk). For deleting use keys “-service -delete” (shortcut FOServerServiceDelete.exe.lnk). Added ability to log using function OutputDebugString. The log can be caught (even remotely) using program DebugView http://technet.microsoft.com/en-us/sysinternals/bb896647.aspx For switching it on in server and client configs option LoggingDebugOutput is added. Server/client/mapper will work normally now with incorrect active folders. At start you set the current folder of executable. Fixed bug with absence of replacement “x” by “ч” in built-in punto switcher. Fixed crash in turn based mode and incorrect work of Map::GetCritter(uint critterId). Rev.62 http://www2.xp-dev.com/sc/change/94227/62 Fixed bug with updating vehicle data on the global map. Fixed bug with system hanging while looking items quantity in game info. Fixed bug with the incorrect login/disconnect. Fixed bug with incorrect creating non-stacking items on the map in the number of >1. Fixed bug with incorrect critters gathering when path tracing (by Atom). CRITTER_EVENT_TALK now performed before checking NPC for settings which could restrict speaking with it. Added new mechanism for script garbage gathering (by Atom). For config file simplification, the next options were removed: ASGarbageTime, VarsGarbageTime. Deleted transfer of a group of critters into global map processing global_process, CRITTER_EVENT_GLOBAL_PROCESS. Also instead of transferring a group into global map processing global_invite, CRITTER_EVENT_GLOBAL_INVITE, now only the leader is transferred. Instead of picking group use Critter@[]@ Critter::GetGlobalGroup(). Because of that, specification methods were changed: bool Critter::EventGlobalProcess(int type, Critter@[]& group, ...) bool Critter::EventGlobalInvite(Critter@[]& group, ...) for bool Critter::EventGlobalProcess(int type, Critter& cr, ...) bool Critter::EventGlobalInvite(Critter& leader, ...) Reserved functions of critter event CRITTER_EVENT_GLOBAL_PROCESS, CRITTER_EVENT_GLOBAL_INVITE bool _FuncName(Critter& cr, int type, Critter@[]& group, ...) bool _FuncName(Critter& leader, Critter@[]& group, ...) for bool _FuncName(Critter& cr, int type, ...) bool _FuncName(Critter& leader, ...) Fixed bug with incorrect cooldown for hijacking, now it is equal for a normal lock. Added checking for unopenable door to the lock break script. Rev.61 http://www2.xp-dev.com/sc/change/94227/61 Fixed bug with incorrect reappraisal of item flags in Mapper. Fixed bug when player isn't notified about moved item. Rev.60 http://www2.xp-dev.com/sc/change/94227/60 Fixed bug with incorrect displaying of the rain on roofs. Rev.59 http://www2.xp-dev.com/sc/change/94227/59 Mapper's fix for correct operating with new folder and print's names. Rev.58 http://www2.xp-dev.com/sc/change/94227/58 For editing use program Bitmap Font Generator v1.12. http://www.angelcode.com/products/bmfont/ Print should have the next attributes - OEM RUSSIAN, Padding 1 (in all directions), Binary, all symbols should be placed on the one texture. All prints are moved in the separate folder “Client\data\fonts\”. For the example print FONT_COURIER_NEW_SMALL is added. Look _client_defines.fos, client_main.fos, CourierNewSmall.bmfc, CourierNewSmall.fnt, CourierNewSmall_0.png. Added function in client’s scripts of activating the clock which shows you the time signal comes to server and returns (ping). You can use it for restriction of input while waiting for server’s answer. Fixed crushing when looking players statistics on server. Fixed crushing of Dialogue Editor (by Atom). Rev.57 http://www2.xp-dev.com/sc/change/94227/57 Expanded mechanism of operating with ingame radio. Added flag ITEM_RADIO for radio. (in _defines.fos). Radio messages are now also sent to radios which are on the ground . For their identification engine sends them with color 0xFFFFFFFE (in map_message in client_main.fos). Realization is in script radio.fos (interface, mechanics), call from main.fos. Interface data is taken from default.ini (Radio*). You can edit it with using item or using science skill on it. Radio data is situated in general fields of several item types. That’s why it isn’t a good idea to use this flag with Doors, Keys, Cars, Weapons, Armors, Holodiscs. Transmitting and receiving functions are separated. For managing the next flags and range types are used (_defines.fos): Restriction of transmitting/receiving is stored in Item/ItemCl::RadioFlags, used by the engine: RADIO_DISABLE_SEND, RADIO_DISABLE_RECV. Restriction of switching radio state in в Item/ItemCl::RadioFlags: RADIO_DISABLE_SHIFT_SEND, RADIO_DISABLE_SHIFT_RECV - restriction of switching transmit/receive; RADIO_DISABLE_SHIFT_BC_SEND, RADIO_DISABLE_SHIFT_BC_RECV - restriction of changing distance range; RADIO_DISABLE_SHIFT_CHANNEL – restriction of channel switching. Range types are stored in Item/ItemCl::RadioBroadcastSend/RadioBroadcastRecv, are used by the engine: RADIO_BROADCAST_WORLD – works all over the world; RADIO_BROADCAST_MAP – works within the limits of the current map; RADIO_BROADCAST_LOCATION - works within the limits of the current location; RADIO_BROADCAST_ZONE(x) - works within the limits of “x” zones on the global map; RADIO_BROADCAST_FORCE_ALL – works everywhere regardless of the adjustments of transmitting or receiving radio/ Added support of these flags to the object editor (both engine and script ones). Added scripts uint16 ProtoItem::RadioChannel, uint16 ProtoItem::RadioFlags, uint8 ProtoItem::RadioBroadcastSend, uint8 ProtoItem::RadioBroadcastRecv. For holodisc marking added flag ITEM_HOLODISK (in _defines.fos). Holodisc data is situated in general fields of several item types. That’s why it isn’t a good idea to use this flag with Doors, Keys, Cars, Weapons, Armors, Holodiscs. Added support of this flag in object editor. Added script uint ProtoItem::HolodiskNum. Added ability to use built-in cartridge indicator for other purposes. Added the next parameters: uint8 ProtoItem::IndicatorStart – initial value, - Item/ItemCl::Indicator; uint8 ProtoItem::IndicatorMax – maximum available value (for correct calculation of the strip position); uint8 Item/ItemCl::Indicator – current value. Mechanism is considered activated if maximum value in the prototype isn’t equal to zero. Added support of editing of initial and maximum values in the object editor. Method Item::GetMapPosition for the items which are in the global map returns their coordinates. Fixed bug with system hanging while looking online statistics. Added storing up to 20 ip addresses for one account (fonline.h). Item prototype’s fields, which are equal to zero, now cannot be saved. All prototypes are resaved. Continued working on multithreading in game logics. Added ignoring of non-initialized maps or locations while loading save (NPC’s would be moved to global map, items - deleted). Fixed bug in the dialogue on BiX location. Updated abilities of GUI scripting. In script _defines.fos notes “Used in engine” are replaced by “Hardcoded”; point is the same - to show that this data is used by engine also. Corrected some specifications in template.fos of reserved functions. Rev.56 http://www2.xp-dev.com/sc/change/94227/56 Changes in craft: some new recipe's (new weapon, etc.), added workbenches in some town/military bases. Rev.55 http://www2.xp-dev.com/sc/change/94227/55 - Updated Redding maps; - Deleted unused graphics; - Added second entrance to NCR; - Some changes in NPC's inventories on encounters. Rev.54 http://www2.xp-dev.com/sc/change/94227/54 - Slight fixes in Hartman's and Shrim's dialogues (Vault City); - Fixed problem with immediate sending off caravans/patrols Ahe9mPDq; - Changed content of the quest variable for the quest "Third trial. Drill." - Restored functions for triggers t_DialogNpc and scenery s_TransitToMap. Rev.53 http://www2.xp-dev.com/sc/change/94227/53 Fixes of KotW location. Quest for oil can can be done by everybody in Arroyo now. Rev.52 http://www2.xp-dev.com/sc/change/94227/52 Fixes of Brok and Xander Church location (by VaultTec) Rev.51 http://www2.xp-dev.com/sc/change/94227/51 Fixed names loading (*Names.lst) with the dialogue editor. Changed extention of its config file. Rev.50 http://www2.xp-dev.com/sc/change/94227/50 Fixed bug with duplicating of time events. Rev.49 http://www2.xp-dev.com/sc/change/94227/49 Slight optimization of multi-threading. Rev.48 http://www2.xp-dev.com/sc/change/94227/48 Fixed error in loading of games variables values. Fixed loading of saves games in single player mode. Rev.47 http://www2.xp-dev.com/sc/change/94227/47 Time events changes. - function specification void EraseTimeEvent(uint num) changed to bool EraseTimeEvent(uint num) Return value shows whether deleting is done or the event isn't found. - Deleted the next functions: uint CreateTimeEvent(uint beginSecond, string& funcName, Critter& cr, bool save) uint CreateTimeEvent(uint beginSecond, string& funcName, Item& item, bool save) uint CreateTimeEvent(uint beginSecond, string& funcName, Critter@[]+ critters, Item[]@+ items, bool save) For migration just put the identificator to the critter or item. Added the next functions for operating with event's values: bool GetTimeEvent(uint num, uint& duration, uint[]@+ values) bool GetTimeEvent(uint num, uint& duration, int[]@+ values) bool SetTimeEvent(uint num, uint duration, uint[]@+ values) bool SetTimeEvent(uint num, uint duration, int[]@+ values) Parametr "duration" - time till the event is done in seconds. Return value means that operation is completed, error means that event wasn't found. These functions are thread-safe, 2 thread can't operate with the events simultaneously. Function GetTimeEvent blocks using (changing) of the event until the script is finished or until SetTimeEvent is called, which unblocks the event. GetTimeEvent writes value to the end of the array, SetTimeEvent rewrites it completely. When null is transmitted to values SetTimeEvent values are not changed. - Event function specification can be of two types now: uint e_FuncName(uint[]@ values) uint e_FuncName(int[]@ values) Fixed bug with crashing while loading 3ds file without texture coordinates. Rev.46 http://www2.xp-dev.com/sc/change/94227/46 Added next fuctional for operating with files (class "file"): - for data reading uint8 file::readUint8() uint16 file::readUint16() uint32 file::readUint32() uint64 file::readUint64() In the case of error or the end of file it returns 0. uint file::readData(uint count, uint8[]& data) If data == 0 then program read all data till the end of the file beginning from the current position. Read data is added to the end of the array. The return value shows the real amount of read bytes. - For data recording bool file::writeUint8(uint8 data) bool file::writeUint16(uint16 data) bool file::writeUint32(uint32 data) bool file::writeUint64(uint64 data) bool file::writeData(uint8[]& data, uint count) If count == 0 it records all data from an array. In the case of error it returns false. Fixed bug with incorrect output of zoom value on minimap. Rev.45 http://www2.xp-dev.com/sc/change/94227/45 Extended range of game variables: - local variable of location (LLVAR_); - local variable of map (LMVAR_); - local variable of item (LIVAR_). When using them in dialogue values are taken from: for location - current critter's location; for map - current critter's map; for item - current item in the main slot. For operating with scripts use function GetLocalVar with transmitting of needed operator. Server will delete unused variables of all types automatically. Deleted server function uint DeleteVars(uint id). Dialog editor was adapted to the last updates of game variables. Added ability to define named value (DefineNames.lst) as a value for conditions and results. Added missed translations. Translations of commit history you can find here: http://www.xp-dev.com/forum/topic/3220 Rev.44 http://www2.xp-dev.com/sc/change/94227/44 Updated format of time output in dialogue with repairer-npc; Added script for realization of npc-travellers on global map.(traveller.fos and Davine's script in sf_common.fos); Added npc-traveller explosives-seller Davine. Can be hired in GECK town; Added trade mode "cash only" MODE_BARTER_ONLY_CASH; Fixed bugs in maps structure on maps with holodiscs. Rev.43 http://www2.xp-dev.com/sc/change/94227/43 Added setting in config which defines whether to bind logic threads to the core or let OS do it. In default it is enabled (1) 1. If zero then operating system automatically manage threads between cores, else affinity thread per core LogicThreadSetAffinity=1 Continued work on multi-threading of game logics. Rev.42 http://www2.xp-dev.com/sc/change/94227/42 Fixed crashing under certain conditions; Fixed cycle counting per second. Rev.41 http://www2.xp-dev.com/sc/change/94227/41 Fixed bug connected with the last update. Rev.40 http://www2.xp-dev.com/sc/change/94227/40 Multi-threading of game logics is now supported. You can read about this in details on the forum; Fixed path of recording/reading ban files; Added seconds on the globalmap clock; Decreased permissible length of text listener of channels and maps from 5 to 2 symbols; Deleted global server function void DeleteNpcForce(Critter& npc); Changed specification of method from uint Location::GetMaps(Map@[]& maps) const to uint Location::GetMaps(Map@[]@+ maps) const Now you can know the amount of maps on the location without recording them into array; Added basic server command ~log (~37). It is intended for text listening of server log. Minimum access: administrator. For adding to text listening you should transmit arguement "+", for disconnecting "-"; Fixed basic creating locations command ~addloc (~16); Upgraded basic command of looking player's id using his name ~id (~4); Changed specifications of global functions void critter_attack(Critter& cr, Critter& target, ProtoItem& weapon, ProtoItem@ ammo, uint8 aim) -> void critter_attack(Critter& cr, Critter& target, ProtoItem& weapon, uint8 weaponMode, ProtoItem@ ammo) int to_hit(CritterCl& chosen, CritterCl& target, ProtoItem& weapon, int hitLocation) -> int to_hit(CritterCl& chosen, CritterCl& target, ProtoItem& weapon, uint8 weaponMode); Added variables for weapons which state their active mode const uint8 Item::Mode const uint8 ItemCl::Mode 4 high-order bits - sight (look Hit locations in _defines.fos), 4 low-order bits - mode (0 – primary, 1 – secondary, 2 – third); Added macroses for convenience _WeaponModeUse, _WeaponModeAim, _WeaponModeMake в _macros.fos; Added returnable value of the current mode in method GetSlotProto (urgent for weapons) ProtoItem@+ Critter/CritterCl::GetSlotProto(int slot, uint8& mode) const; Renamed parametr #define ST_RATE_ITEM (102) to #define ST_HANDS_ITEM_AND_MODE (102) value stored in it: XXXX00YY, where XXXX pid - unarmed blow, and YY - mode. Changed way of the dialogue redirecting. You should use returnable value of result function or say-mode instead of uint __ForceDialog; Added specifications of functions: uint r_FuncName(...), uint dlg_FuncName(...) which are detected by server automatically; Fixed bug with moving pushed players only in one direction; Object pointers (derivatives arrays or class members)Location, Map, Critter, Item, GameVar can't be saved in global varities now. For scripts migration save their identificators (Location::Id, Map::Id, Critter::Id, Item::Id), addresing to the objects with (GetLocation, GetMap, GetCritter, GetItem). Weapons prototypes don't save curret mode of fire (in connection with multi-threading). Changed specifications of class members ProtoItem const uint8 Weapon_Skill, const uint8 Weapon_DmgType, const uint8 Weapon_Anim2, const uint16 Weapon_DmgMin, const uint16 Weapon_DmgMax, const uint16 Weapon_MaxDist, const uint16 Weapon_Effect, const uint16 Weapon_Round, const uint8 Weapon_ApCost, const uint8 Weapon_SoundId, const bool Weapon_Remove, const bool Weapon_Aim, const uint8 Weapon_CurrentUse, void Weapon_SetUse(uint8 use) const to const uint16 Weapon_Skill_F, const uint16 Weapon_Skill_S, const uint16 Weapon_Skill_T, const uint16 Weapon_DmgType_F, const uint16 Weapon_DmgType_S, const uint16 Weapon_DmgType_T, const uint16 Weapon_Anim2_F, const uint16 Weapon_Anim2_S, const uint16 Weapon_Anim2_T, const uint16 Weapon_DmgMin_F, const uint16 Weapon_DmgMin_S, const uint16 Weapon_DmgMin_T, const uint16 Weapon_DmgMax_F, const uint16 Weapon_DmgMax_S, const uint16 Weapon_DmgMax_T, const uint16 Weapon_MaxDist_F, const uint16 Weapon_MaxDist_S, const uint16 Weapon_MaxDist_T, const uint16 Weapon_Effect_F, const uint16 Weapon_Effect_S, const uint16 Weapon_Effect_T, const uint16 Weapon_Round_F, const uint16 Weapon_Round_S, const uint16 Weapon_Round_T, const uint16 Weapon_ApCost_F, const uint16 Weapon_ApCost_S, const uint16 Weapon_ApCost_T, const uint8 Weapon_SoundId_F, const uint8 Weapon_SoundId_S, const uint8 Weapon_SoundId_T, const bool Weapon_Remove_F, const bool Weapon_Remove_S, const bool Weapon_Remove_T, const bool Weapon_Aim_F, const bool Weapon_Aim_S, const bool Weapon_Aim_T Added special macros for convenience (Weapon in _macros.fos) _WeaponIsPrimaryAviable, _WeaponIsSecondaryAviable, _WeaponIsThirdAviable, _WeaponSkill, _WeaponDmgType, _WeaponAnim2, _WeaponDmgMin, _WeaponDmgMax, _WeaponMaxDist, _WeaponEffect, _WeaponRound, _WeaponApCost, _WeaponSoundId, _WeaponRemove, _WeaponAim, _WeaponModeUse, _WeaponModeAim, _WeaponModeMake Mapper updates: string@ MapperObject::PicMap/PicInv now return prototype's picturename if other isn't set up; Added const uint16 MapperMap::Width, const uint16 MapperMap::Height for storing current map sizes; Fixed function GetMapFileNames(...). Rev.39 http://www2.xp-dev.com/sc/change/94227/39 Slight fixes of quests in Den, Klamath Improved closed location in Redding Rev.38 http://www2.xp-dev.com/sc/change/94227/38 Slight fixes of quests from string "Guard"; Added services for guardsmen: doc. Troy can heal player; give stimpacks; Valery repairs items; Added universal repairing script for npc (repairer.fos). E.g. in the dialogue vc_valery.foldg 3 new special encounters with holodiscs; Several deleted functions from stdlib are returned. Rev.37 http://www2.xp-dev.com/sc/change/94227/37 Fix of calculating amount of dead NPC on location when necessity of attack is being determinated. Fix of amount loss allies counter when finishing the quest. Output of messages to log is disabled in quest “The drill”. Fix of limit of times amount quest “Dangerous hunt” can be done. Descriptions of deleted maps were returned, which made server restart impossible without saves clearing. Rev.36 http://www2.xp-dev.com/sc/change/94227/36 Fix of Hartman’s dialog. The wrong requirement was deleted. Rev.35 http://www2.xp-dev.com/sc/change/94227/35 New quests from string “Guard” in Vaultcity - Vaultcity guard. Third trial. Drill. - Easy walk. - Go there, don’t know where. - Dangerous hunt. - Diplomatic courier. Fix of caravan’s and patrol’s departure time. Relative departure time was substituted for absolute. Added ability of caravan’s instant departure from the dialog. Fix of items that were generated in encounters 0 in number. (It was impossible to throw out them) Fix of quest “Hub bibliography”. Player need 7 books to gain reputation instead of 6. Rev.34 http://www2.xp-dev.com/sc/change/94227/34 - Maps fixes - Fixed reaction of BG guards on explosives activation Rev.33 http://www2.xp-dev.com/sc/change/94227/33 - Graphics fixes - Non-used files were deleted - Original map of BG was returned Rev.32 http://www2.xp-dev.com/sc/change/94227/32 Private car parking in geck town is disabled till the problem with car boot is solved. Rev.31 http://www2.xp-dev.com/sc/change/94227/31 Added first quests of string “Guardsman”, VaultCity. (Clearing of server saves is needed) Added template for making quests-combats with npc. (fighter_quest.fos, e.g. “Guard. First trial.”) Added ability to take quest “Hub bibliography” again if player failed to finish it at previous time. Fixed incorrect condition in Dappo’s dialogue in quest “Lot of defective rifles”. Added verification of addressee in “Postman” quest, now player can’t bring letter to any npc of type stated in the letter. Rev.30 http://www2.xp-dev.com/sc/change/94227/30 Deleted not used MSG files - FOSCRIPT.MSG. Rev.29 http://www2.xp-dev.com/sc/change/94227/29 Updates of way of making records into log. Added ability to look the name of the thread which made a record. Option in config – LoggingThread. You can also turn on output in the server application using “Logging with thread”. Changed format of time output. Now it is not “time in ms”, but “hours:minutes:seconds:milliseconds”. Rev.28 http://www2.xp-dev.com/sc/change/94227/28 Fix and formatting. Rev.27 http://www2.xp-dev.com/sc/change/94227/27 Fixed mistakes in calculating karma in quest "Returning of the fugitive". Rev.26 http://www2.xp-dev.com/sc/change/94227/26 Changes on Church of Brok and Xander location: - fixed Preacher, Scientist, repairer Alechandro, Cook, Mickey dialogs; - quests work correctly now; - repairer Alechandro identifies items correctly; - ability to record the information about Church was added (after completing Preacher's quest). Rev.25 http://www2.xp-dev.com/sc/change/94227/25 Activating time of dynamite was fixed. Rev.24 http://www2.xp-dev.com/sc/change/94227/24 New algorithm of generating of pseudorandom variables was added (Mersenne twister). Previously was standart C algorythm srand/rand. Rev.23 http://www2.xp-dev.com/sc/change/94227/23 Energy barrier on the entrance of GECK town was improved. Rev.22 http://www2.xp-dev.com/sc/change/94227/22 Fixed client crashing on start. For preventing this bug in future the control system of versions of cashed scripts in the client has been added. Rev.21 http://www2.xp-dev.com/sc/change/94227/21 Fixed problem when it was impossible to add players to GECK town after removing them with option "Clear list". Rev.20 http://www2.xp-dev.com/sc/change/94227/20 Fixed cooldown of the Postman quest. Rev.19 http://www2.xp-dev.com/sc/change/94227/19 Wrongly deleted dialogs are returned. Rev.18 http://www2.xp-dev.com/sc/change/94227/18 Fixes Deleted not used files. Fixed errors when player removes child killer karma additional times. Fixed error with incorrect name of script of map_v15_village map. Added output of message of increasing trade skill when finishing “Farm vermins” quest to the log. Weakened the giant wasp in the quest in Modoc. Rev.17 http://www2.xp-dev.com/sc/change/94227/17 AngelScript was updated to rev.684, v. 2.19.2 Added global variables to the client: bool __ShowTile, __ShowRoof, __ShowItem, __ShowScen, __ShowWall, __ShowCrit, __ShowFast, __ShowPlayerNames, __ShowNpcNames, __ShowCritId. Deleted limit of min. time of using Map::SetLoopTime (it was 1 second). Fixed registration of the global variables of string type (pragma globalvar). Fixed using reserved global variables string type. Added global variables to mapper: string __ClientPath, __ServerPath. Deleted constant modificators in client from string CritterlCl::Name, CritterlCl::Lexems. Added variable CritterlCl::NameOnHead, which if is not empty, outputted above critter’s head. Rev.16 http://www2.xp-dev.com/sc/change/94227/16 Fixed reclearing of child killer status. Rev.15 http://www2.xp-dev.com/sc/change/94227/15 Fixes: - Fixed names of Giant Wasps and bugs in kills statistic; - Reduced requirements of amount of killed mobs and intelligence in Broken Hills quests (bh_marcus.fodlg, bh_super.fodlg); - Reduced requirement of intelligence for “Fresh blood” quest (vc_doctor_troy.foldg); - Fixed possibility of gaining experience multiple times in “Cabbage” quest in Modoc (mod_farmer_q.fodlg); - Player receives reputation in NCR for quest “True cowboy” even if only one Brahmin is brought (ncr_felix.fodlg); - Michael’s miniquest in NCR can be done by every player only once (ncr_michael.fodlg); - Added requirement of 16 level for “buggy” quest (ncr_ratch.fodlg); - Fixed amount of gaining experience when player rejects gratuity in “Postman” quest (q_mail_reciever.fodlg); - Fixed cooldown of “Postman” quest; - Cave mobs – spawn point near the exit grid was removed in the smallest cave; - Fixes of several dialogues in Vault City; - New quest – “Fugitive returning” – when finished, status “Child killer” is removed. Hubbologist in Redding bank offers this quest; - New quest “Farm vermines”. It is offered by Joe in Modoc (mod_joe.fodlg); - Fixed energy barrier in GECK town; - Added computer for breaking of energy barrier inside the town; - Added car lots for GECK town citizens (not more than 2); - Added ability of clearing of citizens list by town leader using the terminal. Rev.14 http://www2.xp-dev.com/sc/change/94227/14 Update for Notepad++ (Syntax_highlighting, autocomplete, function parameters hints) Rev.13 http://www2.xp-dev.com/sc/change/94227/13 First stable version.h3. Your title here...

SidleJinks picture

Description: Rev.173 http://www2.xp-dev.com/sc/change/94227/173 Traders were added to Atoll and Redding. Barterground was moved to position 690:760 as it isn’t needed anymore in north-west region due to noPvP mode. Locations “BiX Church” and “Atom’s Church” were moved to special encounters class. Fixed rewards in some quests. Maps fixes. Biscuit on Modoc can be received only once now (as in Fallout 2). Rev.172 http://www2.xp-dev.com/sc/change/94227/172 noPvP mode was activated on some TLA maps. It will be used on the next TLA session. For switching it off on your server set global variable __NoPvpMaps=false; in script config.fos Ability of making a list of ignored players, it works similarly NameColorizing. It needs manual adding nickname of ignored player to IgnoreList.txt For refreshing the list of ignored players in game use console command ~ignorelist. Rev.171 http://www2.xp-dev.com/sc/change/94227/171 Derivative objects system for mapper was updated. When placing base object, all his derivatives are placed automatically. If one object from the group is being selected - all others are being selected too. If the prototype or position of the derivative object is changed, changes will be automatically applied by mapper or server when loading. For the example see cars, at the present time they have one derivative object – their trunk. Now when placing the car, it will be created automatically, also it will be moved with it and if base or derivative object is deleted, all the group will be deleted too. The system of moving selected objects in mapper was upgraded. Now in hexagonal system the selected objects will be moved without being tearing apart. Also the selected objects, when being moved, will stop at the map’s edge, so they won’t mix into a pile. The problem with detecting whether items in container belong to their inventory or container. Previously items were placing on the hex and if you place two containers on the same hex, all the items will stack in one container. Now it is fixed. Item::TrapValue initialization through mapper was fixed. If rewriting is performed on prototypes loading, alert is displayed. It was added for items and critters prototypes. In object’s structure in mapper was deleted field const bool Item_InContainer and added const uint UID, ContainerUID, ParentUID, ParentChildIndex Rev.170 http://www2.xp-dev.com/sc/change/94227/170 Now server doesn't block client's libraries while working. Previously you needed to stop the server to replace client's dll (Server/scripts/fonline_tla_client.dll). Rev.169 http://www2.xp-dev.com/sc/change/94227/169 Combined content of MASTER.DAT + CRITTER.DAT. Size - 201 MB! Rev.168 http://www2.xp-dev.com/sc/change/94227/168 Client and Mapper are no longer bounded with Fallout’s data files - MASTER.DAT and CRITTER.DAT. These files content is combined (excess data is deleted) and packed into fallout.dat (will be uploaded with the next update) and defined in DataFiles.cfg. Global variables string __MasterPath, __CritterPath were deleted. The configurator (FOConfig.exe) is updated accordingly fixes above. Critter’s lighting in the death moment and flat items lighting was fixed. To server/client/mapper scripts the next functions for operating with the constants (*Names.lst) were added: int GetConstantValue(int constCollection, string@+ name) – identifying constant’s value by the name; string@ GetConstantName(int constCollection, int value) - identifying constant’s name by the value; void AddConstant(int constCollection, string@+ name, int value) – adding separate constant to the collection; bool LoadConstants(int constCollection, string@+ fileName, int pathType) – loading/reloading the collection; int constCollection – collection’s number, see Constants collections in _defines.fos, also you can define your own collections; string@+ name – constant’s name; int value - constant’s value; string@+ fileName, int pathType – collection file’s name and folder path. Rev.167 http://www2.xp-dev.com/sc/change/94227/167 Bug with error of name/password in login menu if it exceeds 12 symbols was fixed. Screen centering on the player when loading map in right-angle geometry was fixed. Copying objects in Mapper from smaller map to the bigger one was fixed. Mapper hanging up when Sleep < 0 was fixed. Crashes when loading ART files were fixed. Principe of transparency defining with parameter ‘”t” was changed, now it isn’t equal to 255 – paletteIndex, but to max(R, G, B). Rev.166 http://www2.xp-dev.com/sc/change/94227/166 System of operating with items prototypes was updated (ProtoItem). Ability to add your own fields to proto class was added. New pragma ‘bindfield’ is used for this, e.g.: #pragma bindfield "const int ProtoItem::MyValue -> 400" it means creation of field MyValue of int type with offset 400 (considering thas int is 4 byte, it will occupy bytes 400, 401, 402, 403). Totally for user’s fields 500 bytes are available. Field is equal to zero as defaults, but it is possible to change the value by defining value (in the current case MyValue=111 or MyValue=SkillBigGuns) in proto file (.fopro), number (if it contains only numbers) or path to the file (it is identified by the presence of ‘/’ or ‘\’ symbols). For now fields which are not used by the engine are taken out to scripts, see _defines.fos Item prototypes fields. Changes in structure ProtoItem. All next methods are deleted uint8 GetType() const uint16 GetProtoId() const bool IsGrouped() const bool IsWeared() const bool Container_IsGroundLevel() const List of new fields which are registered in the engine (part of them is renamed, some were deleted) http://pastebin.com/8R4QkP3h The other fields are registered with #pragma bindfield in _defines.fos. Now all items can stack and wear out, for this Boolean fields are added to the prototypes bool ProtoItem::IsStackable bool ProtoItem::IsDeteriorable Item type ITEM_MISC_EX was deleted, it is combined with ITEM_MISC (miscex.fopro is deleted). Vehicles are taken out to separate type ITEM_CAR (car.fopro was added). Also now user can define any type numbers for the items. Former fields uint MiscEx_StartVal0..9 of the start values for Item::Val0..9 were moved to common area named StartValue0..9, and with these values Item::Val0..9 are initialized. Metod bool Item::IsCar() const was deleted, instead of it use GetType()==ITEM_CAR. The next methods are renamed bool Item::IsGrouped() const -> bool Item::IsStackable() const bool Item::IsWeared() const -> bool Item::IsDeteriorable() const The next fields are renamed uint16 Item/ItemCl::BrokenWear -> Item/ItemCl::Deterioration uint16 Item/ItemCl::CarDeteoration -> Item/ItemCl::CarDeterioration uint8 MapperObject::Item_DeteorationFlags -> uint8 MapperObject::Item_BrokenFlags uint8 MapperObject::Item_DeteorationCount -> uint8 MapperObject::Item_BrokenCount uint16 MapperObject::Item_DeteorationValue -> uint16 MapperObject::Item_Deterioration Mechanism of affiliated objects was moved for common use. Previously it was available only for vehicle’s trunk. One object can have up to five derivatives. Numbers of the derivative objects are defined in uint16 ProtoItem::ChildPid_0..4. By creation of base object, derivatives are created automatically. For now Mapper doesn’t create affiliated obkects automatically, but it will be fixed in further. For setting the place of situation, special field ChildLines_0..4 is used (former MiscEx.Car.Bag_0..1, see below by recording format). Also it is possible now to define automatic blocking for any objects, not only for vehicles – field BlockLines (former MiscEx.Car.Blockers). Recording format for Child/BlockLines – XYXYXY..., where X is direction number (0..5/7), Y is the amount of steps (1..9) in this direction (previously for vehicle’s trunk for another recording format - XXXX...). Maximum amount of steps for BlockLines – 50, for ChildLines – 6. For operating with derivative objects use methods Item@+ Item::GetChild(uint childIndex) const (бывшая Item@+ Item::CarGetBag(int numBag)) bool Map::CheckPlaceForItem(uint16 hexX, uint16 hexY, uint16 pid) const (bool Map::CheckPlaceForCar(uint16 hexX, uint16 hexY, uint16 pid) const) Fields renaming affected lots of scripts, be attentive. Old proto format is converted to the new one automatically, but Object Editor (ObjectEditor.exe) still operates only with old format. It will be fixed soon. To replication.fos and entires.fos scripts the influence of right-angled geometry was added. Script main_planes.fos is formatted as a separate module. All pragmas were move to the end of _defines.fos. Drop of FPS when switching on view/attack borders was fixed. Rev.165 http://www2.xp-dev.com/sc/change/94227/165 Fix for the ASCompiler. Rev.164 http://www2.xp-dev.com/sc/change/94227/164 Changed ASCompiler output format to “filename(linenumber) : message”. Such output is recognized by a number of IDEs and allow jumping to the code by a double-click on the output line. Rev.163 http://www2.xp-dev.com/sc/change/94227/163 Tabs management system was added to Mapper. Now one tab can have numerous subtabs. Tabs names and its filling is defined in mappers scripts. But some tabs already have initial filling. Item – items prototypes by defaults (items.lst); Tile – tiles by default, search is performed in ‘art/tiles/’; Crit – critters prototypes by defaults (critters.lst); Fast – displays often used objects, initial state is defined in scripts (InitializeTabs in mapper_main.fos); Ign – Ignore, shows ignored objects which are not shown on the map; Inv, Msg, Map – special tabs which have nothing to do with the mechanism, but it is possible to change its name throug TabSetName (see below). The tab can have subtabs only of one type – tiles, critters or items (displayed in priority order). For items and critters the subtab’s name is chosen by user, for the tiles it is performed automatically. The lowest subtab “all” contains all prototypes (or tiles) on a list above. For activation the menu of tab choosing – perform a double click on it. If positions are numerous then use mouse wheel for navigation (scroll speed: normal – 4, with pressed shift – 8, with pressed ctrl – 20, with pressed alt – 50). For tabs management use scripts, functions Tab* uint TabGetTileDirs(int tab, string@[]+ dirNames, bool[]+ includeSubdirs) uint TabGetItemPids(int tab, string@+ subTab, uint16[]@+ itemPids) uint TabGetCritterPids(int tab, string@+ subTab, uint16[]@+ critterPids) void TabSetTileDirs(int tab, string@[]+ dirNames, bool[]+ includeSubdirs) void TabSetItemPids(int tab, string@+ subTab, uint16[]@+ itemPids) void TabSetCritterPids(int tab, string@+ subTab, uint16[]@+ critterPids) void TabDelete(int tab) void TabSelect(int tab, string@+ subTab) void TabSetName(int tab, string@+ tabName) int tab – tab’s number (see Tabs in _mapper_defines.fos); string@[]@+ dirNames – folder’s names for tiles searching; bool[]@+ includeSubdirs – turn on search in subfolders; string@+ subTab – subtab’s name; uint16[]@+ itemPids – item’s prototype numbers array; uint16[]@+ critterPids - critters’s prototype numbers array; string@+ subName – tab’s name. Global variable was added bool __SplitTilesCollection = true It defines whether tiles should be divided into groups in the folders. The group is defined as a string in the file’s name before the first number (e.g. abc12.png - group abc), if the number is absent, then group is defined as '<other>'. In connection with these changes, the global functions are deleted uint GetFastPrototypes(uint16[]@+ pids) void SetFastPrototypes(uint16[]@+ pids) Other updates. Fixed incorrect work of server/client which caused some bugs. Global variable int __GeometryType was added to _defines.fos for the indication of chosen geometry. See constants in _defines.fos Geometry. Depending on its value, tab with Tactics and Arcanum is added. Ability to work with file names which include spaces is added. When loading ART files, it is possible to flip them vertical or horizontal. Parameters in the file name - ‘v’/‘V’ and ‘h’/‘H’. When loading SPR file, if you define in changing color parameter – layer’s number -1, then the modificator will be applied to all four layers. Rev.162 http://www2.xp-dev.com/sc/change/94227/162 Quest perks “Midnight Child”, “Nosderatu Blood” were added (Modoc, “Night’s tender”). Now new home position is set for NPC-travelers (Devin, Eli) when they enter new location. Female characters now can finish quest of removing childkiller status. Allies HP and resistances were increased in “Dangerous hunt” quest. Also a simple dialogue is added to them. The forged letter is now removed from the inventory when finishing quest “Forgery”. Edvin in Klamath tells with a popup phrase when starting gathering items. A delay was added to the prisoner giving the cues in “Ernst Telman” quest. Ability of intimidating the NPC visitor if it’s a woman was deleted in quest “Wrath”. Barcus now reacts with popup phrases to the futher meetings with the player who have done quest “Amnesty for Joshua”. Upon the receiving lieutenant rank of Vaultcity’s Guard, player is awarded with a black combat armor. In “Diplomatic Courier” quest time (24 hours) which Sheiman takes for the thoughts now is calculated correctly. Upon finishing this quest, player receives +1 reputation in NCR. Sell price of the buggy which player receives upon finishing the quest in NCR was set to zero. Dialogue launch when player uses an antidote in quest “Poisoned Regulator” in Redding was fixed. Players who gained Vaultcity citizenship now can trade with Randal with no restrictions. Reputation calculation in quests “Real Cowboy”, “Hub Bibliography” in NCR was fixed. If player refuses the reward in “Hub Bibliography” quest, he gains +2 reputation (was +1) when he delivers 5 books. Increasing raider’s resistances and skills every new attack on NCR was switched off. Ability of crafting and buying chitin armor was added. Giant beetles drop chitin. Items with ITEM_GAG flag deletion upon player’s death was fixed. Rev.161 http://www2.xp-dev.com/sc/change/94227/161 Ability to customize game geometry was added, either the support of isometric projection with quadrangles was. For customization use global variables bool __MapHexagonal – isometry type: true - hexagonal, false - quadrangular; int __MapHexWidth – hex width; int __MapHexHeight – hex height; int __MapHexLineHeight – hex line height; int __MapTileOffsX/Y – ground tiles offset; int __MapRoofOffsX/Y – roof tiles offset; int __MapRoofSkipSize – amount of hex per one roof tile (necessary for its correct hiding); float __MapCameraAngle – 3d model rendering angle; bool __MapSmoothPath – path smoothing when moving; string __MapDataPrefix – path and prefix for the geometry files. Operational sprites for geometry are situated in art/geometry/. Quadrangular isometry use 8 directions, hexagonal – 6. In script config.fos in function InitializeGeometry(), necessary adjustments for 3 games (Fallout1/2, Fallout Tactics and Arcanum) are added. This function can be called in server, client and mapper scripts, as all three of them need geometry information. Global variables uint __LookDir4, uint __LookSneakDir4 were added for 8-directional geometry. Fixed Tactics SPR files loading. Mode MODE_NO_TALK was added. It affects ability to talk and appearance of the icon in the context menu. Double click on hex, affecting avatar’s moving, was fixed. Creation of descriptions for critters prototypes (FODLG.MSG) with high identifiers was fixed. Image of elephant gun was added in 3d. Rev.160 http://www2.xp-dev.com/sc/change/94227/160 Fixed a bug with server and client communication. Fixed a bug with wrong sprites display. Rev.159 http://www2.xp-dev.com/sc/change/94227/159 Documentation's update, mistakes fixes. Rev.158 http://www2.xp-dev.com/sc/change/94227/158 Script start_server_client.fos was renamed to config.fos and now it isn't simply pasted into function start(), but presented as a separate module with function InitializeGame(). Macros for operating with time were moved from _macros.fos to separate module _time.fos. Slight fix of drugs.fos. Rev.157 http://www2.xp-dev.com/sc/change/94227/157 Errors messages in server log when operating with functions GetPlayerName/GetPlayerId were removed. Also GetPlayerName returns null now, if the player wasn't found. Bugs of reputation calculation were fixed. Rev.156 http://www2.xp-dev.com/sc/change/94227/156 Ability to affect the colors when loading Tactics sprites was added. To make color shift, define necessary values in file name’s parameters (“$”). Format: fileName$[index,r,g,b]animName.spr (can be any amount of shifts […]) where index – body part’s number (0 - miscellaneous, 1 - skin, 2 -hair, 3 - armor); r,g,b – color shift for the each component, can be negative Example: someSprite$[2,50,-30,-20]anim1.spr – load sprite someSprite.spr, with animation anim1 and hair’s color shift in RGB (50,-30,-20). Additional flags for operating with color’s shift were added for Tactics critters (_animation.fos, animation.fos). Use macros ANIM1_COLOR_SKIN(index), ANIM1_COLOR_HAIR(index), ANIM1_COLOR_ARMOR(index) for values defining. Index can take on value from 0 to 15, appropriate to it values of color shift look in array colorOffsets of animation.fos script. For ability testing you can use text function void ColorOffset(Critter& cr, int skin, int hair, int armor) in test.fos. Rev.155 Some native structures were fixed. Rev.154 http://www2.xp-dev.com/sc/change/94227/154 AngleScript is updated to revision 822. Ability of sorting is added to scripts arrays Ascending sort void array::sortAsc() void array::sortAsc(uint index, uint count) Descending sort void array::sortDesc() void array::sortDesc(uint index, uint count) For user’s classes sorting realize opCmp method http://www.angelcode.com/angelscript/sdk/docs/manual/doc_script_class_ops.html Vehicle animations on the global map and item’s animations in Mapper are fixed. Some points in operating with critter’s animations are fixed (animation.fos). Global variable __GmapActive is fixed. Global variable for setting min. offline time after that client will completely exit from the game was added. uint __MinimumOfflineTime = 180000; // 3 minutes Rev.153 http://www2.xp-dev.com/sc/change/94227/153 Additional constants for operating with Chosen's actions were updated (Get/SetChosenActions, for CHOSEN_USE_ITEM). Rev.152 http://www2.xp-dev.com/sc/change/94227/152 Additional constants for operating with Chosen's actions were added (Get/SetChosenActions). Rev.151 http://www2.xp-dev.com/sc/change/94227/151 Bugs with incorrect files's names path detecting were fixed. Rev.150 http://www2.xp-dev.com/sc/change/94227/150 3d models loading was fixed. 3d models rendering to sprites was fixed. Critters animations were fixed (death in 2d and 3d modes). Shift calculation for some models was fixed. SAY_DIALOG/SAY_APPEND mechanics was fixed. (by Atom) Server’s config loading in Mapper was fixed. (by Atom) File HashNames.lst was added to client. Names of files which contain parameters (‘$params’) should be entered in it. If you use such names in the prototypes, Mapper or scripts GetStrHash), then include this name to this list. Format of writing: [any number] [file’s name] [end of string] E.g. 0 art\scenery\BrazureFire$t.ART 0 art\scenery\BrazureFire$t3.ART In further it is possible to detect and transmit such names automatically, but for the present use this system. Roof disappearing if it is situated in odd hex in two axis. Rev.149 http://www2.xp-dev.com/sc/change/94227/149 Documentation was updated. Some fixes in Arroyo (Minoc’s quest about raiders). Usage mode was added for sledgehammer and supersledge (for resources mining). Guard lib was brought into common standard of scripts formatting. Rev.148 http://www2.xp-dev.com/sc/change/94227/148 Two reserved variables were added to HLSL effects float AnimPosProc – current animation’s per cent 0%..100%, [0,1); float AnimPosTime – current animation’s time in seconds. Client’s hanging under certain circumstances was fixed (e.g. receiving item’s data when player in process of moving between maps). Dump generation when closing server application without stopping was switched off. Generation of unnecessary messages to log in function animation_ animation.fos was fixed. Rev.147 http://www2.xp-dev.com/sc/change/94227/147 Parameters for critter’s movement controlling were added. Time for moving in milliseconds: #define ST_WALK_TIME (117) #define ST_RUN_TIME (118) Ability to move #define MODE_NO_WALK (539) #define MODE_NO_RUN (540) If these parameters are equal to zero, then data is taken from CritterTypes.cfg. Loading of some ART files was fixed (Arcanum). Ability of specifying special image processing was added. Palette elements will be transparent depending on its index in the palette (alpha = 255 – index). To chose this loading type - use symbol “t” (or “T”) in file name parameters. E.g. ‘filename$t.art’; also you can combine with palette, e.g. ‘filename$1t.art’. Ignoring of spec.symbol “/r” was additionally added for splitEx function. In functions void DrawSprite(... bool applyOffsets) if applyOffsets == true there were additionally added shifting of width/2 and height of the image. Unnecessary fo3d files were deleted. Palette influence for Arcanum critters was fixed. Rev.146 http://www2.xp-dev.com/sc/change/94227/146 One more fix of incorrect critter displaying. Rev.145 http://www2.xp-dev.com/sc/change/94227/145 Quest “Communicated” was added (Redding). Caravaneers phrases were fixed, now they tell correct departure dates. Quest “Honomer’s bodyguard” was added (San Francisco). Retina scanner in GECK town was fixed. Slight fixes of the hubbolog’s map in San Francisco. Special result function for skill rise calculation through a dialogue was added.(dialog@r_SkillUp) The script for quest locations creating was fixed (hostile_location_quest.fos), allies and enemies scripts now work correctly. Resetting of a quest variable when deleting the location was fixed. Script for realization a dialogue between several npc’s with popping up phrases was added. (npc_dialog.fos) Story line implementation was continued. Maps numeration in the location with mutants was fixed (quest string “Guardian”). Rev.144 http://www2.xp-dev.com/sc/change/94227/144 Critter’s hitpoints regeneration was moved to scripts, you can look realization in function critter_idle main.fos. Global function for critters sampling from the global map was added to server scripts. uint GetGlobalMapCritters(uint16 worldX, uint16 worldY, uint radius, int findType, Critter@[]@+ critters) Additionally to methods bool Map::GetNearEntireCoords(int& entire, uint16& hexX, uint16& hexY) const bool Map::GetEntireCoords(int entire, uint skip, uint16& hexX, uint16& hexY) const were added methods bool Map::GetNearEntireCoords(int& entire, uint16& hexX, uint16& hexY, uint8& dir) const bool Map::GetEntireCoords(int entire, uint skip, uint16& hexX, uint16& hexY, uint8& dir) const which return direction. Global variable which specifies if the password in the client’s login window should be hidden was added bool __HidePassword = true Incorrect critters creation in Mapper was fixed. Displaying of switching critter’s type 3d->2d on the client’s side was fixed. Rev.143 http://www2.xp-dev.com/sc/change/94227/143 Fixed critters loading in Mapper (141 revision's bug). Rev.142 http://www2.xp-dev.com/sc/change/94227/142 Fixed server loading (the previous revision bug). Rev.141 http://www2.xp-dev.com/sc/change/94227/141 Mechanism for identifying critter’s animation file name was added. Now you can operate with critter’s animations from Tactics and Arcanum without any conversions. All data files which you need for enabling one or another critters are cited in CritterTypes.cfg comments. The next critters were added to SDK: Humanoid, Behemoth, MTT, Pacification. They are repacked to the separate archive ftrobots.bos. But all available critters from Tactics and Arcanum are added to CritterTypes.cfg with correctly defined parameters for them (by Tabloid), so you can enable the needed data files and use the critters. All animations are transformed to the general appearance (ANIM2_2D*, ANIM2_3D* -> ANIM2*). The functional for operating with them is moved to scripts. In some places where these values are used, numeric literals are replaced by string constants, which description you can find in DefineNames.lst. Fixes were made in weapons prototypes (weapons.fopro) and fo3d templates for 3d critters from VanBuren (_VBHuman.fo3d, _VBMob.fo3d, _VBWeapon.fo3d). Now three sets of primary and secondary animations are used for critters, for three condition types – alive, knockout, dead const uint Critter/CritterCl::Anim1/2Life/Knockout/Dead (const uint Critter/CritterCl::Anim1/2 were deleted). These values are used for animations as default. Pay attention that Anim1 additionally is summed up with animation of the weapon in the active slot, bit-by-bit OR. It is necessary for assignation certain values on continuing basis (e.g. sitting, lying position). For changing these values the next method is used void Critter::SetAnims(int cond, uint anim1, uint anim2) int cond – defines the position to apply values to (COND_* in _defines.fos), if null it is applied to all three; uint anim1, anim2 – animation values. Deleted const uint8 Critter/CritterCl::CondExt Accordingly all COND_*_* for them are deleted. Now position is differentiated by the animations. In connection with it, the next methods specifications were changed void ToDead(uint anim2, Critter@+ killer) bool ToKnockout(uint anim2begin, uint anim2idle, uint anim2end, uint lostAp, uint16 knockHx, uint16 knockHy) void EventKnockout(uint anim2begin, uint anim2idle, uint anim2end, uint lostAp, uint knockDist) void EventSmthKnockout(Critter& fromCr, uint anim2begin, uint anim2idle, uint anim2end, uint lostAp, uint knockDist) uint anim2begin, anim2idle, anim2end – animations of the knockout begging, staying in it and coming to yourself. Standard macroses are defined for the transfer KNOCKOUT_ANIM2_DEFAULT, KNOCKOUT_ANIM2_STUNNED (in _animation.fos). Also Mapper operates now not with CondExt, but with Anim1/Anim2 for the current Cond. Global variables for client/mapper for defining combat mode animations were added uint __Anim2CombatBegin = ANIM2_BEGIN_COMBAT uint __Anim2CombatIdle = ANIM2_IDLE_COMBAT uint __Anim2CombatEnd = ANIM2_END_COMBAT The next reserved client/mapper functions were added (animation.fos): - string@ critter_animation(int animType, uint crType, uint anim1, uint anim2, uint& pass, uint& flags, int& ox, int& oy) Function which is called when loading necessary animation. Returned value - file’s path and name. int animType – critter’s animation type (new parameter which is set in CritterTypes.cfg); uint crType – critter’s type; uint anim1, anim2 – animation’s indexes; uint& pass – function call’s number, is changed by the user. If animation loading failed and this parameter was changed, then function will be recalled (in certain cases you should try to load different files for the one animation); uint& flags – flags, at the present moment two of them – to take the first or the last frame from the animation ( Anim loading flags in _animation.fos); int& ox, &oy – shifts for the animation, in pixels. - bool critter_animation_substitute(int animType, uint crTypeBase, uint anim1Base, uint anim2Base, uint& crType, uint& anim1, uint& anim2) If animation loading failed (and uint& pass wasn’t changed), then this function is called for animation substitute detection (e.g. left hook can be replaced by the right hook). true is returned if the substitute was found (engine also additionally checks if crType, anim1, anim2 were really changed), false – no substitute, animation won’t be loaded and played. int animType – see above; uint crTypeBase, anim1Base, anim2Base – base critter’s and animation’s type, which were at the start; uint& crType, &anim1, &anim2 - critter’s and the current animation’s type for the substitution - bool critter_animation_fallout(uint crType, uint& anim1, uint& anim2, uint& anim1ex, uint& anim2ex, uint& flags) As Fallout’s animations are still loaded by the engine (additional shifts calculation and animations pasting together is needed), for determining animations conformity this function is called, i.e. instead of critter_animation for fallout’s animations this function is called. true is returned if animation is presented, false – not. Method bool Critter::IsAnim3d() const is deleted, use instead of it the global function int GetCritterAnimType(uint crType) values look in Anim types _animation.fos. Critters actions sounds now are played in the scripts, in animation_2d/3d_process. New mechanism for sound file name identification was made, look PlayAnimSound in animation.fos. Critters prototypes were divided into fallout’s (fallout2.fopro) and TLA's (tla.fopro). Bug with roof’s non-transparency in Mapper was fixed. Name indication of chosen critter or tile prototype in mapper was added. Format fo3d now recognizes named constants DefineNames.fos, namely for modificators Mesh, Subset, Layer, Value, DisableLayer, DisableSubset, Texture, EffDef (для Dword), Anim, AnimSpeed, AnimEqual. Global server variable for determining call frequency was added GLOBAL_PROCESS_MOVE uint __EncounterTime = 5000 Global client variable for determining frequency of foolish trick animation call was added uint __CritterFidgetTime = 50000 is deleted using formula Random(__CritterFidgetTime, __CritterFidgetTime * 2) Item prototype’s parameter was deleted bool ProtoItem::Weapon_RequiresActivation now if animation doesn’t exist, it is just not played. Parameters uint16 MapperObject::Scenery_ToMapX/Y were deleted, in mapper also. Moving between locations is performed by entery points. In weapons prototypes types of action animations were substituted from numeric by string constants (accordance look in DefineNames.lst). Appropriate changes were performed in ObjectEditor. Client functions PlaySound andPlayMusic now return bool, signalizing if file was found or not. Global functions for server/client/mapper which return appropriate values from CritterTypes.fos were added uint GetCritterAlias(uint crType) string@ GetCritterTypeName(uint crType) string@ GetCritterSoundName(uint crType) Mapper’s scripts were moved to server’s scripts folder. Also the whole set of functions for operating with CritterTypes.fos was added to Mapper bool IsCritterCanWalk(uint crType) bool IsCritterCanRun(uint crType) bool IsCritterCanRotate(uint crType) bool IsCritterCanAim(uint crType) bool IsCritterAnim1(uint crType, uint anim1) int GetCritterAnimType(uint crType) uint GetCritterAlias(uint crType) string@ GetCritterTypeName(uint crType) string@ GetCritterSoundName(uint crType) Specifications of client’s reserved functions were changed animation2d_process, animation3d_process parameter bool animateStay was added to the beginning. It indicates if any action is performed now (false) or stand animation (true). Reaction for global map’s interface buttons pressing when the size of map’s area (GmapMap) covers the buttons area was fixed. Bug with incorrect loading/saving maps in which script’s or function’s name consists of spaces was fixed. Bug with potential server crashing when using AI_PLANE_MISC was fixed. Rev.140 http://www2.xp-dev.com/sc/change/94227/140 Some robots from Fallout Tactics (look the next revision). Rev.139 http://www2.xp-dev.com/sc/change/94227/139 The next quests were added in San Francisco: “Introduction into Hubbology”, “Hub’s justice”. Transport to Atoll is available for the players who are doing “Introduction into Hubbology” quest (npc is in the docs area of San Fracisco); Automatic transfer to the command center of GECK city citizens when entering the map was removed. Now citizens can choose spawn point. Quest location “Hubbologists laboratory” was added (author JunoReactor). Rev.138 http://www2.xp-dev.com/sc/change/94227/138 Arroyo: Quest “Evidence of Chosen’s death” was added (Todd Stewart); Two courier quests were added (Cassidy, Todd Stewart); Encounter fixes: Fixed bugs of the 120 revision; Fixed random encounters where normally aggressive npc’s didn’t attack after fighting with the other npc’s; Fixed bug with unlimited experience in Den; Fixed mistakes in NCR quests cooldowns; Slight dialogues fixes. Rev.137 http://www2.xp-dev.com/sc/change/94227/137 Ability to specify the layer of tiles/roof to organize correct query of displaying. Totally there can be 5 layers, from 0 to 4. You can switch between them with pressing shift and pressing appropriate key (from 0 to 4). Indication of the current layer is specified in the map’s supplemental information (in upper right corner). Specification of MapperMap AddTile/AddTileName methods was expanded, also layer parameter was added void AddTile(uint16 hexX, uint16 hexY, int offsX, int offsY, int layer, bool roof, uint picHash) void AddTileName(uint16 hexX, uint16 hexY, int offsX, int offsY, int layer, bool roof, string@+ picName) Functions for hash calculation by file’s name and inverse function were added to the native scripts const char* (*GetNameByHash)(uint hash); // Get name of file by hash uint (* GetHashByName)(const char* name); // Get hash of file name The functional for operating with the chosen’s actions was added to the client’s scripts. For taking or specifying the actions use functions uint GetChosenActions(uint[]@+ actions) void SetChosenActions(uint[]@+ actions) This array consists of blocks of seven variables, the first is the type, the other are the parameters. Values of types and parameters look in _client_defines.fos Chosen actions. Argument with the location was added to the reserved function for checking the entries into this location bool entrance_FuncName(Location& loc, Critter@[]& critters, uint8 entrance) The next events were added for critters CRITTER_EVENT_USE_ITEM_ON_ME bool EventUseItemOnMe(Critter& whoUse, Item& item) CRITTER_EVENT_USE_SKILL_ON_ME bool EventUseSkillOnMe(Critter& whoUse, int skill) In the calls stack it is situated between CRITTER_EVENT_USE_* and the global handler. That is CRITTER_EVENT_USE_ITEM for the player + CRITTER_EVENT_SMTH_USE_ITEM for those who can see the player. CRITTER_EVENT_USE_ITEM_ON_ME The global handler critter_use_item. and CRITTER_EVENT_USE_SKILL for the player + CRITTER_EVENT_SMTH_USE_SKILL for those who can see the player. CRITTER_EVENT_USE_SKILL_ON_ME The global handler critter_use_skill. The supplemental information (current hex, fps, etc.) in Mapper is presented in the upper right corner. Bug of 135 revision with transparent tiles when placing them was fixed. Data connected with unfinished mechanism of textured grid was deleted. Rev.136 http://www2.xp-dev.com/sc/change/94227/136 Maps converted to text format. Rev.135 http://www2.xp-dev.com/sc/change/94227/135 Now only text format is used for maps, it is binary only for loading. All maps are converted to the text format (they will be uploaded with the next revision). Extension of this format is “fomap”. To convert your own maps to the new format – execute in Mapper ““#ConvertMaps”, then you should manually or using Mapper set required values in Time, NoLogOut, ScriptModule, ScriptFunc fields, which values you can see in file Maps.cfg. File Maps.cfg is not used anymore, locations prototype numbers are defined opposite to their name in file Locations.cfg, as in the most cases the one map prototype is used for the one location. According to these changes, the next MapperMap methods are deleted: uint GetTile(uint16 tileX, uint16 tileY, bool roof) const void SetTile(uint16 tileX, uint16 tileY, bool roof, uint picHash) string@ GetTileName(uint16 tileX, uint16 tileY, bool roof) const void SetTileName(uint16 tileX, uint16 tileY, bool roof, string@+ picName) And the next are added: uint GetTilesCount(uint16 hexX, uint16 hexY, bool roof) const void DeleteTile(uint16 hexX, uint16 hexY, bool roof, uint index) uint GetTile(uint16 hexX, uint16 hexY, bool roof, uint index) const void AddTile(uint16 hexX, uint16 hexY, int offsX, int offsY, bool roof, uint picHash) string@ GetTileName(uint16 hexX, uint16 hexY, bool roof, uint index) const void AddTileName(uint16 hexX, uint16 hexY, int offsX, int offsY, bool roof, string@+ picName) Also the next fields are added: const int WorkHexX const int WorkHexY int Time bool NoLogOut string ScriptModule string ScriptFunc The next methods are deleted (as their technology is not good enough for now): string@ GetTerrainName(uint16 tileX, uint16 tileY) cons void SetTerrainName(uint16 tileX, uint16 tileY, string@+ terrainName). Function bool SaveMap(MapperMap@+ map, string& fileName, int pathType, bool text, bool pack) now looks as bool SaveMap(MapperMap@+ map, string& fileName, int pathType). The ability to transmit commands /text /pack when saving by the console is deleted respectively. Several functions for operating with map’s fields were added to mapper script (you can do this procedure simply editing necessary field in the map’s file with text editor): #MapTime value – map’s time in minutes; #MapNoLogOut value –possibility to log out on the map; #MapScriptModule moduleName – script, module’s name; #MapScriptFunc funcName – script, function’s name. Now it is possible to place lots of sprites on one hex. Be attentive, fallout’s tiles have the same size and if you place two tiles on the same hex, you won’t see it (only if you select it , it will be less transparent than the others). Take it into account when you place or copy-paste tiles. Function #ClearTiles can help you with this problem, it deletes superfluous tiles from the hex. So, if you operate with fallout’s tiles and you don’t need several tiles on the same hex, execute this script when you finish work. Also you can place tiles on every hex, not in two. Ability of shifting is added for tiles. To produce tile shift just make the same operations as switching between tiles, but additionally pressing shift. Also you can use the same shift procedure for items. To cancel shift, press Alt with Shift and move objects. Fixed 130 revision’s bugs. Fixed bug with absence of shifting in fofrm with one sprite. Fixed bug with error in loading sprites in scripts (LoadSprite), which caused several other bugs. Remained ini files were formatted. Rev.134 http://www2.xp-dev.com/sc/change/94227/134 Config was uploaded by mistake. Take into accont, don't use config file from 132 and 133 revisions, admin pass is "hh" there. Rev.133 http://www2.xp-dev.com/sc/change/94227/133 Redding maps fixed, quest NPC were added. Rev.132 http://www2.xp-dev.com/sc/change/94227/132 Fixed "Anger" quest, the missing dialogue was restored, now it can be finished. Added quest "Forgery". (VC, Linnet) Rev.131 http://www2.xp-dev.com/sc/change/94227/131 New quests "Anger", "Ernst Telman" were added. (VC, Linnet) Fixed bug in VC guard's AI scripts. Fixed mistakes in quest “Amnesty for Joshua” dialogues. Ability to cancel their service for mercs/companions was added if the owner exits from location to the global map. Rev.130 http://www2.xp-dev.com/sc/change/94227/130 Support of graphics files SPR, TIL, ZAR from Fallout Tactics was added. Support of data files BOS from Fallout Tactics was added (works as ZIP archieve). For loading certain animation from SPR files, state it in the name after “$” sign. E.g. loading CrouchAttackClubSwing animation from file Mutant.spr - “Mutant$CrouchAttackClubSwing.spr”. The first frame of first animation is taken without direction. Also, ability to set certain palette for ART files (graphics files from Arcanum) was added – state palette’s number (from 0 to 3) after “$” sign. E.g. to load dfmbnsba.art file with the second palette - “dfmbnsba$1.art”. First palette is taken without direction (that is 0). Operation with sprites was changed. Now all interface graphics (which is set in ini files) is represented not as one sprite, as continuously played animation. Functional for operation with currently drawn sprites on the map was added to the native client’s and mapper’s scripts. Structures: struct Sprite – displayed sprite; struct SpriteInfo – additional information about the sprite. Functions: Sprite* (*GetDrawingSprites)(uint& count); - currently drawn sprites, if no sprites (on the global, menu), then NULL is returned and count == 0; SpriteInfo* (*GetSpriteInfo)(uint sprId); - getting additional information about certain sprite; uint (*GetSpriteColor)(uint sprId, int x, int y, bool affectZoom); - getting pixel’s colour, with the ability of taking zoom into account; it isn’t available for 3d models yet; format - ARGB; bool (IsSpriteHit)(Sprite sprite, int x, int y, bool checkEgg); - test whether the point on the display matches with the current sprite with taking zoom, transparence and egg of transparence into account (optional). The reserved native global variable GameOpt was renamed to Game. Global variables int __MouseX, __MouseY for current mouse position indication were added. Function void GetMousePosition(int& x, int& y) was deleted. Indication of opened console bool __ConsoleActive was added to client’s scripts. Bug with memory leak when rendering 3d graphics to sprites was fixed. Rev.129 http://www2.xp-dev.com/sc/change/94227/129 Added ability to use robot-guards from Sierra as bodyguards (for those who had completed quest "No-sweat job" in Navarro) Added quest "Amnesty for Joshua" (VC, Amanda) Work of teleport on special encounter "Mad scientist's laboratory" was restored. Rev.128 http://www2.xp-dev.com/sc/change/94227/128 Second stable SDK assembly. For the purpose of decreasing repository's size, assemblies will be stored in another places. Links you can find in text files. Rev.127 http://www2.xp-dev.com/sc/change/94227/127 Quest "No-sweat job" in Navarro. Rev.126 http://www2.xp-dev.com/sc/change/94227/126 Mercenaries and companions mechanism (merc.fos) was updated. Now every companion has term of service. Companions don’t meddle in player’s showdowns with NPC’s. Fixed quest “Dip.Courier”. Now it can be finished. Fixed quest “Dock’s attack”. Now it can be finished after killing 5 giant insects. Added 3 new mercs for Lo Pan. Updates NPC-travellers mechanism (traveller.fos). The first NPC-traveller was added (eli.fos). Functions which cooldowns checkup for NPCs in dialogues were fixed. When character dies, all items with flag ITEM_GAG are deleted. Fixed cooldowns for quests “Hub bibliography”, “Sick Brahmin” and in the dialogue with dr.Klaus for stimpacks and first aid kits delivery. When NPC repairs an item, ammo is ejected. Script for NPC monologues realization was added. (monologue.fos) Rev.125 http://www2.xp-dev.com/sc/change/94227/125 Fixes of password encryption in the client's files. Rev.124 http://www2.xp-dev.com/sc/change/94227/124 Fixed bug with graphics loading in the previous update. Rev.123 http://www2.xp-dev.com/sc/change/94227/123 DAT2.1 (Arcanum) files support was added. ART (Arcanum) graphic format was added. Function for operating with strings splitEx was added. Principle is the same as in split, but empty elements are not included in the result array. Also spaces/tabs/string_hyphenation are deleted from the result elements. Examples: split(“A|B||D”, “|”) -> {“A”, “B”, "", “D”} splitEx(“A|B||D”, “|”) -> {“A”, “B”, “D”} split(“A| B\t\t||D| E|F ”, “|”) -> {“A”, “ B\t\t”, "", “D”, “ E”, “F ”} splitEx(“A| B\t\tC||D| E|F ”, “|”) -> {“A”, “B”, “D”, “E”, “F”} Additional DrawSprite functions for the client and mapper were added. You can transfer true with the last argument and as the result, the shift which is stored in the current file will be added to the sprite’s position. void DrawSprite(uint sprId, int sprIndex, int x, int y, uint color, bool applyOffsets) void DrawSprite(uint sprId, int sprIndex, int x, int y, int w, int h, bool scratch, bool center, uint color, bool applyOffsets) Fixed bugs with incorrect ini settings parsing in the scripts. Rev.122 http://www2.xp-dev.com/sc/change/94227/122 Client scripts updates: For the reserved function void render_iface(uint layer) was added calling with value layer 100 to give the ability of drawing on the global map. Also the next global variables were added for operating with the global map: bool __GmapActive – whether global map is active and all the variables below are correct; bool __GmapWait – whether waiting mode of encounter affirming is active; float __GmapZoom – current zoom, don’t forget it to take into account while drawing a map; int __GmapOffsetX, __GmapOffsetY – map shift from the zero-coordinate (up-left corner); int __GmapGroupX, __GmapGroupY – player’s group coordinates; int __GmapMoveX, __GmapMoveY – destination point’s coordinates; float __GmapSpeedX, __GmapSpeedY – movement speed every 50 ms, without taking relief into account For example, calculating the current pixel group’s position - (x = __GmapGroupX / __GmapZoom + __GmapOffsetX), (y = __GmapGroupY / __GmapZoom + __GmapOffsetY). Fixed bug with hanging when drawing 3d model, occurred in the last update. Fixed missing bracket in English texts. (by Kilgore) Rev.121 http://www2.xp-dev.com/sc/change/94227/121 Added more mouse sensitivity and now you can see mouse’s speed percent in the settings. Updated FOConfig.exe. Added AlwaysRun option. Possible values for option Mouse speed were corrected. Option Sleep now can be set to -1, that means switching it off (maximum performance). Added ability of redirecting keyboard’s symbol codes input. For this, use option KeyboardRemap (in FOnline.cfg). It is performed after space – X Y X Y …, where X is the code which is substituted by Y. Code numbers - http://fonline.pastebin.com/Qy3E0qwj Interface description in default.ini is formatted and commented. (by LoadRunner) Location prototypes updates: Option max_copy was deleted. Option max_players was added. It limits the amount of players who can be on the location simultaneously. Players, who can’t enter location because of exceeding the limit will see message 904 from FOGAME.MSG {904}{}{Location is overcrowded, try to enter later.} Password encryption in server *.client. files was added. Mouse shift when switching between movement modes was fixed. Also, for more accurate work, the hex mask was added – look \Client\data\art\misc\hex_mask.png. Only red colour is taken into account and when it takes on certain value, the shift to certain direction is performed (50 – 5, 100 – 0, 150 – 3, 200 – 2). The mask is optional, you can work without it. Fixed loading/saving tiles in the maps text format. Fixed global map shifting behind screen’s edge. Registration of useless clicks in mapper when switching between windows, now isn’t performed. Fixed the animation of 3d critter standing when situating them on the map. Also now 3d critters don’t play standing animation in the critter’s list. Fixed displaying of critters which have only one direction. Fixed command ~reloadscripts. Now when you mark items for deleting (DeleteItem/DeleteItems), their quantity is saved. So, in the moment when real deleting is performed, server will delete the requested number of items. Now knockout during turn-based fight leads to immediate loosing action points, not after finishing the turn. Also, frequent checks for the necessity of finishing the turn were added at the server - if critter’s dead, critter has negative AP, critter has no more AP. Scripts: Fixed critter’s flags (Critter extra flags, _defines.fos). Fixed special encounter scripts Guardian of Forever, Mad Brahmins. Script trader.fos was formatted. Reserved function was added to client scripts, which is called with attacks void hit_aim(uint8& aim) aim value can be redefined( Hit locations in _defines.fos). Function int Critter::GetScore(uint score) was added to server scripts. Specification Critter::AddScore(int score, int val) was changed to Critter::AddScore(uint score, int val). Function for calculation the size of drawn text was added to client and mapper scripts void GetTextInfo(string& text, int w, int h, int font, int flags, int& tw, int& th, int& lines) string& text – text; int w, h, font, flags – height, width, print, flags; int& tw, int& th, int& lines – total width, height and amount of strings in the current text. Rev.120 http://www2.xp-dev.com/sc/change/94227/120 Unused encounter tables for Fallout 1 and commented original’s scripts were deleted from worldmap_init.fos; Random encounters of “beasts versus beasts” type were enabled, which were presented in the scripts, but were absent in the original. Added some new kinds of non-unique random encounters. Now, if player uses to kill NPC’s of certain group or organizations on random encounters, then they become aggressive. Vault City guard’s automatic search is deactivated. Now you need to activate the dialogue to pass through. Fixes in English dialogues versions. Maps fixes. Rev.119 http://www2.xp-dev.com/sc/change/94227/119 Fixed lots of little mistakes in dialogues; Fixed bugs in some Den and Klamath quests; Maps fixes; Duplicate dialogues with different names were deleted. Rev.118 http://www2.xp-dev.com/sc/change/94227/118 Fixed modificator's argument from Parent-0-7 to Parent0-7. Rev.117 http://www2.xp-dev.com/sc/change/94227/117 Added dialogues to Arroyo doctor and his team. Slight fixes (dialogues, maps). Rev.116 http://www2.xp-dev.com/sc/change/94227/116 Library for importing different 3d models was enabled – Assimp http://assimp.sourceforge.net/ Formats that are supported: http://assimp.sourceforge.net/main_features_formats.html Built-in one is still used for X format, for other ones – this library. If you don’t need the library, you can delete it (file Assimp32.dll), client and mapper are able to work without it. Updated mechanism of linking models and animations, now you can link any animation to any skeleton from any file. fo3d format changes: Modificator ModelAnimation was deleted. Modificators Anim, RenderFrame, RenderFrames were expanded – now file name which consists needed animation is placed before the animation’s name (if you state “ModelFile”, then search is performed in the file of loaded model)/ Specification of indicating parent texture (Texture X Parent) was expanded. Now you can additionally state the mesh number and its part, from which the texture is taken - Texture X ParentY-Z, where X is the texture’s number, Y is mesh number, Z is mesh part number; parameters Y-Z are optional, you may don’t use them at all or you may use them partly (Parent, Parent0, Parent-5). Fixed bug with incorrect script processing when operating with Critter::ShowScreen. Fixed bug with incorrect operating and crashing when using Log function with some special symbols. Added Combat Armor 3d model (by Gray). Rev.115 http://www2.xp-dev.com/sc/change/94227/115 Added special encounter "Warehouse of lost doughnuts" (author - Ponchik). Scripts for some original special encounters (author - Cracker). Remade some prototypes. Windows without glasses in Vault's walls can be shooted through now. Slight fixes. Rev.114 http://www2.xp-dev.com/sc/change/94227/114 Maps for quests from the 113 revision. Rev.113 http://www2.xp-dev.com/sc/change/94227/113 Klamath: quests - "Worker searching", "Husband's alert", "Brahmins vaccination" (author - Ponchik). Slight fixes. Rev.112 http://www2.xp-dev.com/sc/change/94227/112 Finished appearance of random encounter "Ocean Trader". Slight maps, dialogues and graphics fixes. Added buttons for BarterGround, GECK town, Warehouse and Hell for the global map (author - Ponchik). Slight fixes. Rev.111 http://www2.xp-dev.com/sc/change/94227/111 Added additional mechanism for data files loading (dat, zip). It is necessary for loading data files loading before scripts initializing and processing start() function as some date is needed to be used before this (effects, prints and some other resourses). For adding files to loading – create DataFiles.cfg file in which you should list all necessary file names. The program searches for the content from the last to the first data file. This mechanism uses server, client, mapper. If list isn’t found then no alerts will be displayed. If one of the files from the list can’t be found or load error appears, then alert will be shown. Option PatchDatPath was deleted, loading of this file is moved to DataFiles.cfg. Rev.110 http://www2.xp-dev.com/sc/change/94227/110 Fixed model's borders calculating which caused nick or text shift above critter's head. Rev.109 http://www2.xp-dev.com/sc/change/94227/109 Fixed skin setting-up when registration 3d character. Fixed order of loaded packs (dat, zip) scanning while searching and parsing ini files. Addition to 106 revision – for stating specific keys for certain resolutions now are used not separate files with different names, but marks in the main file. At the start of the string write “resolution”, than min. width and height for starting using these options. By default these values are equal to zero. For example: "resolution 1024 768 key = value..." It means, that “key = value ...(and so on till the next keyword ”resolution”)” will be included in the final ini. Found data will be inserted in the main file as screen width grows. Rev.108 http://www2.xp-dev.com/sc/change/94227/108 Actual cash files. Rev.107 http://www2.xp-dev.com/sc/change/94227/107 SDK is switched to 3d players mode. Normal version will be restored after finishing mechanism debugging process. For switching off 3d players models – comment the next strings in Server\scripts\_defines.fos #define PLAYERS_3D // Enable 3d players #define PLAYERS_3D_NO_HEAD // No head slot #define PLAYERS_3D_VAULT_SUITE // Vault suite by default, not naked 3d updates: Fixed and reduced the size of attributes and weapons. Added missing attributes of opened pipboy. In the left hand now is displayed the item, which player has in the second slot. Armor’s models are divided between the current armor items in the such way, that gamer could see the difference. For example combat armor consists of power armor and the helmet, robes are replaced by jail suit and etc. Fixed animation playing during creating the new character in single mode. Added skin change processing in start intro and after Kitty’s haircut. Added skeleton’s skins. Added sound for men and women. Fixed sound name for critters parameter’s loading (CritterTypes.cfg, SoundName). Now characters walk slowly with double click if alwaysrun option is turned on. Rev.106 http://www2.xp-dev.com/sc/change/94227/106 Added ability to make 3d characters available to play for. To enable it (it is disabled as default) - comment certain strings in _defines.fos // #define PLAYERS_3D // Enable 3d players // #define PLAYERS_3D_NO_HEAD // No head slot // #define PLAYERS_3D_VAULT_SUITE // Vault suite by default, not naked Updated mechanism of working with ini files. Now, when searching for the keys, excess spaces and tabulations are skipped (now you can type “ key = value ”, previously was correct only variant “key=value”) Added function bool AppendIfaceIni(string& iniName), which enables additional ini files. If the name includes slashes, than the search is being performed from data root, if not - than from folder data/art/interface/. default.ini is added automatically by the engine, others you can enable in start() client function. Loading is performed sequentially from default.ini to ones enabled by user by turn. Every packed file is checked by the turn of loading, then in the folder. Global variable string __UserInterface was deleted. Fixed bug with incorrect parsing of animation indexes in fo3d file. Fixed bug with incorrect position of the egg of transparence in zoom mode. For better readability the next scripts were formatted: start_server_client.fos client_main.fos In the future this practice will be continued. Rev.105 http://www2.xp-dev.com/sc/change/94227/105 Documentation update - slight fixes. Rev.104 http://www2.xp-dev.com/sc/change/94227/104 Added structure of script array (ScriptArray) to native scripts. Added ability to client's native scripts of calling hex data - Field. Data is stored in Field* GameOptions::ClientMap, uint GameOptions::ClientMapWidth/ClientMapHeight. If map is loaded, than ClientMap != NULL, hex calling - ClientMap[hexY * ClientMapWidth + hexX]. Rev.103 http://www2.xp-dev.com/sc/change/94227/103 Added always run option - can be enabled in client's config file “AlwaysRun”. Disabled as default. Added global variables for AlwaysRun regulating: bool __AlwaysRun (as default - false) - enabling AlwaysRun ability; uint __AlwaysRunMoveDist (as default = 1) - run with click, if distance is equal or more than the value; uint __AlwaysRunUseDist (as default = 5) - run with using smth/dialogue/etc, if distance is equal or more than the value. TLA's mechanics is equal to original - always run with click, always run with using if distance is more than 4 hexes. Added parameter uint Critter::ItemTransferCount to native scripts. It stores the value of transferred items during the last transaction. Rev.102 http://www2.xp-dev.com/sc/change/94227/102 Optimized server operation (script calling) in one tread operation mode, performance increased up to 400%. Fixed bug with crash when calling Critter::Say* methods with parametr SAY_SAY_TITLE. Rev.101 http://www2.xp-dev.com/sc/change/94227/101 Changes in fo3d format, new specification was created - look this theme: http://www.fonline.ru/forum/showthread.php?t=19689 New format added new abilities of working with 3d objects - trasmission of texures, other paremeters, etc. Also added ability to render certain animation to sprites as for one frame, either for the whole animation. But the bug with cutting off the shade situated below the lowest edge of model still presents. Updated old fo3d files, also VanBuren's critters and weapon models were added. Changed effects structure, added effect for normal mapping (3D_NormalMapping.fx). Added transfer of real numbers through scripts, float __EffectValue0..9. Fixed bugs with loading 3ds files - miss of meshes except the first; crash if texture coordinates are not presented. Fixed bug in Mapper with data copying when copy-pasting a large number of objects. Fixed text centering of hexes amount in zoom mode. Rev.100 http://www2.xp-dev.com/sc/change/94227/100 Documentation update. Rev.99 http://www2.xp-dev.com/sc/change/94227/99 Updated documentation file, which was missed in the previous revision. Rev.98 http://www2.xp-dev.com/sc/change/94227/98 Added resourse gathering system; Documentation updating. Rev.97 http://www2.xp-dev.com/sc/change/94227/97 Fixes of "Night is tender" quest, now healing must work properly. Added preview from global map for GECK location. Rev.96 http://www2.xp-dev.com/sc/change/94227/96 Gecks counting on the location now affects its auto moving away and visibility separately; Parameter geck_enabled (Map::GeckEnabled) renamed to geck_visible (Map::GeckVisible). Rev.95 http://www2.xp-dev.com/sc/change/94227/95 Added global server function void SetChosenSendParameter(int index, bool enabled) which can denie transmitting parameters to client. Transmitting of all parameters is enabled by default. Rev.94 http://www2.xp-dev.com/sc/change/94227/94 Fixes of sea encounter maps. Rev.93 http://www2.xp-dev.com/sc/change/94227/93 Added sea encounters; Added posibility of an encounter while travelling on air/water transport; Player always have possibility of cancellation water/air encounter and never gains experience for that; Bug fix in mapper with incorrect editing critter's parameters. Rev.92 http://www2.xp-dev.com/sc/change/94227/92 Fixed displaying rating in pipboy. In mapper additional indication of cut sprites was added to make lines, which are needed for correct interaction, visible. Rev.91 http://www2.xp-dev.com/sc/change/94227/91 Added traffic encryption between server and client. Rev.90 http://www2.xp-dev.com/sc/change/94227/90 Fixed choosing automatically cut sprites in zoom mode. Rev.89 http://www2.xp-dev.com/sc/change/94227/89 Added parametr DrawOrderOffsetHexY for shifting order of drawing lower (Y axis). This is an analogue for recently deleted DrawPosOffsX. Fixed using car trunk. Different slight fixes. Rev.88 http://www2.xp-dev.com/sc/change/94227/88 Fixed exit from Redding; slight fixes. Rev.87 http://www2.xp-dev.com/sc/change/94227/87 Fix for weapon AP cost. Rev.86 http://www2.xp-dev.com/sc/change/94227/86 May be fixed bug with incorrect displaying of some tiles. Fixed bug with unworking elevators. Added restoration of effects when loosing a device (cause crashed e.g. with alt+tab) Rev.85 http://www2.xp-dev.com/sc/change/94227/85 Fixed bug with chat disappearing. Fixed AI bug when combat plans always finished with REASON_CANT_WALK. Rev.84 http://www2.xp-dev.com/sc/change/94227/84 Fix for DT params reading. Rev.83 http://www2.xp-dev.com/sc/change/94227/83 Safety checks for radio commands. Rev.82 http://www2.xp-dev.com/sc/change/94227/82 Fixes of some dialogues; translations of dialogues on Barterground; map fixes; fixes of encounter table; slight fixes. Rev.81 http://www2.xp-dev.com/sc/change/94227/81 Fixed another bug during moving on the global map. Fixed unplanned activating of b/w effect. Rev.80 http://www2.xp-dev.com/sc/change/94227/80 Fixed teleportation bug during moving on the global map. Rev.79 http://www2.xp-dev.com/sc/change/94227/79 Fixed bug with incorrect tear and wear and fuel consumption calculation during moving on the global map by car. Rev.78 http://www2.xp-dev.com/sc/change/94227/78 Fixed brightness output. Fixed outlining activation. Rev.77 http://www2.xp-dev.com/sc/change/94227/77 Added automatic sprite cutting. Main purpose – correct displaying of long walls. Parameter SpriteCut was added to prototypes and mapper (only for scenery) for modification. Cutting values: 0 – switched off, 1 – horizontal (X axis), 2 – vertical (Y axis). Wall blocks should be set manually , for that purpose six blocks with different corner types with visual indication were added. It is necessary for correct calculation of brightness and egg of transparence reaction. Numbers 6800..6805 at the end of Wall and Fast list. Fixed client instability after recent update. Primary indexes array for animations was expanded to the range ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789. For value changing use native means (structure CritterType in fonline.h). Support of effects (HLSL) loading with earlier version of compiler. Automatic attempt of compilation is performed after failure in compilation with the current library. Added data updating for client function GetIniStr in the start function (start) after each call of LoadDataFile. Mapper update: Fixed bug with error in loading tiles with extension not in lower case. Fixed algorithm of sprite displaying calculation (when big sprites were disappearing near the screen edge). Additional visual means for debugging: - Ctrl + Q: Corners type viewing; - Ctrl + W: Viewing the result of sprite cutting, linking them to hexes; - Ctrl + E: Viewing the sequence of sprites drawing. At the time of renewing NPC’s bag, only items which are not in inventory are repaired and reloaded. Added ability to set sprite shift in screen coordinates to prototypes. Fixed bug with double notification of quest state change. Rev.76 http://www2.xp-dev.com/sc/change/94227/76 Added quest “Night is tender” Rev.75 http://www2.xp-dev.com/sc/change/94227/75 Tables for sea encounters, slight fixes. Rev.74 http://www2.xp-dev.com/sc/change/94227/74 Source documentation. Rev.73 http://www2.xp-dev.com/sc/change/94227/73 SPECIAL calculating is moved to native scripts - fonline_tla.dll for server and fonline_tla_client.dll for client (must be situated in data\scripts). The other parameters which are used in the engine are needed generally for drawing GUI, but soon they’ll be moved to scripts too. Native scripts files are moved from data folder to scripts. Added bat-file make_tla.bat for their compilation (installation of MSVS8 is necessary). For example of use new methods for critter classes are added (IsInjured, IsDmgArm...), items (IsHtHAttack, IsGunAttack...) with pragma bindfunc. Example of linking global varieties of standard and native scripts is added (__HitAimEyes, __HitAimHead..., these global varieties are moved to scripts). Callback functions are added (to GameOptions) for item usage cost determination - GetUseApCost. For attack max range determination - - GetAttackDistantion. It further such functions will force out usage of critter parameters in the engine. These functions are binded at the stage of connecting of library to the engine (DllMainEx). For operating with the engine added the next functions (to GameOptions): CritterChangeParameter – for correct change of critter parameter, this function should be called firstly, then you can change the value. CritterTypes – index of CritterType structures where data from CritterTypes.cfg is stored. Added method to client’s critters for detection whether now is time of its move in the turn-based mode bool CritterCl::IsTurnBasedTurn() const Some logics of operating with turn-based mode is moved to the scripts - turn_based_process main.fos. Some recommended specifications for the reserved functions are changed - templates.fos. Min. time of dialogue or barter with NPC now is regulated by the global varieties __DlgTalkMinTime (now default 100 seconds) и __DlgBarterMinTime (now default 50 seconds). Range for all prototypes (maps, locations, items) is expanded to 30000. Fixed bug with incorrect drawing of minimap in the pipboy. Fixed bug with incorrect calculating of healing rate while registration. Fixes of Zerg’s special encounter. Rev.72 http://www2.xp-dev.com/sc/change/94227/72 Data library for script compilation (updated on 27 October) Rev.71 http://www2.xp-dev.com/sc/change/94227/71 Added Zerg special encounter. Fixed bug with incorrect names in Fixboy. Added function LoadDataFile to server scripts, analogue of client/mapper. Fixed mistiming of player movement on global map. Deleted function Critter::SendQuestVar, now alert about changing of local variable is automatic. Changed function specification void ShowScreen(int screenType, uint param, string& funcName) to void ShowScreen(int screenType, uint param, string@+ funcName), now can transmit both empty string or null. Rev.70 http://www2.xp-dev.com/sc/change/94227/70 Documentation is updated. Deleted incorrect splash-picture. Added urgent files for scripts autoaddition in Notepad++. Rev.69 http://www2.xp-dev.com/sc/change/94227/69 Added ability to use your own shaders for game graphics drawing. High Level Shader Language is used for this. Effects folder is situated in data\effects. After the first compilation they are cashed in the folder data\cache (in futher other different data will be cashed there). You can read specifications on the game engine effects in data\effects\ReadMe.txt. Added ability to link any effect to sprite or model in .fofrm and .fo3d (“effect=effect_name.fx”). For default effect changing, function void SetEffect(int effectType, int effectSubtype, string@+ effectName) was implemented into the client scripts. int effectType, effectSubtype – effect types look in _client_defines.fos (Subtype for fonts used font type); string@+ effectName – the name of the effect file (with extension) is in the folder data\effects. Added changing of detailization of game objects for demonstration. For activation press Alt+W, for return press Alt+Q. Added client function for map redrawing void RefreshMap(bool onlyTiles, bool onlyRoof, bool onlyLight) if all three parameters are false, than everything will be redrawed. Also these three parameters are incompatible. Fixed bug in mapper with impossibility of viewing 3d critters in prototypes table. At present time they can’t be ranged. Added ability to play sounds/music from different folders. void RefreshMap(bool onlyTiles, bool onlyRoof, bool onlyLight) If there isn’t slashes (‘/’,‘\’) in path name than search is performed in the folder sfx/music. If there are slashes, than in the root (“data/mysounds/mysound.ogg”). Rev.68 http://www2.xp-dev.com/sc/change/94227/68 Fixed bug in the ObjectEditor when damage type is saved incorrectly. Rev.67 http://www2.xp-dev.com/sc/change/94227/67 Fixed crashing when calling CritterCl::[Param/Stat/Perk/etc]Base in client scripts; Fixed error with recording Anydata of zero length (by Atom). Rev.66 http://www2.xp-dev.com/sc/change/94227/66 Fixed incorrect weapon prototype; errors in checking for special encounters; added decraft of the sand sack to fixboy; other little fixes. Rev.65 http://www2.xp-dev.com/sc/change/94227/65 Redding: finished map according to the last concept; - Garbage was returned to static locations; - Ammo craft on benches (beta-version); - Destruction of the sack using skill repair now gives use empty sack. - Entering Den message was moved to texts from script. Rev.64 http://www2.xp-dev.com/sc/change/94227/64 AngelScript updated to 732 revision. Added new methods for arrays: void T[]::insertAt(uint, const T&) – element inserting in specified position in the array; void T[]::removeAt(uint) – deleting the element by index; void T[]::insertFirst(const T&) – element inserting to the beginning of the array; void T[]::removeFirst() – deleting the first element; void T[]::insertLast(const T&) – element inserting to the end of the array; void T[]::removeLast() – deleting the last element; void T[]::grow(uint) – add elements (the sames as a.resize(length()+X)); void T[]::reduce(uint) – delete elements (the same as a.resize(length()-X)); T& T[]::first() – call of the first element of the array (the same as a[0]); T& T[]::last() – call of the last element of the array (the same as a[a.length()-1]). Also deleted all functions ArrayPushBack as the built-in array functional was expanded. All the scripts were fixed accordingly. Rev.63 http://www2.xp-dev.com/sc/change/94227/63 Added ability to start the server as a service. For registration/start use key “-service” (shortcut FOServerService.exe.lnk). For deleting use keys “-service -delete” (shortcut FOServerServiceDelete.exe.lnk). Added ability to log using function OutputDebugString. The log can be caught (even remotely) using program DebugView http://technet.microsoft.com/en-us/sysinternals/bb896647.aspx For switching it on in server and client configs option LoggingDebugOutput is added. Server/client/mapper will work normally now with incorrect active folders. At start you set the current folder of executable. Fixed bug with absence of replacement “x” by “ч” in built-in punto switcher. Fixed crash in turn based mode and incorrect work of Map::GetCritter(uint critterId). Rev.62 http://www2.xp-dev.com/sc/change/94227/62 Fixed bug with updating vehicle data on the global map. Fixed bug with system hanging while looking items quantity in game info. Fixed bug with the incorrect login/disconnect. Fixed bug with incorrect creating non-stacking items on the map in the number of >1. Fixed bug with incorrect critters gathering when path tracing (by Atom). CRITTER_EVENT_TALK now performed before checking NPC for settings which could restrict speaking with it. Added new mechanism for script garbage gathering (by Atom). For config file simplification, the next options were removed: ASGarbageTime, VarsGarbageTime. Deleted transfer of a group of critters into global map processing global_process, CRITTER_EVENT_GLOBAL_PROCESS. Also instead of transferring a group into global map processing global_invite, CRITTER_EVENT_GLOBAL_INVITE, now only the leader is transferred. Instead of picking group use Critter@[]@ Critter::GetGlobalGroup(). Because of that, specification methods were changed: bool Critter::EventGlobalProcess(int type, Critter@[]& group, ...) bool Critter::EventGlobalInvite(Critter@[]& group, ...) for bool Critter::EventGlobalProcess(int type, Critter& cr, ...) bool Critter::EventGlobalInvite(Critter& leader, ...) Reserved functions of critter event CRITTER_EVENT_GLOBAL_PROCESS, CRITTER_EVENT_GLOBAL_INVITE bool _FuncName(Critter& cr, int type, Critter@[]& group, ...) bool _FuncName(Critter& leader, Critter@[]& group, ...) for bool _FuncName(Critter& cr, int type, ...) bool _FuncName(Critter& leader, ...) Fixed bug with incorrect cooldown for hijacking, now it is equal for a normal lock. Added checking for unopenable door to the lock break script. Rev.61 http://www2.xp-dev.com/sc/change/94227/61 Fixed bug with incorrect reappraisal of item flags in Mapper. Fixed bug when player isn't notified about moved item. Rev.60 http://www2.xp-dev.com/sc/change/94227/60 Fixed bug with incorrect displaying of the rain on roofs. Rev.59 http://www2.xp-dev.com/sc/change/94227/59 Mapper's fix for correct operating with new folder and print's names. Rev.58 http://www2.xp-dev.com/sc/change/94227/58 For editing use program Bitmap Font Generator v1.12. http://www.angelcode.com/products/bmfont/ Print should have the next attributes - OEM RUSSIAN, Padding 1 (in all directions), Binary, all symbols should be placed on the one texture. All prints are moved in the separate folder “Client\data\fonts\”. For the example print FONT_COURIER_NEW_SMALL is added. Look _client_defines.fos, client_main.fos, CourierNewSmall.bmfc, CourierNewSmall.fnt, CourierNewSmall_0.png. Added function in client’s scripts of activating the clock which shows you the time signal comes to server and returns (ping). You can use it for restriction of input while waiting for server’s answer. Fixed crushing when looking players statistics on server. Fixed crushing of Dialogue Editor (by Atom). Rev.57 http://www2.xp-dev.com/sc/change/94227/57 Expanded mechanism of operating with ingame radio. Added flag ITEM_RADIO for radio. (in _defines.fos). Radio messages are now also sent to radios which are on the ground . For their identification engine sends them with color 0xFFFFFFFE (in map_message in client_main.fos). Realization is in script radio.fos (interface, mechanics), call from main.fos. Interface data is taken from default.ini (Radio*). You can edit it with using item or using science skill on it. Radio data is situated in general fields of several item types. That’s why it isn’t a good idea to use this flag with Doors, Keys, Cars, Weapons, Armors, Holodiscs. Transmitting and receiving functions are separated. For managing the next flags and range types are used (_defines.fos): Restriction of transmitting/receiving is stored in Item/ItemCl::RadioFlags, used by the engine: RADIO_DISABLE_SEND, RADIO_DISABLE_RECV. Restriction of switching radio state in в Item/ItemCl::RadioFlags: RADIO_DISABLE_SHIFT_SEND, RADIO_DISABLE_SHIFT_RECV - restriction of switching transmit/receive; RADIO_DISABLE_SHIFT_BC_SEND, RADIO_DISABLE_SHIFT_BC_RECV - restriction of changing distance range; RADIO_DISABLE_SHIFT_CHANNEL – restriction of channel switching. Range types are stored in Item/ItemCl::RadioBroadcastSend/RadioBroadcastRecv, are used by the engine: RADIO_BROADCAST_WORLD – works all over the world; RADIO_BROADCAST_MAP – works within the limits of the current map; RADIO_BROADCAST_LOCATION - works within the limits of the current location; RADIO_BROADCAST_ZONE(x) - works within the limits of “x” zones on the global map; RADIO_BROADCAST_FORCE_ALL – works everywhere regardless of the adjustments of transmitting or receiving radio/ Added support of these flags to the object editor (both engine and script ones). Added scripts uint16 ProtoItem::RadioChannel, uint16 ProtoItem::RadioFlags, uint8 ProtoItem::RadioBroadcastSend, uint8 ProtoItem::RadioBroadcastRecv. For holodisc marking added flag ITEM_HOLODISK (in _defines.fos). Holodisc data is situated in general fields of several item types. That’s why it isn’t a good idea to use this flag with Doors, Keys, Cars, Weapons, Armors, Holodiscs. Added support of this flag in object editor. Added script uint ProtoItem::HolodiskNum. Added ability to use built-in cartridge indicator for other purposes. Added the next parameters: uint8 ProtoItem::IndicatorStart – initial value, - Item/ItemCl::Indicator; uint8 ProtoItem::IndicatorMax – maximum available value (for correct calculation of the strip position); uint8 Item/ItemCl::Indicator – current value. Mechanism is considered activated if maximum value in the prototype isn’t equal to zero. Added support of editing of initial and maximum values in the object editor. Method Item::GetMapPosition for the items which are in the global map returns their coordinates. Fixed bug with system hanging while looking online statistics. Added storing up to 20 ip addresses for one account (fonline.h). Item prototype’s fields, which are equal to zero, now cannot be saved. All prototypes are resaved. Continued working on multithreading in game logics. Added ignoring of non-initialized maps or locations while loading save (NPC’s would be moved to global map, items - deleted). Fixed bug in the dialogue on BiX location. Updated abilities of GUI scripting. In script _defines.fos notes “Used in engine” are replaced by “Hardcoded”; point is the same - to show that this data is used by engine also. Corrected some specifications in template.fos of reserved functions. Rev.56 http://www2.xp-dev.com/sc/change/94227/56 Changes in craft: some new recipe's (new weapon, etc.), added workbenches in some town/military bases. Rev.55 http://www2.xp-dev.com/sc/change/94227/55 - Updated Redding maps; - Deleted unused graphics; - Added second entrance to NCR; - Some changes in NPC's inventories on encounters. Rev.54 http://www2.xp-dev.com/sc/change/94227/54 - Slight fixes in Hartman's and Shrim's dialogues (Vault City); - Fixed problem with immediate sending off caravans/patrols Ahe9mPDq; - Changed content of the quest variable for the quest "Third trial. Drill." - Restored functions for triggers t_DialogNpc and scenery s_TransitToMap. Rev.53 http://www2.xp-dev.com/sc/change/94227/53 Fixes of KotW location. Quest for oil can can be done by everybody in Arroyo now. Rev.52 http://www2.xp-dev.com/sc/change/94227/52 Fixes of Brok and Xander Church location (by VaultTec) Rev.51 http://www2.xp-dev.com/sc/change/94227/51 Fixed names loading (*Names.lst) with the dialogue editor. Changed extention of its config file. Rev.50 http://www2.xp-dev.com/sc/change/94227/50 Fixed bug with duplicating of time events. Rev.49 http://www2.xp-dev.com/sc/change/94227/49 Slight optimization of multi-threading. Rev.48 http://www2.xp-dev.com/sc/change/94227/48 Fixed error in loading of games variables values. Fixed loading of saves games in single player mode. Rev.47 http://www2.xp-dev.com/sc/change/94227/47 Time events changes. - function specification void EraseTimeEvent(uint num) changed to bool EraseTimeEvent(uint num) Return value shows whether deleting is done or the event isn't found. - Deleted the next functions: uint CreateTimeEvent(uint beginSecond, string& funcName, Critter& cr, bool save) uint CreateTimeEvent(uint beginSecond, string& funcName, Item& item, bool save) uint CreateTimeEvent(uint beginSecond, string& funcName, Critter@[]+ critters, Item[]@+ items, bool save) For migration just put the identificator to the critter or item. Added the next functions for operating with event's values: bool GetTimeEvent(uint num, uint& duration, uint[]@+ values) bool GetTimeEvent(uint num, uint& duration, int[]@+ values) bool SetTimeEvent(uint num, uint duration, uint[]@+ values) bool SetTimeEvent(uint num, uint duration, int[]@+ values) Parametr "duration" - time till the event is done in seconds. Return value means that operation is completed, error means that event wasn't found. These functions are thread-safe, 2 thread can't operate with the events simultaneously. Function GetTimeEvent blocks using (changing) of the event until the script is finished or until SetTimeEvent is called, which unblocks the event. GetTimeEvent writes value to the end of the array, SetTimeEvent rewrites it completely. When null is transmitted to values SetTimeEvent values are not changed. - Event function specification can be of two types now: uint e_FuncName(uint[]@ values) uint e_FuncName(int[]@ values) Fixed bug with crashing while loading 3ds file without texture coordinates. Rev.46 http://www2.xp-dev.com/sc/change/94227/46 Added next fuctional for operating with files (class "file"): - for data reading uint8 file::readUint8() uint16 file::readUint16() uint32 file::readUint32() uint64 file::readUint64() In the case of error or the end of file it returns 0. uint file::readData(uint count, uint8[]& data) If data == 0 then program read all data till the end of the file beginning from the current position. Read data is added to the end of the array. The return value shows the real amount of read bytes. - For data recording bool file::writeUint8(uint8 data) bool file::writeUint16(uint16 data) bool file::writeUint32(uint32 data) bool file::writeUint64(uint64 data) bool file::writeData(uint8[]& data, uint count) If count == 0 it records all data from an array. In the case of error it returns false. Fixed bug with incorrect output of zoom value on minimap. Rev.45 http://www2.xp-dev.com/sc/change/94227/45 Extended range of game variables: - local variable of location (LLVAR_); - local variable of map (LMVAR_); - local variable of item (LIVAR_). When using them in dialogue values are taken from: for location - current critter's location; for map - current critter's map; for item - current item in the main slot. For operating with scripts use function GetLocalVar with transmitting of needed operator. Server will delete unused variables of all types automatically. Deleted server function uint DeleteVars(uint id). Dialog editor was adapted to the last updates of game variables. Added ability to define named value (DefineNames.lst) as a value for conditions and results. Added missed translations. Translations of commit history you can find here: http://www.xp-dev.com/forum/topic/3220 Rev.44 http://www2.xp-dev.com/sc/change/94227/44 Updated format of time output in dialogue with repairer-npc; Added script for realization of npc-travellers on global map.(traveller.fos and Davine's script in sf_common.fos); Added npc-traveller explosives-seller Davine. Can be hired in GECK town; Added trade mode "cash only" MODE_BARTER_ONLY_CASH; Fixed bugs in maps structure on maps with holodiscs. Rev.43 http://www2.xp-dev.com/sc/change/94227/43 Added setting in config which defines whether to bind logic threads to the core or let OS do it. In default it is enabled (1) 1. If zero then operating system automatically manage threads between cores, else affinity thread per core LogicThreadSetAffinity=1 Continued work on multi-threading of game logics. Rev.42 http://www2.xp-dev.com/sc/change/94227/42 Fixed crashing under certain conditions; Fixed cycle counting per second. Rev.41 http://www2.xp-dev.com/sc/change/94227/41 Fixed bug connected with the last update. Rev.40 http://www2.xp-dev.com/sc/change/94227/40 Multi-threading of game logics is now supported. You can read about this in details on the forum; Fixed path of recording/reading ban files; Added seconds on the globalmap clock; Decreased permissible length of text listener of channels and maps from 5 to 2 symbols; Deleted global server function void DeleteNpcForce(Critter& npc); Changed specification of method from uint Location::GetMaps(Map@[]& maps) const to uint Location::GetMaps(Map@[]@+ maps) const Now you can know the amount of maps on the location without recording them into array; Added basic server command ~log (~37). It is intended for text listening of server log. Minimum access: administrator. For adding to text listening you should transmit arguement "+", for disconnecting "-"; Fixed basic creating locations command ~addloc (~16); Upgraded basic command of looking player's id using his name ~id (~4); Changed specifications of global functions void critter_attack(Critter& cr, Critter& target, ProtoItem& weapon, ProtoItem@ ammo, uint8 aim) -> void critter_attack(Critter& cr, Critter& target, ProtoItem& weapon, uint8 weaponMode, ProtoItem@ ammo) int to_hit(CritterCl& chosen, CritterCl& target, ProtoItem& weapon, int hitLocation) -> int to_hit(CritterCl& chosen, CritterCl& target, ProtoItem& weapon, uint8 weaponMode); Added variables for weapons which state their active mode const uint8 Item::Mode const uint8 ItemCl::Mode 4 high-order bits - sight (look Hit locations in _defines.fos), 4 low-order bits - mode (0 – primary, 1 – secondary, 2 – third); Added macroses for convenience _WeaponModeUse, _WeaponModeAim, _WeaponModeMake в _macros.fos; Added returnable value of the current mode in method GetSlotProto (urgent for weapons) ProtoItem@+ Critter/CritterCl::GetSlotProto(int slot, uint8& mode) const; Renamed parametr #define ST_RATE_ITEM (102) to #define ST_HANDS_ITEM_AND_MODE (102) value stored in it: XXXX00YY, where XXXX pid - unarmed blow, and YY - mode. Changed way of the dialogue redirecting. You should use returnable value of result function or say-mode instead of uint __ForceDialog; Added specifications of functions: uint r_FuncName(...), uint dlg_FuncName(...) which are detected by server automatically; Fixed bug with moving pushed players only in one direction; Object pointers (derivatives arrays or class members)Location, Map, Critter, Item, GameVar can't be saved in global varities now. For scripts migration save their identificators (Location::Id, Map::Id, Critter::Id, Item::Id), addresing to the objects with (GetLocation, GetMap, GetCritter, GetItem). Weapons prototypes don't save curret mode of fire (in connection with multi-threading). Changed specifications of class members ProtoItem const uint8 Weapon_Skill, const uint8 Weapon_DmgType, const uint8 Weapon_Anim2, const uint16 Weapon_DmgMin, const uint16 Weapon_DmgMax, const uint16 Weapon_MaxDist, const uint16 Weapon_Effect, const uint16 Weapon_Round, const uint8 Weapon_ApCost, const uint8 Weapon_SoundId, const bool Weapon_Remove, const bool Weapon_Aim, const uint8 Weapon_CurrentUse, void Weapon_SetUse(uint8 use) const to const uint16 Weapon_Skill_F, const uint16 Weapon_Skill_S, const uint16 Weapon_Skill_T, const uint16 Weapon_DmgType_F, const uint16 Weapon_DmgType_S, const uint16 Weapon_DmgType_T, const uint16 Weapon_Anim2_F, const uint16 Weapon_Anim2_S, const uint16 Weapon_Anim2_T, const uint16 Weapon_DmgMin_F, const uint16 Weapon_DmgMin_S, const uint16 Weapon_DmgMin_T, const uint16 Weapon_DmgMax_F, const uint16 Weapon_DmgMax_S, const uint16 Weapon_DmgMax_T, const uint16 Weapon_MaxDist_F, const uint16 Weapon_MaxDist_S, const uint16 Weapon_MaxDist_T, const uint16 Weapon_Effect_F, const uint16 Weapon_Effect_S, const uint16 Weapon_Effect_T, const uint16 Weapon_Round_F, const uint16 Weapon_Round_S, const uint16 Weapon_Round_T, const uint16 Weapon_ApCost_F, const uint16 Weapon_ApCost_S, const uint16 Weapon_ApCost_T, const uint8 Weapon_SoundId_F, const uint8 Weapon_SoundId_S, const uint8 Weapon_SoundId_T, const bool Weapon_Remove_F, const bool Weapon_Remove_S, const bool Weapon_Remove_T, const bool Weapon_Aim_F, const bool Weapon_Aim_S, const bool Weapon_Aim_T Added special macros for convenience (Weapon in _macros.fos) _WeaponIsPrimaryAviable, _WeaponIsSecondaryAviable, _WeaponIsThirdAviable, _WeaponSkill, _WeaponDmgType, _WeaponAnim2, _WeaponDmgMin, _WeaponDmgMax, _WeaponMaxDist, _WeaponEffect, _WeaponRound, _WeaponApCost, _WeaponSoundId, _WeaponRemove, _WeaponAim, _WeaponModeUse, _WeaponModeAim, _WeaponModeMake Mapper updates: string@ MapperObject::PicMap/PicInv now return prototype's picturename if other isn't set up; Added const uint16 MapperMap::Width, const uint16 MapperMap::Height for storing current map sizes; Fixed function GetMapFileNames(...). Rev.39 http://www2.xp-dev.com/sc/change/94227/39 Slight fixes of quests in Den, Klamath Improved closed location in Redding Rev.38 http://www2.xp-dev.com/sc/change/94227/38 Slight fixes of quests from string "Guard"; Added services for guardsmen: doc. Troy can heal player; give stimpacks; Valery repairs items; Added universal repairing script for npc (repairer.fos). E.g. in the dialogue vc_valery.foldg 3 new special encounters with holodiscs; Several deleted functions from stdlib are returned. Rev.37 http://www2.xp-dev.com/sc/change/94227/37 Fix of calculating amount of dead NPC on location when necessity of attack is being determinated. Fix of amount loss allies counter when finishing the quest. Output of messages to log is disabled in quest “The drill”. Fix of limit of times amount quest “Dangerous hunt” can be done. Descriptions of deleted maps were returned, which made server restart impossible without saves clearing. Rev.36 http://www2.xp-dev.com/sc/change/94227/36 Fix of Hartman’s dialog. The wrong requirement was deleted. Rev.35 http://www2.xp-dev.com/sc/change/94227/35 New quests from string “Guard” in Vaultcity - Vaultcity guard. Third trial. Drill. - Easy walk. - Go there, don’t know where. - Dangerous hunt. - Diplomatic courier. Fix of caravan’s and patrol’s departure time. Relative departure time was substituted for absolute. Added ability of caravan’s instant departure from the dialog. Fix of items that were generated in encounters 0 in number. (It was impossible to throw out them) Fix of quest “Hub bibliography”. Player need 7 books to gain reputation instead of 6. Rev.34 http://www2.xp-dev.com/sc/change/94227/34 - Maps fixes - Fixed reaction of BG guards on explosives activation Rev.33 http://www2.xp-dev.com/sc/change/94227/33 - Graphics fixes - Non-used files were deleted - Original map of BG was returned Rev.32 http://www2.xp-dev.com/sc/change/94227/32 Private car parking in geck town is disabled till the problem with car boot is solved. Rev.31 http://www2.xp-dev.com/sc/change/94227/31 Added first quests of string “Guardsman”, VaultCity. (Clearing of server saves is needed) Added template for making quests-combats with npc. (fighter_quest.fos, e.g. “Guard. First trial.”) Added ability to take quest “Hub bibliography” again if player failed to finish it at previous time. Fixed incorrect condition in Dappo’s dialogue in quest “Lot of defective rifles”. Added verification of addressee in “Postman” quest, now player can’t bring letter to any npc of type stated in the letter. Rev.30 http://www2.xp-dev.com/sc/change/94227/30 Deleted not used MSG files - FOSCRIPT.MSG. Rev.29 http://www2.xp-dev.com/sc/change/94227/29 Updates of way of making records into log. Added ability to look the name of the thread which made a record. Option in config – LoggingThread. You can also turn on output in the server application using “Logging with thread”. Changed format of time output. Now it is not “time in ms”, but “hours:minutes:seconds:milliseconds”. Rev.28 http://www2.xp-dev.com/sc/change/94227/28 Fix and formatting. Rev.27 http://www2.xp-dev.com/sc/change/94227/27 Fixed mistakes in calculating karma in quest "Returning of the fugitive". Rev.26 http://www2.xp-dev.com/sc/change/94227/26 Changes on Church of Brok and Xander location: - fixed Preacher, Scientist, repairer Alechandro, Cook, Mickey dialogs; - quests work correctly now; - repairer Alechandro identifies items correctly; - ability to record the information about Church was added (after completing Preacher's quest). Rev.25 http://www2.xp-dev.com/sc/change/94227/25 Activating time of dynamite was fixed. Rev.24 http://www2.xp-dev.com/sc/change/94227/24 New algorithm of generating of pseudorandom variables was added (Mersenne twister). Previously was standart C algorythm srand/rand. Rev.23 http://www2.xp-dev.com/sc/change/94227/23 Energy barrier on the entrance of GECK town was improved. Rev.22 http://www2.xp-dev.com/sc/change/94227/22 Fixed client crashing on start. For preventing this bug in future the control system of versions of cashed scripts in the client has been added. Rev.21 http://www2.xp-dev.com/sc/change/94227/21 Fixed problem when it was impossible to add players to GECK town after removing them with option "Clear list". Rev.20 http://www2.xp-dev.com/sc/change/94227/20 Fixed cooldown of the Postman quest. Rev.19 http://www2.xp-dev.com/sc/change/94227/19 Wrongly deleted dialogs are returned. Rev.18 http://www2.xp-dev.com/sc/change/94227/18 Fixes Deleted not used files. Fixed errors when player removes child killer karma additional times. Fixed error with incorrect name of script of map_v15_village map. Added output of message of increasing trade skill when finishing “Farm vermins” quest to the log. Weakened the giant wasp in the quest in Modoc. Rev.17 http://www2.xp-dev.com/sc/change/94227/17 AngelScript was updated to rev.684, v. 2.19.2 Added global variables to the client: bool __ShowTile, __ShowRoof, __ShowItem, __ShowScen, __ShowWall, __ShowCrit, __ShowFast, __ShowPlayerNames, __ShowNpcNames, __ShowCritId. Deleted limit of min. time of using Map::SetLoopTime (it was 1 second). Fixed registration of the global variables of string type (pragma globalvar). Fixed using reserved global variables string type. Added global variables to mapper: string __ClientPath, __ServerPath. Deleted constant modificators in client from string CritterlCl::Name, CritterlCl::Lexems. Added variable CritterlCl::NameOnHead, which if is not empty, outputted above critter’s head. Rev.16 http://www2.xp-dev.com/sc/change/94227/16 Fixed reclearing of child killer status. Rev.15 http://www2.xp-dev.com/sc/change/94227/15 Fixes: - Fixed names of Giant Wasps and bugs in kills statistic; - Reduced requirements of amount of killed mobs and intelligence in Broken Hills quests (bh_marcus.fodlg, bh_super.fodlg); - Reduced requirement of intelligence for “Fresh blood” quest (vc_doctor_troy.foldg); - Fixed possibility of gaining experience multiple times in “Cabbage” quest in Modoc (mod_farmer_q.fodlg); - Player receives reputation in NCR for quest “True cowboy” even if only one Brahmin is brought (ncr_felix.fodlg); - Michael’s miniquest in NCR can be done by every player only once (ncr_michael.fodlg); - Added requirement of 16 level for “buggy” quest (ncr_ratch.fodlg); - Fixed amount of gaining experience when player rejects gratuity in “Postman” quest (q_mail_reciever.fodlg); - Fixed cooldown of “Postman” quest; - Cave mobs – spawn point near the exit grid was removed in the smallest cave; - Fixes of several dialogues in Vault City; - New quest – “Fugitive returning” – when finished, status “Child killer” is removed. Hubbologist in Redding bank offers this quest; - New quest “Farm vermines”. It is offered by Joe in Modoc (mod_joe.fodlg); - Fixed energy barrier in GECK town; - Added computer for breaking of energy barrier inside the town; - Added car lots for GECK town citizens (not more than 2); - Added ability of clearing of citizens list by town leader using the terminal. Rev.14 http://www2.xp-dev.com/sc/change/94227/14 Update for Notepad++ (Syntax_highlighting, autocomplete, function parameters hints) Rev.13 http://www2.xp-dev.com/sc/change/94227/13 First stable version.h3. Your title here...Rev.178 http://www2.xp-dev.com/sc/change/94227/178 Superfluous rifles on offer were fixed. Rev.177 http://www2.xp-dev.com/sc/change/94227/177 Game version increment. Rev.176 http://www2.xp-dev.com/sc/change/94227/176 Sequence of handlers calling was fixed MAP_EVENT_OUT_CRITTER, MAP_EVENT_IN_CRITTER now the first one is called initially, then the second On intro_init map static lighting was set. Group moving indication on the global map was fixed (previous update bug). Rev.175 http://www2.xp-dev.com/sc/change/94227/175 Console command ~globalmap was added. It moves player to global map. It works only on noPvP maps for players not in combat mode and with noPvP mode turned on. In caravans and travellers scripts functions of moving to final destination's map were updated. Rev.174 http://www2.xp-dev.com/sc/change/94227/174 Porting game to Linux was started. Also supporting of 64 bit platforms. Client’s native libraries are now transmitted automatically. They are stored in ‘Client/data/cache’. Folder with scripts ‘Client/data/scripts’ is not used anymore and was deleted. To the server’s folder library STLPort (http://www.stlport.org/) was added. Client’s libraries are now compiling with it’s help. It is connected with porting to other platforms. Additional methods of moving were added to critters in server scripts bool Critter::TransitToMap(uint mapId, uint16 hexX, uint16 hexY, uint8 dir, bool withGroup) bool Critter::TransitToMap(uint mapId, int entireNum, bool withGroup) bool withGroup – when moving from global map to local map, all the group will be moved. Regular TransitToMap (without bool withGroup) work as with withGroup == false. Previously they worked as как withGroup == true, what led to moving all the group when replicating, if dead critter was on the global map. 3d critters were switched off. For switching on see PLAYERS_3D in _defines.fos. Constants for operating with game constants were added(see 168 revision, http://www2.xp-dev.com/sc/change/94227/168). Specification for the reserved function Log in native scripts was changed. Now the first returned parameter is function’s name from which it was called. Rev.173 http://www2.xp-dev.com/sc/change/94227/173 Traders were added to Atoll and Redding. Barterground was moved to position 690:760 as it isn’t needed anymore in north-west region due to noPvP mode. Locations “BiX Church” and “Atom’s Church” were moved to special encounters class. Fixed rewards in some quests. Maps fixes. Biscuit on Modoc can be received only once now (as in Fallout 2). Rev.172 http://www2.xp-dev.com/sc/change/94227/172 noPvP mode was activated on some TLA maps. It will be used on the next TLA session. For switching it off on your server set global variable __NoPvpMaps=false; in script config.fos Ability of making a list of ignored players, it works similarly NameColorizing. It needs manual adding nickname of ignored player to IgnoreList.txt For refreshing the list of ignored players in game use console command ~ignorelist. Rev.171 http://www2.xp-dev.com/sc/change/94227/171 Derivative objects system for mapper was updated. When placing base object, all his derivatives are placed automatically. If one object from the group is being selected - all others are being selected too. If the prototype or position of the derivative object is changed, changes will be automatically applied by mapper or server when loading. For the example see cars, at the present time they have one derivative object – their trunk. Now when placing the car, it will be created automatically, also it will be moved with it and if base or derivative object is deleted, all the group will be deleted too. The system of moving selected objects in mapper was upgraded. Now in hexagonal system the selected objects will be moved without being tearing apart. Also the selected objects, when being moved, will stop at the map’s edge, so they won’t mix into a pile. The problem with detecting whether items in container belong to their inventory or container. Previously items were placing on the hex and if you place two containers on the same hex, all the items will stack in one container. Now it is fixed. Item::TrapValue initialization through mapper was fixed. If rewriting is performed on prototypes loading, alert is displayed. It was added for items and critters prototypes. In object’s structure in mapper was deleted field const bool Item_InContainer and added const uint UID, ContainerUID, ParentUID, ParentChildIndex Rev.170 http://www2.xp-dev.com/sc/change/94227/170 Now server doesn't block client's libraries while working. Previously you needed to stop the server to replace client's dll (Server/scripts/fonline_tla_client.dll). Rev.169 http://www2.xp-dev.com/sc/change/94227/169 Combined content of MASTER.DAT + CRITTER.DAT. Size - 201 MB! Rev.168 http://www2.xp-dev.com/sc/change/94227/168 Client and Mapper are no longer bounded with Fallout’s data files - MASTER.DAT and CRITTER.DAT. These files content is combined (excess data is deleted) and packed into fallout.dat (will be uploaded with the next update) and defined in DataFiles.cfg. Global variables string __MasterPath, __CritterPath were deleted. The configurator (FOConfig.exe) is updated accordingly fixes above. Critter’s lighting in the death moment and flat items lighting was fixed. To server/client/mapper scripts the next functions for operating with the constants (*Names.lst) were added: int GetConstantValue(int constCollection, string@+ name) – identifying constant’s value by the name; string@ GetConstantName(int constCollection, int value) - identifying constant’s name by the value; void AddConstant(int constCollection, string@+ name, int value) – adding separate constant to the collection; bool LoadConstants(int constCollection, string@+ fileName, int pathType) – loading/reloading the collection; int constCollection – collection’s number, see Constants collections in _defines.fos, also you can define your own collections; string@+ name – constant’s name; int value - constant’s value; string@+ fileName, int pathType – collection file’s name and folder path. Rev.167 http://www2.xp-dev.com/sc/change/94227/167 Bug with error of name/password in login menu if it exceeds 12 symbols was fixed. Screen centering on the player when loading map in right-angle geometry was fixed. Copying objects in Mapper from smaller map to the bigger one was fixed. Mapper hanging up when Sleep < 0 was fixed. Crashes when loading ART files were fixed. Principe of transparency defining with parameter ‘”t” was changed, now it isn’t equal to 255 – paletteIndex, but to max(R, G, B). Rev.166 http://www2.xp-dev.com/sc/change/94227/166 System of operating with items prototypes was updated (ProtoItem). Ability to add your own fields to proto class was added. New pragma ‘bindfield’ is used for this, e.g.: #pragma bindfield "const int ProtoItem::MyValue -> 400" it means creation of field MyValue of int type with offset 400 (considering thas int is 4 byte, it will occupy bytes 400, 401, 402, 403). Totally for user’s fields 500 bytes are available. Field is equal to zero as defaults, but it is possible to change the value by defining value (in the current case MyValue=111 or MyValue=SkillBigGuns) in proto file (.fopro), number (if it contains only numbers) or path to the file (it is identified by the presence of ‘/’ or ‘\’ symbols). For now fields which are not used by the engine are taken out to scripts, see _defines.fos Item prototypes fields. Changes in structure ProtoItem. All next methods are deleted uint8 GetType() const uint16 GetProtoId() const bool IsGrouped() const bool IsWeared() const bool Container_IsGroundLevel() const List of new fields which are registered in the engine (part of them is renamed, some were deleted) http://pastebin.com/8R4QkP3h The other fields are registered with #pragma bindfield in _defines.fos. Now all items can stack and wear out, for this Boolean fields are added to the prototypes bool ProtoItem::IsStackable bool ProtoItem::IsDeteriorable Item type ITEM_MISC_EX was deleted, it is combined with ITEM_MISC (miscex.fopro is deleted). Vehicles are taken out to separate type ITEM_CAR (car.fopro was added). Also now user can define any type numbers for the items. Former fields uint MiscEx_StartVal0..9 of the start values for Item::Val0..9 were moved to common area named StartValue0..9, and with these values Item::Val0..9 are initialized. Metod bool Item::IsCar() const was deleted, instead of it use GetType()==ITEM_CAR. The next methods are renamed bool Item::IsGrouped() const -> bool Item::IsStackable() const bool Item::IsWeared() const -> bool Item::IsDeteriorable() const The next fields are renamed uint16 Item/ItemCl::BrokenWear -> Item/ItemCl::Deterioration uint16 Item/ItemCl::CarDeteoration -> Item/ItemCl::CarDeterioration uint8 MapperObject::Item_DeteorationFlags -> uint8 MapperObject::Item_BrokenFlags uint8 MapperObject::Item_DeteorationCount -> uint8 MapperObject::Item_BrokenCount uint16 MapperObject::Item_DeteorationValue -> uint16 MapperObject::Item_Deterioration Mechanism of affiliated objects was moved for common use. Previously it was available only for vehicle’s trunk. One object can have up to five derivatives. Numbers of the derivative objects are defined in uint16 ProtoItem::ChildPid_0..4. By creation of base object, derivatives are created automatically. For now Mapper doesn’t create affiliated obkects automatically, but it will be fixed in further. For setting the place of situation, special field ChildLines_0..4 is used (former MiscEx.Car.Bag_0..1, see below by recording format). Also it is possible now to define automatic blocking for any objects, not only for vehicles – field BlockLines (former MiscEx.Car.Blockers). Recording format for Child/BlockLines – XYXYXY..., where X is direction number (0..5/7), Y is the amount of steps (1..9) in this direction (previously for vehicle’s trunk for another recording format - XXXX...). Maximum amount of steps for BlockLines – 50, for ChildLines – 6. For operating with derivative objects use methods Item@+ Item::GetChild(uint childIndex) const (бывшая Item@+ Item::CarGetBag(int numBag)) bool Map::CheckPlaceForItem(uint16 hexX, uint16 hexY, uint16 pid) const (bool Map::CheckPlaceForCar(uint16 hexX, uint16 hexY, uint16 pid) const) Fields renaming affected lots of scripts, be attentive. Old proto format is converted to the new one automatically, but Object Editor (ObjectEditor.exe) still operates only with old format. It will be fixed soon. To replication.fos and entires.fos scripts the influence of right-angled geometry was added. Script main_planes.fos is formatted as a separate module. All pragmas were move to the end of _defines.fos. Drop of FPS when switching on view/attack borders was fixed. Rev.165 http://www2.xp-dev.com/sc/change/94227/165 Fix for the ASCompiler. Rev.164 http://www2.xp-dev.com/sc/change/94227/164 Changed ASCompiler output format to “filename(linenumber) : message”. Such output is recognized by a number of IDEs and allow jumping to the code by a double-click on the output line. Rev.163 http://www2.xp-dev.com/sc/change/94227/163 Tabs management system was added to Mapper. Now one tab can have numerous subtabs. Tabs names and its filling is defined in mappers scripts. But some tabs already have initial filling. Item – items prototypes by defaults (items.lst); Tile – tiles by default, search is performed in ‘art/tiles/’; Crit – critters prototypes by defaults (critters.lst); Fast – displays often used objects, initial state is defined in scripts (InitializeTabs in mapper_main.fos); Ign – Ignore, shows ignored objects which are not shown on the map; Inv, Msg, Map – special tabs which have nothing to do with the mechanism, but it is possible to change its name throug TabSetName (see below). The tab can have subtabs only of one type – tiles, critters or items (displayed in priority order). For items and critters the subtab’s name is chosen by user, for the tiles it is performed automatically. The lowest subtab “all” contains all prototypes (or tiles) on a list above. For activation the menu of tab choosing – perform a double click on it. If positions are numerous then use mouse wheel for navigation (scroll speed: normal – 4, with pressed shift – 8, with pressed ctrl – 20, with pressed alt – 50). For tabs management use scripts, functions Tab* uint TabGetTileDirs(int tab, string@[]+ dirNames, bool[]+ includeSubdirs) uint TabGetItemPids(int tab, string@+ subTab, uint16[]@+ itemPids) uint TabGetCritterPids(int tab, string@+ subTab, uint16[]@+ critterPids) void TabSetTileDirs(int tab, string@[]+ dirNames, bool[]+ includeSubdirs) void TabSetItemPids(int tab, string@+ subTab, uint16[]@+ itemPids) void TabSetCritterPids(int tab, string@+ subTab, uint16[]@+ critterPids) void TabDelete(int tab) void TabSelect(int tab, string@+ subTab) void TabSetName(int tab, string@+ tabName) int tab – tab’s number (see Tabs in _mapper_defines.fos); string@[]@+ dirNames – folder’s names for tiles searching; bool[]@+ includeSubdirs – turn on search in subfolders; string@+ subTab – subtab’s name; uint16[]@+ itemPids – item’s prototype numbers array; uint16[]@+ critterPids - critters’s prototype numbers array; string@+ subName – tab’s name. Global variable was added bool __SplitTilesCollection = true It defines whether tiles should be divided into groups in the folders. The group is defined as a string in the file’s name before the first number (e.g. abc12.png - group abc), if the number is absent, then group is defined as '<other>'. In connection with these changes, the global functions are deleted uint GetFastPrototypes(uint16[]@+ pids) void SetFastPrototypes(uint16[]@+ pids) Other updates. Fixed incorrect work of server/client which caused some bugs. Global variable int __GeometryType was added to _defines.fos for the indication of chosen geometry. See constants in _defines.fos Geometry. Depending on its value, tab with Tactics and Arcanum is added. Ability to work with file names which include spaces is added. When loading ART files, it is possible to flip them vertical or horizontal. Parameters in the file name - ‘v’/‘V’ and ‘h’/‘H’. When loading SPR file, if you define in changing color parameter – layer’s number -1, then the modificator will be applied to all four layers. Rev.162 http://www2.xp-dev.com/sc/change/94227/162 Quest perks “Midnight Child”, “Nosderatu Blood” were added (Modoc, “Night’s tender”). Now new home position is set for NPC-travelers (Devin, Eli) when they enter new location. Female characters now can finish quest of removing childkiller status. Allies HP and resistances were increased in “Dangerous hunt” quest. Also a simple dialogue is added to them. The forged letter is now removed from the inventory when finishing quest “Forgery”. Edvin in Klamath tells with a popup phrase when starting gathering items. A delay was added to the prisoner giving the cues in “Ernst Telman” quest. Ability of intimidating the NPC visitor if it’s a woman was deleted in quest “Wrath”. Barcus now reacts with popup phrases to the futher meetings with the player who have done quest “Amnesty for Joshua”. Upon the receiving lieutenant rank of Vaultcity’s Guard, player is awarded with a black combat armor. In “Diplomatic Courier” quest time (24 hours) which Sheiman takes for the thoughts now is calculated correctly. Upon finishing this quest, player receives +1 reputation in NCR. Sell price of the buggy which player receives upon finishing the quest in NCR was set to zero. Dialogue launch when player uses an antidote in quest “Poisoned Regulator” in Redding was fixed. Players who gained Vaultcity citizenship now can trade with Randal with no restrictions. Reputation calculation in quests “Real Cowboy”, “Hub Bibliography” in NCR was fixed. If player refuses the reward in “Hub Bibliography” quest, he gains +2 reputation (was +1) when he delivers 5 books. Increasing raider’s resistances and skills every new attack on NCR was switched off. Ability of crafting and buying chitin armor was added. Giant beetles drop chitin. Items with ITEM_GAG flag deletion upon player’s death was fixed. Rev.161 http://www2.xp-dev.com/sc/change/94227/161 Ability to customize game geometry was added, either the support of isometric projection with quadrangles was. For customization use global variables bool __MapHexagonal – isometry type: true - hexagonal, false - quadrangular; int __MapHexWidth – hex width; int __MapHexHeight – hex height; int __MapHexLineHeight – hex line height; int __MapTileOffsX/Y – ground tiles offset; int __MapRoofOffsX/Y – roof tiles offset; int __MapRoofSkipSize – amount of hex per one roof tile (necessary for its correct hiding); float __MapCameraAngle – 3d model rendering angle; bool __MapSmoothPath – path smoothing when moving; string __MapDataPrefix – path and prefix for the geometry files. Operational sprites for geometry are situated in art/geometry/. Quadrangular isometry use 8 directions, hexagonal – 6. In script config.fos in function InitializeGeometry(), necessary adjustments for 3 games (Fallout1/2, Fallout Tactics and Arcanum) are added. This function can be called in server, client and mapper scripts, as all three of them need geometry information. Global variables uint __LookDir4, uint __LookSneakDir4 were added for 8-directional geometry. Fixed Tactics SPR files loading. Mode MODE_NO_TALK was added. It affects ability to talk and appearance of the icon in the context menu. Double click on hex, affecting avatar’s moving, was fixed. Creation of descriptions for critters prototypes (FODLG.MSG) with high identifiers was fixed. Image of elephant gun was added in 3d. Rev.160 http://www2.xp-dev.com/sc/change/94227/160 Fixed a bug with server and client communication. Fixed a bug with wrong sprites display. Rev.159 http://www2.xp-dev.com/sc/change/94227/159 Documentation's update, mistakes fixes. Rev.158 http://www2.xp-dev.com/sc/change/94227/158 Script start_server_client.fos was renamed to config.fos and now it isn't simply pasted into function start(), but presented as a separate module with function InitializeGame(). Macros for operating with time were moved from _macros.fos to separate module _time.fos. Slight fix of drugs.fos. Rev.157 http://www2.xp-dev.com/sc/change/94227/157 Errors messages in server log when operating with functions GetPlayerName/GetPlayerId were removed. Also GetPlayerName returns null now, if the player wasn't found. Bugs of reputation calculation were fixed. Rev.156 http://www2.xp-dev.com/sc/change/94227/156 Ability to affect the colors when loading Tactics sprites was added. To make color shift, define necessary values in file name’s parameters (“$”). Format: fileName$[index,r,g,b]animName.spr (can be any amount of shifts […]) where index – body part’s number (0 - miscellaneous, 1 - skin, 2 -hair, 3 - armor); r,g,b – color shift for the each component, can be negative Example: someSprite$[2,50,-30,-20]anim1.spr – load sprite someSprite.spr, with animation anim1 and hair’s color shift in RGB (50,-30,-20). Additional flags for operating with color’s shift were added for Tactics critters (_animation.fos, animation.fos). Use macros ANIM1_COLOR_SKIN(index), ANIM1_COLOR_HAIR(index), ANIM1_COLOR_ARMOR(index) for values defining. Index can take on value from 0 to 15, appropriate to it values of color shift look in array colorOffsets of animation.fos script. For ability testing you can use text function void ColorOffset(Critter& cr, int skin, int hair, int armor) in test.fos. Rev.155 Some native structures were fixed. Rev.154 http://www2.xp-dev.com/sc/change/94227/154 AngleScript is updated to revision 822. Ability of sorting is added to scripts arrays Ascending sort void array::sortAsc() void array::sortAsc(uint index, uint count) Descending sort void array::sortDesc() void array::sortDesc(uint index, uint count) For user’s classes sorting realize opCmp method http://www.angelcode.com/angelscript/sdk/docs/manual/doc_script_class_ops.html Vehicle animations on the global map and item’s animations in Mapper are fixed. Some points in operating with critter’s animations are fixed (animation.fos). Global variable __GmapActive is fixed. Global variable for setting min. offline time after that client will completely exit from the game was added. uint __MinimumOfflineTime = 180000; // 3 minutes Rev.153 http://www2.xp-dev.com/sc/change/94227/153 Additional constants for operating with Chosen's actions were updated (Get/SetChosenActions, for CHOSEN_USE_ITEM). Rev.152 http://www2.xp-dev.com/sc/change/94227/152 Additional constants for operating with Chosen's actions were added (Get/SetChosenActions). Rev.151 http://www2.xp-dev.com/sc/change/94227/151 Bugs with incorrect files's names path detecting were fixed. Rev.150 http://www2.xp-dev.com/sc/change/94227/150 3d models loading was fixed. 3d models rendering to sprites was fixed. Critters animations were fixed (death in 2d and 3d modes). Shift calculation for some models was fixed. SAY_DIALOG/SAY_APPEND mechanics was fixed. (by Atom) Server’s config loading in Mapper was fixed. (by Atom) File HashNames.lst was added to client. Names of files which contain parameters (‘$params’) should be entered in it. If you use such names in the prototypes, Mapper or scripts GetStrHash), then include this name to this list. Format of writing: [any number] [file’s name] [end of string] E.g. 0 art\scenery\BrazureFire$t.ART 0 art\scenery\BrazureFire$t3.ART In further it is possible to detect and transmit such names automatically, but for the present use this system. Roof disappearing if it is situated in odd hex in two axis. Rev.149 http://www2.xp-dev.com/sc/change/94227/149 Documentation was updated. Some fixes in Arroyo (Minoc’s quest about raiders). Usage mode was added for sledgehammer and supersledge (for resources mining). Guard lib was brought into common standard of scripts formatting. Rev.148 http://www2.xp-dev.com/sc/change/94227/148 Two reserved variables were added to HLSL effects float AnimPosProc – current animation’s per cent 0%..100%, [0,1); float AnimPosTime – current animation’s time in seconds. Client’s hanging under certain circumstances was fixed (e.g. receiving item’s data when player in process of moving between maps). Dump generation when closing server application without stopping was switched off. Generation of unnecessary messages to log in function animation_ animation.fos was fixed. Rev.147 http://www2.xp-dev.com/sc/change/94227/147 Parameters for critter’s movement controlling were added. Time for moving in milliseconds: #define ST_WALK_TIME (117) #define ST_RUN_TIME (118) Ability to move #define MODE_NO_WALK (539) #define MODE_NO_RUN (540) If these parameters are equal to zero, then data is taken from CritterTypes.cfg. Loading of some ART files was fixed (Arcanum). Ability of specifying special image processing was added. Palette elements will be transparent depending on its index in the palette (alpha = 255 – index). To chose this loading type - use symbol “t” (or “T”) in file name parameters. E.g. ‘filename$t.art’; also you can combine with palette, e.g. ‘filename$1t.art’. Ignoring of spec.symbol “/r” was additionally added for splitEx function. In functions void DrawSprite(... bool applyOffsets) if applyOffsets == true there were additionally added shifting of width/2 and height of the image. Unnecessary fo3d files were deleted. Palette influence for Arcanum critters was fixed. Rev.146 http://www2.xp-dev.com/sc/change/94227/146 One more fix of incorrect critter displaying. Rev.145 http://www2.xp-dev.com/sc/change/94227/145 Quest “Communicated” was added (Redding). Caravaneers phrases were fixed, now they tell correct departure dates. Quest “Honomer’s bodyguard” was added (San Francisco). Retina scanner in GECK town was fixed. Slight fixes of the hubbolog’s map in San Francisco. Special result function for skill rise calculation through a dialogue was added.(dialog@r_SkillUp) The script for quest locations creating was fixed (hostile_location_quest.fos), allies and enemies scripts now work correctly. Resetting of a quest variable when deleting the location was fixed. Script for realization a dialogue between several npc’s with popping up phrases was added. (npc_dialog.fos) Story line implementation was continued. Maps numeration in the location with mutants was fixed (quest string “Guardian”). Rev.144 http://www2.xp-dev.com/sc/change/94227/144 Critter’s hitpoints regeneration was moved to scripts, you can look realization in function critter_idle main.fos. Global function for critters sampling from the global map was added to server scripts. uint GetGlobalMapCritters(uint16 worldX, uint16 worldY, uint radius, int findType, Critter@[]@+ critters) Additionally to methods bool Map::GetNearEntireCoords(int& entire, uint16& hexX, uint16& hexY) const bool Map::GetEntireCoords(int entire, uint skip, uint16& hexX, uint16& hexY) const were added methods bool Map::GetNearEntireCoords(int& entire, uint16& hexX, uint16& hexY, uint8& dir) const bool Map::GetEntireCoords(int entire, uint skip, uint16& hexX, uint16& hexY, uint8& dir) const which return direction. Global variable which specifies if the password in the client’s login window should be hidden was added bool __HidePassword = true Incorrect critters creation in Mapper was fixed. Displaying of switching critter’s type 3d->2d on the client’s side was fixed. Rev.143 http://www2.xp-dev.com/sc/change/94227/143 Fixed critters loading in Mapper (141 revision's bug). Rev.142 http://www2.xp-dev.com/sc/change/94227/142 Fixed server loading (the previous revision bug). Rev.141 http://www2.xp-dev.com/sc/change/94227/141 Mechanism for identifying critter’s animation file name was added. Now you can operate with critter’s animations from Tactics and Arcanum without any conversions. All data files which you need for enabling one or another critters are cited in CritterTypes.cfg comments. The next critters were added to SDK: Humanoid, Behemoth, MTT, Pacification. They are repacked to the separate archive ftrobots.bos. But all available critters from Tactics and Arcanum are added to CritterTypes.cfg with correctly defined parameters for them (by Tabloid), so you can enable the needed data files and use the critters. All animations are transformed to the general appearance (ANIM2_2D*, ANIM2_3D* -> ANIM2*). The functional for operating with them is moved to scripts. In some places where these values are used, numeric literals are replaced by string constants, which description you can find in DefineNames.lst. Fixes were made in weapons prototypes (weapons.fopro) and fo3d templates for 3d critters from VanBuren (_VBHuman.fo3d, _VBMob.fo3d, _VBWeapon.fo3d). Now three sets of primary and secondary animations are used for critters, for three condition types – alive, knockout, dead const uint Critter/CritterCl::Anim1/2Life/Knockout/Dead (const uint Critter/CritterCl::Anim1/2 were deleted). These values are used for animations as default. Pay attention that Anim1 additionally is summed up with animation of the weapon in the active slot, bit-by-bit OR. It is necessary for assignation certain values on continuing basis (e.g. sitting, lying position). For changing these values the next method is used void Critter::SetAnims(int cond, uint anim1, uint anim2) int cond – defines the position to apply values to (COND_* in _defines.fos), if null it is applied to all three; uint anim1, anim2 – animation values. Deleted const uint8 Critter/CritterCl::CondExt Accordingly all COND_*_* for them are deleted. Now position is differentiated by the animations. In connection with it, the next methods specifications were changed void ToDead(uint anim2, Critter@+ killer) bool ToKnockout(uint anim2begin, uint anim2idle, uint anim2end, uint lostAp, uint16 knockHx, uint16 knockHy) void EventKnockout(uint anim2begin, uint anim2idle, uint anim2end, uint lostAp, uint knockDist) void EventSmthKnockout(Critter& fromCr, uint anim2begin, uint anim2idle, uint anim2end, uint lostAp, uint knockDist) uint anim2begin, anim2idle, anim2end – animations of the knockout begging, staying in it and coming to yourself. Standard macroses are defined for the transfer KNOCKOUT_ANIM2_DEFAULT, KNOCKOUT_ANIM2_STUNNED (in _animation.fos). Also Mapper operates now not with CondExt, but with Anim1/Anim2 for the current Cond. Global variables for client/mapper for defining combat mode animations were added uint __Anim2CombatBegin = ANIM2_BEGIN_COMBAT uint __Anim2CombatIdle = ANIM2_IDLE_COMBAT uint __Anim2CombatEnd = ANIM2_END_COMBAT The next reserved client/mapper functions were added (animation.fos): - string@ critter_animation(int animType, uint crType, uint anim1, uint anim2, uint& pass, uint& flags, int& ox, int& oy) Function which is called when loading necessary animation. Returned value - file’s path and name. int animType – critter’s animation type (new parameter which is set in CritterTypes.cfg); uint crType – critter’s type; uint anim1, anim2 – animation’s indexes; uint& pass – function call’s number, is changed by the user. If animation loading failed and this parameter was changed, then function will be recalled (in certain cases you should try to load different files for the one animation); uint& flags – flags, at the present moment two of them – to take the first or the last frame from the animation ( Anim loading flags in _animation.fos); int& ox, &oy – shifts for the animation, in pixels. - bool critter_animation_substitute(int animType, uint crTypeBase, uint anim1Base, uint anim2Base, uint& crType, uint& anim1, uint& anim2) If animation loading failed (and uint& pass wasn’t changed), then this function is called for animation substitute detection (e.g. left hook can be replaced by the right hook). true is returned if the substitute was found (engine also additionally checks if crType, anim1, anim2 were really changed), false – no substitute, animation won’t be loaded and played. int animType – see above; uint crTypeBase, anim1Base, anim2Base – base critter’s and animation’s type, which were at the start; uint& crType, &anim1, &anim2 - critter’s and the current animation’s type for the substitution - bool critter_animation_fallout(uint crType, uint& anim1, uint& anim2, uint& anim1ex, uint& anim2ex, uint& flags) As Fallout’s animations are still loaded by the engine (additional shifts calculation and animations pasting together is needed), for determining animations conformity this function is called, i.e. instead of critter_animation for fallout’s animations this function is called. true is returned if animation is presented, false – not. Method bool Critter::IsAnim3d() const is deleted, use instead of it the global function int GetCritterAnimType(uint crType) values look in Anim types _animation.fos. Critters actions sounds now are played in the scripts, in animation_2d/3d_process. New mechanism for sound file name identification was made, look PlayAnimSound in animation.fos. Critters prototypes were divided into fallout’s (fallout2.fopro) and TLA's (tla.fopro). Bug with roof’s non-transparency in Mapper was fixed. Name indication of chosen critter or tile prototype in mapper was added. Format fo3d now recognizes named constants DefineNames.fos, namely for modificators Mesh, Subset, Layer, Value, DisableLayer, DisableSubset, Texture, EffDef (для Dword), Anim, AnimSpeed, AnimEqual. Global server variable for determining call frequency was added GLOBAL_PROCESS_MOVE uint __EncounterTime = 5000 Global client variable for determining frequency of foolish trick animation call was added uint __CritterFidgetTime = 50000 is deleted using formula Random(__CritterFidgetTime, __CritterFidgetTime * 2) Item prototype’s parameter was deleted bool ProtoItem::Weapon_RequiresActivation now if animation doesn’t exist, it is just not played. Parameters uint16 MapperObject::Scenery_ToMapX/Y were deleted, in mapper also. Moving between locations is performed by entery points. In weapons prototypes types of action animations were substituted from numeric by string constants (accordance look in DefineNames.lst). Appropriate changes were performed in ObjectEditor. Client functions PlaySound andPlayMusic now return bool, signalizing if file was found or not. Global functions for server/client/mapper which return appropriate values from CritterTypes.fos were added uint GetCritterAlias(uint crType) string@ GetCritterTypeName(uint crType) string@ GetCritterSoundName(uint crType) Mapper’s scripts were moved to server’s scripts folder. Also the whole set of functions for operating with CritterTypes.fos was added to Mapper bool IsCritterCanWalk(uint crType) bool IsCritterCanRun(uint crType) bool IsCritterCanRotate(uint crType) bool IsCritterCanAim(uint crType) bool IsCritterAnim1(uint crType, uint anim1) int GetCritterAnimType(uint crType) uint GetCritterAlias(uint crType) string@ GetCritterTypeName(uint crType) string@ GetCritterSoundName(uint crType) Specifications of client’s reserved functions were changed animation2d_process, animation3d_process parameter bool animateStay was added to the beginning. It indicates if any action is performed now (false) or stand animation (true). Reaction for global map’s interface buttons pressing when the size of map’s area (GmapMap) covers the buttons area was fixed. Bug with incorrect loading/saving maps in which script’s or function’s name consists of spaces was fixed. Bug with potential server crashing when using AI_PLANE_MISC was fixed. Rev.140 http://www2.xp-dev.com/sc/change/94227/140 Some robots from Fallout Tactics (look the next revision). Rev.139 http://www2.xp-dev.com/sc/change/94227/139 The next quests were added in San Francisco: “Introduction into Hubbology”, “Hub’s justice”. Transport to Atoll is available for the players who are doing “Introduction into Hubbology” quest (npc is in the docs area of San Fracisco); Automatic transfer to the command center of GECK city citizens when entering the map was removed. Now citizens can choose spawn point. Quest location “Hubbologists laboratory” was added (author JunoReactor). Rev.138 http://www2.xp-dev.com/sc/change/94227/138 Arroyo: Quest “Evidence of Chosen’s death” was added (Todd Stewart); Two courier quests were added (Cassidy, Todd Stewart); Encounter fixes: Fixed bugs of the 120 revision; Fixed random encounters where normally aggressive npc’s didn’t attack after fighting with the other npc’s; Fixed bug with unlimited experience in Den; Fixed mistakes in NCR quests cooldowns; Slight dialogues fixes. Rev.137 http://www2.xp-dev.com/sc/change/94227/137 Ability to specify the layer of tiles/roof to organize correct query of displaying. Totally there can be 5 layers, from 0 to 4. You can switch between them with pressing shift and pressing appropriate key (from 0 to 4). Indication of the current layer is specified in the map’s supplemental information (in upper right corner). Specification of MapperMap AddTile/AddTileName methods was expanded, also layer parameter was added void AddTile(uint16 hexX, uint16 hexY, int offsX, int offsY, int layer, bool roof, uint picHash) void AddTileName(uint16 hexX, uint16 hexY, int offsX, int offsY, int layer, bool roof, string@+ picName) Functions for hash calculation by file’s name and inverse function were added to the native scripts const char* (*GetNameByHash)(uint hash); // Get name of file by hash uint (* GetHashByName)(const char* name); // Get hash of file name The functional for operating with the chosen’s actions was added to the client’s scripts. For taking or specifying the actions use functions uint GetChosenActions(uint[]@+ actions) void SetChosenActions(uint[]@+ actions) This array consists of blocks of seven variables, the first is the type, the other are the parameters. Values of types and parameters look in _client_defines.fos Chosen actions. Argument with the location was added to the reserved function for checking the entries into this location bool entrance_FuncName(Location& loc, Critter@[]& critters, uint8 entrance) The next events were added for critters CRITTER_EVENT_USE_ITEM_ON_ME bool EventUseItemOnMe(Critter& whoUse, Item& item) CRITTER_EVENT_USE_SKILL_ON_ME bool EventUseSkillOnMe(Critter& whoUse, int skill) In the calls stack it is situated between CRITTER_EVENT_USE_* and the global handler. That is CRITTER_EVENT_USE_ITEM for the player + CRITTER_EVENT_SMTH_USE_ITEM for those who can see the player. CRITTER_EVENT_USE_ITEM_ON_ME The global handler critter_use_item. and CRITTER_EVENT_USE_SKILL for the player + CRITTER_EVENT_SMTH_USE_SKILL for those who can see the player. CRITTER_EVENT_USE_SKILL_ON_ME The global handler critter_use_skill. The supplemental information (current hex, fps, etc.) in Mapper is presented in the upper right corner. Bug of 135 revision with transparent tiles when placing them was fixed. Data connected with unfinished mechanism of textured grid was deleted. Rev.136 http://www2.xp-dev.com/sc/change/94227/136 Maps converted to text format. Rev.135 http://www2.xp-dev.com/sc/change/94227/135 Now only text format is used for maps, it is binary only for loading. All maps are converted to the text format (they will be uploaded with the next revision). Extension of this format is “fomap”. To convert your own maps to the new format – execute in Mapper ““#ConvertMaps”, then you should manually or using Mapper set required values in Time, NoLogOut, ScriptModule, ScriptFunc fields, which values you can see in file Maps.cfg. File Maps.cfg is not used anymore, locations prototype numbers are defined opposite to their name in file Locations.cfg, as in the most cases the one map prototype is used for the one location. According to these changes, the next MapperMap methods are deleted: uint GetTile(uint16 tileX, uint16 tileY, bool roof) const void SetTile(uint16 tileX, uint16 tileY, bool roof, uint picHash) string@ GetTileName(uint16 tileX, uint16 tileY, bool roof) const void SetTileName(uint16 tileX, uint16 tileY, bool roof, string@+ picName) And the next are added: uint GetTilesCount(uint16 hexX, uint16 hexY, bool roof) const void DeleteTile(uint16 hexX, uint16 hexY, bool roof, uint index) uint GetTile(uint16 hexX, uint16 hexY, bool roof, uint index) const void AddTile(uint16 hexX, uint16 hexY, int offsX, int offsY, bool roof, uint picHash) string@ GetTileName(uint16 hexX, uint16 hexY, bool roof, uint index) const void AddTileName(uint16 hexX, uint16 hexY, int offsX, int offsY, bool roof, string@+ picName) Also the next fields are added: const int WorkHexX const int WorkHexY int Time bool NoLogOut string ScriptModule string ScriptFunc The next methods are deleted (as their technology is not good enough for now): string@ GetTerrainName(uint16 tileX, uint16 tileY) cons void SetTerrainName(uint16 tileX, uint16 tileY, string@+ terrainName). Function bool SaveMap(MapperMap@+ map, string& fileName, int pathType, bool text, bool pack) now looks as bool SaveMap(MapperMap@+ map, string& fileName, int pathType). The ability to transmit commands /text /pack when saving by the console is deleted respectively. Several functions for operating with map’s fields were added to mapper script (you can do this procedure simply editing necessary field in the map’s file with text editor): #MapTime value – map’s time in minutes; #MapNoLogOut value –possibility to log out on the map; #MapScriptModule moduleName – script, module’s name; #MapScriptFunc funcName – script, function’s name. Now it is possible to place lots of sprites on one hex. Be attentive, fallout’s tiles have the same size and if you place two tiles on the same hex, you won’t see it (only if you select it , it will be less transparent than the others). Take it into account when you place or copy-paste tiles. Function #ClearTiles can help you with this problem, it deletes superfluous tiles from the hex. So, if you operate with fallout’s tiles and you don’t need several tiles on the same hex, execute this script when you finish work. Also you can place tiles on every hex, not in two. Ability of shifting is added for tiles. To produce tile shift just make the same operations as switching between tiles, but additionally pressing shift. Also you can use the same shift procedure for items. To cancel shift, press Alt with Shift and move objects. Fixed 130 revision’s bugs. Fixed bug with absence of shifting in fofrm with one sprite. Fixed bug with error in loading sprites in scripts (LoadSprite), which caused several other bugs. Remained ini files were formatted. Rev.134 http://www2.xp-dev.com/sc/change/94227/134 Config was uploaded by mistake. Take into accont, don't use config file from 132 and 133 revisions, admin pass is "hh" there. Rev.133 http://www2.xp-dev.com/sc/change/94227/133 Redding maps fixed, quest NPC were added. Rev.132 http://www2.xp-dev.com/sc/change/94227/132 Fixed "Anger" quest, the missing dialogue was restored, now it can be finished. Added quest "Forgery". (VC, Linnet) Rev.131 http://www2.xp-dev.com/sc/change/94227/131 New quests "Anger", "Ernst Telman" were added. (VC, Linnet) Fixed bug in VC guard's AI scripts. Fixed mistakes in quest “Amnesty for Joshua” dialogues. Ability to cancel their service for mercs/companions was added if the owner exits from location to the global map. Rev.130 http://www2.xp-dev.com/sc/change/94227/130 Support of graphics files SPR, TIL, ZAR from Fallout Tactics was added. Support of data files BOS from Fallout Tactics was added (works as ZIP archieve). For loading certain animation from SPR files, state it in the name after “$” sign. E.g. loading CrouchAttackClubSwing animation from file Mutant.spr - “Mutant$CrouchAttackClubSwing.spr”. The first frame of first animation is taken without direction. Also, ability to set certain palette for ART files (graphics files from Arcanum) was added – state palette’s number (from 0 to 3) after “$” sign. E.g. to load dfmbnsba.art file with the second palette - “dfmbnsba$1.art”. First palette is taken without direction (that is 0). Operation with sprites was changed. Now all interface graphics (which is set in ini files) is represented not as one sprite, as continuously played animation. Functional for operation with currently drawn sprites on the map was added to the native client’s and mapper’s scripts. Structures: struct Sprite – displayed sprite; struct SpriteInfo – additional information about the sprite. Functions: Sprite* (*GetDrawingSprites)(uint& count); - currently drawn sprites, if no sprites (on the global, menu), then NULL is returned and count == 0; SpriteInfo* (*GetSpriteInfo)(uint sprId); - getting additional information about certain sprite; uint (*GetSpriteColor)(uint sprId, int x, int y, bool affectZoom); - getting pixel’s colour, with the ability of taking zoom into account; it isn’t available for 3d models yet; format - ARGB; bool (IsSpriteHit)(Sprite sprite, int x, int y, bool checkEgg); - test whether the point on the display matches with the current sprite with taking zoom, transparence and egg of transparence into account (optional). The reserved native global variable GameOpt was renamed to Game. Global variables int __MouseX, __MouseY for current mouse position indication were added. Function void GetMousePosition(int& x, int& y) was deleted. Indication of opened console bool __ConsoleActive was added to client’s scripts. Bug with memory leak when rendering 3d graphics to sprites was fixed. Rev.129 http://www2.xp-dev.com/sc/change/94227/129 Added ability to use robot-guards from Sierra as bodyguards (for those who had completed quest "No-sweat job" in Navarro) Added quest "Amnesty for Joshua" (VC, Amanda) Work of teleport on special encounter "Mad scientist's laboratory" was restored. Rev.128 http://www2.xp-dev.com/sc/change/94227/128 Second stable SDK assembly. For the purpose of decreasing repository's size, assemblies will be stored in another places. Links you can find in text files. Rev.127 http://www2.xp-dev.com/sc/change/94227/127 Quest "No-sweat job" in Navarro. Rev.126 http://www2.xp-dev.com/sc/change/94227/126 Mercenaries and companions mechanism (merc.fos) was updated. Now every companion has term of service. Companions don’t meddle in player’s showdowns with NPC’s. Fixed quest “Dip.Courier”. Now it can be finished. Fixed quest “Dock’s attack”. Now it can be finished after killing 5 giant insects. Added 3 new mercs for Lo Pan. Updates NPC-travellers mechanism (traveller.fos). The first NPC-traveller was added (eli.fos). Functions which cooldowns checkup for NPCs in dialogues were fixed. When character dies, all items with flag ITEM_GAG are deleted. Fixed cooldowns for quests “Hub bibliography”, “Sick Brahmin” and in the dialogue with dr.Klaus for stimpacks and first aid kits delivery. When NPC repairs an item, ammo is ejected. Script for NPC monologues realization was added. (monologue.fos) Rev.125 http://www2.xp-dev.com/sc/change/94227/125 Fixes of password encryption in the client's files. Rev.124 http://www2.xp-dev.com/sc/change/94227/124 Fixed bug with graphics loading in the previous update. Rev.123 http://www2.xp-dev.com/sc/change/94227/123 DAT2.1 (Arcanum) files support was added. ART (Arcanum) graphic format was added. Function for operating with strings splitEx was added. Principle is the same as in split, but empty elements are not included in the result array. Also spaces/tabs/string_hyphenation are deleted from the result elements. Examples: split(“A|B||D”, “|”) -> {“A”, “B”, "", “D”} splitEx(“A|B||D”, “|”) -> {“A”, “B”, “D”} split(“A| B\t\t||D| E|F ”, “|”) -> {“A”, “ B\t\t”, "", “D”, “ E”, “F ”} splitEx(“A| B\t\tC||D| E|F ”, “|”) -> {“A”, “B”, “D”, “E”, “F”} Additional DrawSprite functions for the client and mapper were added. You can transfer true with the last argument and as the result, the shift which is stored in the current file will be added to the sprite’s position. void DrawSprite(uint sprId, int sprIndex, int x, int y, uint color, bool applyOffsets) void DrawSprite(uint sprId, int sprIndex, int x, int y, int w, int h, bool scratch, bool center, uint color, bool applyOffsets) Fixed bugs with incorrect ini settings parsing in the scripts. Rev.122 http://www2.xp-dev.com/sc/change/94227/122 Client scripts updates: For the reserved function void render_iface(uint layer) was added calling with value layer 100 to give the ability of drawing on the global map. Also the next global variables were added for operating with the global map: bool __GmapActive – whether global map is active and all the variables below are correct; bool __GmapWait – whether waiting mode of encounter affirming is active; float __GmapZoom – current zoom, don’t forget it to take into account while drawing a map; int __GmapOffsetX, __GmapOffsetY – map shift from the zero-coordinate (up-left corner); int __GmapGroupX, __GmapGroupY – player’s group coordinates; int __GmapMoveX, __GmapMoveY – destination point’s coordinates; float __GmapSpeedX, __GmapSpeedY – movement speed every 50 ms, without taking relief into account For example, calculating the current pixel group’s position - (x = __GmapGroupX / __GmapZoom + __GmapOffsetX), (y = __GmapGroupY / __GmapZoom + __GmapOffsetY). Fixed bug with hanging when drawing 3d model, occurred in the last update. Fixed missing bracket in English texts. (by Kilgore) Rev.121 http://www2.xp-dev.com/sc/change/94227/121 Added more mouse sensitivity and now you can see mouse’s speed percent in the settings. Updated FOConfig.exe. Added AlwaysRun option. Possible values for option Mouse speed were corrected. Option Sleep now can be set to -1, that means switching it off (maximum performance). Added ability of redirecting keyboard’s symbol codes input. For this, use option KeyboardRemap (in FOnline.cfg). It is performed after space – X Y X Y …, where X is the code which is substituted by Y. Code numbers - http://fonline.pastebin.com/Qy3E0qwj Interface description in default.ini is formatted and commented. (by LoadRunner) Location prototypes updates: Option max_copy was deleted. Option max_players was added. It limits the amount of players who can be on the location simultaneously. Players, who can’t enter location because of exceeding the limit will see message 904 from FOGAME.MSG {904}{}{Location is overcrowded, try to enter later.} Password encryption in server *.client. files was added. Mouse shift when switching between movement modes was fixed. Also, for more accurate work, the hex mask was added – look \Client\data\art\misc\hex_mask.png. Only red colour is taken into account and when it takes on certain value, the shift to certain direction is performed (50 – 5, 100 – 0, 150 – 3, 200 – 2). The mask is optional, you can work without it. Fixed loading/saving tiles in the maps text format. Fixed global map shifting behind screen’s edge. Registration of useless clicks in mapper when switching between windows, now isn’t performed. Fixed the animation of 3d critter standing when situating them on the map. Also now 3d critters don’t play standing animation in the critter’s list. Fixed displaying of critters which have only one direction. Fixed command ~reloadscripts. Now when you mark items for deleting (DeleteItem/DeleteItems), their quantity is saved. So, in the moment when real deleting is performed, server will delete the requested number of items. Now knockout during turn-based fight leads to immediate loosing action points, not after finishing the turn. Also, frequent checks for the necessity of finishing the turn were added at the server - if critter’s dead, critter has negative AP, critter has no more AP. Scripts: Fixed critter’s flags (Critter extra flags, _defines.fos). Fixed special encounter scripts Guardian of Forever, Mad Brahmins. Script trader.fos was formatted. Reserved function was added to client scripts, which is called with attacks void hit_aim(uint8& aim) aim value can be redefined( Hit locations in _defines.fos). Function int Critter::GetScore(uint score) was added to server scripts. Specification Critter::AddScore(int score, int val) was changed to Critter::AddScore(uint score, int val). Function for calculation the size of drawn text was added to client and mapper scripts void GetTextInfo(string& text, int w, int h, int font, int flags, int& tw, int& th, int& lines) string& text – text; int w, h, font, flags – height, width, print, flags; int& tw, int& th, int& lines – total width, height and amount of strings in the current text. Rev.120 http://www2.xp-dev.com/sc/change/94227/120 Unused encounter tables for Fallout 1 and commented original’s scripts were deleted from worldmap_init.fos; Random encounters of “beasts versus beasts” type were enabled, which were presented in the scripts, but were absent in the original. Added some new kinds of non-unique random encounters. Now, if player uses to kill NPC’s of certain group or organizations on random encounters, then they become aggressive. Vault City guard’s automatic search is deactivated. Now you need to activate the dialogue to pass through. Fixes in English dialogues versions. Maps fixes. Rev.119 http://www2.xp-dev.com/sc/change/94227/119 Fixed lots of little mistakes in dialogues; Fixed bugs in some Den and Klamath quests; Maps fixes; Duplicate dialogues with different names were deleted. Rev.118 http://www2.xp-dev.com/sc/change/94227/118 Fixed modificator's argument from Parent-0-7 to Parent0-7. Rev.117 http://www2.xp-dev.com/sc/change/94227/117 Added dialogues to Arroyo doctor and his team. Slight fixes (dialogues, maps). Rev.116 http://www2.xp-dev.com/sc/change/94227/116 Library for importing different 3d models was enabled – Assimp http://assimp.sourceforge.net/ Formats that are supported: http://assimp.sourceforge.net/main_features_formats.html Built-in one is still used for X format, for other ones – this library. If you don’t need the library, you can delete it (file Assimp32.dll), client and mapper are able to work without it. Updated mechanism of linking models and animations, now you can link any animation to any skeleton from any file. fo3d format changes: Modificator ModelAnimation was deleted. Modificators Anim, RenderFrame, RenderFrames were expanded – now file name which consists needed animation is placed before the animation’s name (if you state “ModelFile”, then search is performed in the file of loaded model)/ Specification of indicating parent texture (Texture X Parent) was expanded. Now you can additionally state the mesh number and its part, from which the texture is taken - Texture X ParentY-Z, where X is the texture’s number, Y is mesh number, Z is mesh part number; parameters Y-Z are optional, you may don’t use them at all or you may use them partly (Parent, Parent0, Parent-5). Fixed bug with incorrect script processing when operating with Critter::ShowScreen. Fixed bug with incorrect operating and crashing when using Log function with some special symbols. Added Combat Armor 3d model (by Gray). Rev.115 http://www2.xp-dev.com/sc/change/94227/115 Added special encounter "Warehouse of lost doughnuts" (author - Ponchik). Scripts for some original special encounters (author - Cracker). Remade some prototypes. Windows without glasses in Vault's walls can be shooted through now. Slight fixes. Rev.114 http://www2.xp-dev.com/sc/change/94227/114 Maps for quests from the 113 revision. Rev.113 http://www2.xp-dev.com/sc/change/94227/113 Klamath: quests - "Worker searching", "Husband's alert", "Brahmins vaccination" (author - Ponchik). Slight fixes. Rev.112 http://www2.xp-dev.com/sc/change/94227/112 Finished appearance of random encounter "Ocean Trader". Slight maps, dialogues and graphics fixes. Added buttons for BarterGround, GECK town, Warehouse and Hell for the global map (author - Ponchik). Slight fixes. Rev.111 http://www2.xp-dev.com/sc/change/94227/111 Added additional mechanism for data files loading (dat, zip). It is necessary for loading data files loading before scripts initializing and processing start() function as some date is needed to be used before this (effects, prints and some other resourses). For adding files to loading – create DataFiles.cfg file in which you should list all necessary file names. The program searches for the content from the last to the first data file. This mechanism uses server, client, mapper. If list isn’t found then no alerts will be displayed. If one of the files from the list can’t be found or load error appears, then alert will be shown. Option PatchDatPath was deleted, loading of this file is moved to DataFiles.cfg. Rev.110 http://www2.xp-dev.com/sc/change/94227/110 Fixed model's borders calculating which caused nick or text shift above critter's head. Rev.109 http://www2.xp-dev.com/sc/change/94227/109 Fixed skin setting-up when registration 3d character. Fixed order of loaded packs (dat, zip) scanning while searching and parsing ini files. Addition to 106 revision – for stating specific keys for certain resolutions now are used not separate files with different names, but marks in the main file. At the start of the string write “resolution”, than min. width and height for starting using these options. By default these values are equal to zero. For example: "resolution 1024 768 key = value..." It means, that “key = value ...(and so on till the next keyword ”resolution”)” will be included in the final ini. Found data will be inserted in the main file as screen width grows. Rev.108 http://www2.xp-dev.com/sc/change/94227/108 Actual cash files. Rev.107 http://www2.xp-dev.com/sc/change/94227/107 SDK is switched to 3d players mode. Normal version will be restored after finishing mechanism debugging process. For switching off 3d players models – comment the next strings in Server\scripts\_defines.fos #define PLAYERS_3D // Enable 3d players #define PLAYERS_3D_NO_HEAD // No head slot #define PLAYERS_3D_VAULT_SUITE // Vault suite by default, not naked 3d updates: Fixed and reduced the size of attributes and weapons. Added missing attributes of opened pipboy. In the left hand now is displayed the item, which player has in the second slot. Armor’s models are divided between the current armor items in the such way, that gamer could see the difference. For example combat armor consists of power armor and the helmet, robes are replaced by jail suit and etc. Fixed animation playing during creating the new character in single mode. Added skin change processing in start intro and after Kitty’s haircut. Added skeleton’s skins. Added sound for men and women. Fixed sound name for critters parameter’s loading (CritterTypes.cfg, SoundName). Now characters walk slowly with double click if alwaysrun option is turned on. Rev.106 http://www2.xp-dev.com/sc/change/94227/106 Added ability to make 3d characters available to play for. To enable it (it is disabled as default) - comment certain strings in _defines.fos // #define PLAYERS_3D // Enable 3d players // #define PLAYERS_3D_NO_HEAD // No head slot // #define PLAYERS_3D_VAULT_SUITE // Vault suite by default, not naked Updated mechanism of working with ini files. Now, when searching for the keys, excess spaces and tabulations are skipped (now you can type “ key = value ”, previously was correct only variant “key=value”) Added function bool AppendIfaceIni(string& iniName), which enables additional ini files. If the name includes slashes, than the search is being performed from data root, if not - than from folder data/art/interface/. default.ini is added automatically by the engine, others you can enable in start() client function. Loading is performed sequentially from default.ini to ones enabled by user by turn. Every packed file is checked by the turn of loading, then in the folder. Global variable string __UserInterface was deleted. Fixed bug with incorrect parsing of animation indexes in fo3d file. Fixed bug with incorrect position of the egg of transparence in zoom mode. For better readability the next scripts were formatted: start_server_client.fos client_main.fos In the future this practice will be continued. Rev.105 http://www2.xp-dev.com/sc/change/94227/105 Documentation update - slight fixes. Rev.104 http://www2.xp-dev.com/sc/change/94227/104 Added structure of script array (ScriptArray) to native scripts. Added ability to client's native scripts of calling hex data - Field. Data is stored in Field* GameOptions::ClientMap, uint GameOptions::ClientMapWidth/ClientMapHeight. If map is loaded, than ClientMap != NULL, hex calling - ClientMap[hexY * ClientMapWidth + hexX]. Rev.103 http://www2.xp-dev.com/sc/change/94227/103 Added always run option - can be enabled in client's config file “AlwaysRun”. Disabled as default. Added global variables for AlwaysRun regulating: bool __AlwaysRun (as default - false) - enabling AlwaysRun ability; uint __AlwaysRunMoveDist (as default = 1) - run with click, if distance is equal or more than the value; uint __AlwaysRunUseDist (as default = 5) - run with using smth/dialogue/etc, if distance is equal or more than the value. TLA's mechanics is equal to original - always run with click, always run with using if distance is more than 4 hexes. Added parameter uint Critter::ItemTransferCount to native scripts. It stores the value of transferred items during the last transaction. Rev.102 http://www2.xp-dev.com/sc/change/94227/102 Optimized server operation (script calling) in one tread operation mode, performance increased up to 400%. Fixed bug with crash when calling Critter::Say* methods with parametr SAY_SAY_TITLE. Rev.101 http://www2.xp-dev.com/sc/change/94227/101 Changes in fo3d format, new specification was created - look this theme: http://www.fonline.ru/forum/showthread.php?t=19689 New format added new abilities of working with 3d objects - trasmission of texures, other paremeters, etc. Also added ability to render certain animation to sprites as for one frame, either for the whole animation. But the bug with cutting off the shade situated below the lowest edge of model still presents. Updated old fo3d files, also VanBuren's critters and weapon models were added. Changed effects structure, added effect for normal mapping (3D_NormalMapping.fx). Added transfer of real numbers through scripts, float __EffectValue0..9. Fixed bugs with loading 3ds files - miss of meshes except the first; crash if texture coordinates are not presented. Fixed bug in Mapper with data copying when copy-pasting a large number of objects. Fixed text centering of hexes amount in zoom mode. Rev.100 http://www2.xp-dev.com/sc/change/94227/100 Documentation update. Rev.99 http://www2.xp-dev.com/sc/change/94227/99 Updated documentation file, which was missed in the previous revision. Rev.98 http://www2.xp-dev.com/sc/change/94227/98 Added resourse gathering system; Documentation updating. Rev.97 http://www2.xp-dev.com/sc/change/94227/97 Fixes of "Night is tender" quest, now healing must work properly. Added preview from global map for GECK location. Rev.96 http://www2.xp-dev.com/sc/change/94227/96 Gecks counting on the location now affects its auto moving away and visibility separately; Parameter geck_enabled (Map::GeckEnabled) renamed to geck_visible (Map::GeckVisible). Rev.95 http://www2.xp-dev.com/sc/change/94227/95 Added global server function void SetChosenSendParameter(int index, bool enabled) which can denie transmitting parameters to client. Transmitting of all parameters is enabled by default. Rev.94 http://www2.xp-dev.com/sc/change/94227/94 Fixes of sea encounter maps. Rev.93 http://www2.xp-dev.com/sc/change/94227/93 Added sea encounters; Added posibility of an encounter while travelling on air/water transport; Player always have possibility of cancellation water/air encounter and never gains experience for that; Bug fix in mapper with incorrect editing critter's parameters. Rev.92 http://www2.xp-dev.com/sc/change/94227/92 Fixed displaying rating in pipboy. In mapper additional indication of cut sprites was added to make lines, which are needed for correct interaction, visible. Rev.91 http://www2.xp-dev.com/sc/change/94227/91 Added traffic encryption between server and client. Rev.90 http://www2.xp-dev.com/sc/change/94227/90 Fixed choosing automatically cut sprites in zoom mode. Rev.89 http://www2.xp-dev.com/sc/change/94227/89 Added parametr DrawOrderOffsetHexY for shifting order of drawing lower (Y axis). This is an analogue for recently deleted DrawPosOffsX. Fixed using car trunk. Different slight fixes. Rev.88 http://www2.xp-dev.com/sc/change/94227/88 Fixed exit from Redding; slight fixes. Rev.87 http://www2.xp-dev.com/sc/change/94227/87 Fix for weapon AP cost. Rev.86 http://www2.xp-dev.com/sc/change/94227/86 May be fixed bug with incorrect displaying of some tiles. Fixed bug with unworking elevators. Added restoration of effects when loosing a device (cause crashed e.g. with alt+tab) Rev.85 http://www2.xp-dev.com/sc/change/94227/85 Fixed bug with chat disappearing. Fixed AI bug when combat plans always finished with REASON_CANT_WALK. Rev.84 http://www2.xp-dev.com/sc/change/94227/84 Fix for DT params reading. Rev.83 http://www2.xp-dev.com/sc/change/94227/83 Safety checks for radio commands. Rev.82 http://www2.xp-dev.com/sc/change/94227/82 Fixes of some dialogues; translations of dialogues on Barterground; map fixes; fixes of encounter table; slight fixes. Rev.81 http://www2.xp-dev.com/sc/change/94227/81 Fixed another bug during moving on the global map. Fixed unplanned activating of b/w effect. Rev.80 http://www2.xp-dev.com/sc/change/94227/80 Fixed teleportation bug during moving on the global map. Rev.79 http://www2.xp-dev.com/sc/change/94227/79 Fixed bug with incorrect tear and wear and fuel consumption calculation during moving on the global map by car. Rev.78 http://www2.xp-dev.com/sc/change/94227/78 Fixed brightness output. Fixed outlining activation. Rev.77 http://www2.xp-dev.com/sc/change/94227/77 Added automatic sprite cutting. Main purpose – correct displaying of long walls. Parameter SpriteCut was added to prototypes and mapper (only for scenery) for modification. Cutting values: 0 – switched off, 1 – horizontal (X axis), 2 – vertical (Y axis). Wall blocks should be set manually , for that purpose six blocks with different corner types with visual indication were added. It is necessary for correct calculation of brightness and egg of transparence reaction. Numbers 6800..6805 at the end of Wall and Fast list. Fixed client instability after recent update. Primary indexes array for animations was expanded to the range ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789. For value changing use native means (structure CritterType in fonline.h). Support of effects (HLSL) loading with earlier version of compiler. Automatic attempt of compilation is performed after failure in compilation with the current library. Added data updating for client function GetIniStr in the start function (start) after each call of LoadDataFile. Mapper update: Fixed bug with error in loading tiles with extension not in lower case. Fixed algorithm of sprite displaying calculation (when big sprites were disappearing near the screen edge). Additional visual means for debugging: - Ctrl + Q: Corners type viewing; - Ctrl + W: Viewing the result of sprite cutting, linking them to hexes; - Ctrl + E: Viewing the sequence of sprites drawing. At the time of renewing NPC’s bag, only items which are not in inventory are repaired and reloaded. Added ability to set sprite shift in screen coordinates to prototypes. Fixed bug with double notification of quest state change. Rev.76 http://www2.xp-dev.com/sc/change/94227/76 Added quest “Night is tender” Rev.75 http://www2.xp-dev.com/sc/change/94227/75 Tables for sea encounters, slight fixes. Rev.74 http://www2.xp-dev.com/sc/change/94227/74 Source documentation. Rev.73 http://www2.xp-dev.com/sc/change/94227/73 SPECIAL calculating is moved to native scripts - fonline_tla.dll for server and fonline_tla_client.dll for client (must be situated in data\scripts). The other parameters which are used in the engine are needed generally for drawing GUI, but soon they’ll be moved to scripts too. Native scripts files are moved from data folder to scripts. Added bat-file make_tla.bat for their compilation (installation of MSVS8 is necessary). For example of use new methods for critter classes are added (IsInjured, IsDmgArm...), items (IsHtHAttack, IsGunAttack...) with pragma bindfunc. Example of linking global varieties of standard and native scripts is added (__HitAimEyes, __HitAimHead..., these global varieties are moved to scripts). Callback functions are added (to GameOptions) for item usage cost determination - GetUseApCost. For attack max range determination - - GetAttackDistantion. It further such functions will force out usage of critter parameters in the engine. These functions are binded at the stage of connecting of library to the engine (DllMainEx). For operating with the engine added the next functions (to GameOptions): CritterChangeParameter – for correct change of critter parameter, this function should be called firstly, then you can change the value. CritterTypes – index of CritterType structures where data from CritterTypes.cfg is stored. Added method to client’s critters for detection whether now is time of its move in the turn-based mode bool CritterCl::IsTurnBasedTurn() const Some logics of operating with turn-based mode is moved to the scripts - turn_based_process main.fos. Some recommended specifications for the reserved functions are changed - templates.fos. Min. time of dialogue or barter with NPC now is regulated by the global varieties __DlgTalkMinTime (now default 100 seconds) и __DlgBarterMinTime (now default 50 seconds). Range for all prototypes (maps, locations, items) is expanded to 30000. Fixed bug with incorrect drawing of minimap in the pipboy. Fixed bug with incorrect calculating of healing rate while registration. Fixes of Zerg’s special encounter. Rev.72 http://www2.xp-dev.com/sc/change/94227/72 Data library for script compilation (updated on 27 October) Rev.71 http://www2.xp-dev.com/sc/change/94227/71 Added Zerg special encounter. Fixed bug with incorrect names in Fixboy. Added function LoadDataFile to server scripts, analogue of client/mapper. Fixed mistiming of player movement on global map. Deleted function Critter::SendQuestVar, now alert about changing of local variable is automatic. Changed function specification void ShowScreen(int screenType, uint param, string& funcName) to void ShowScreen(int screenType, uint param, string@+ funcName), now can transmit both empty string or null. Rev.70 http://www2.xp-dev.com/sc/change/94227/70 Documentation is updated. Deleted incorrect splash-picture. Added urgent files for scripts autoaddition in Notepad++. Rev.69 http://www2.xp-dev.com/sc/change/94227/69 Added ability to use your own shaders for game graphics drawing. High Level Shader Language is used for this. Effects folder is situated in data\effects. After the first compilation they are cashed in the folder data\cache (in futher other different data will be cashed there). You can read specifications on the game engine effects in data\effects\ReadMe.txt. Added ability to link any effect to sprite or model in .fofrm and .fo3d (“effect=effect_name.fx”). For default effect changing, function void SetEffect(int effectType, int effectSubtype, string@+ effectName) was implemented into the client scripts. int effectType, effectSubtype – effect types look in _client_defines.fos (Subtype for fonts used font type); string@+ effectName – the name of the effect file (with extension) is in the folder data\effects. Added changing of detailization of game objects for demonstration. For activation press Alt+W, for return press Alt+Q. Added client function for map redrawing void RefreshMap(bool onlyTiles, bool onlyRoof, bool onlyLight) if all three parameters are false, than everything will be redrawed. Also these three parameters are incompatible. Fixed bug in mapper with impossibility of viewing 3d critters in prototypes table. At present time they can’t be ranged. Added ability to play sounds/music from different folders. void RefreshMap(bool onlyTiles, bool onlyRoof, bool onlyLight) If there isn’t slashes (‘/’,‘\’) in path name than search is performed in the folder sfx/music. If there are slashes, than in the root (“data/mysounds/mysound.ogg”). Rev.68 http://www2.xp-dev.com/sc/change/94227/68 Fixed bug in the ObjectEditor when damage type is saved incorrectly. Rev.67 http://www2.xp-dev.com/sc/change/94227/67 Fixed crashing when calling CritterCl::[Param/Stat/Perk/etc]Base in client scripts; Fixed error with recording Anydata of zero length (by Atom). Rev.66 http://www2.xp-dev.com/sc/change/94227/66 Fixed incorrect weapon prototype; errors in checking for special encounters; added decraft of the sand sack to fixboy; other little fixes. Rev.65 http://www2.xp-dev.com/sc/change/94227/65 Redding: finished map according to the last concept; - Garbage was returned to static locations; - Ammo craft on benches (beta-version); - Destruction of the sack using skill repair now gives use empty sack. - Entering Den message was moved to texts from script. Rev.64 http://www2.xp-dev.com/sc/change/94227/64 AngelScript updated to 732 revision. Added new methods for arrays: void T[]::insertAt(uint, const T&) – element inserting in specified position in the array; void T[]::removeAt(uint) – deleting the element by index; void T[]::insertFirst(const T&) – element inserting to the beginning of the array; void T[]::removeFirst() – deleting the first element; void T[]::insertLast(const T&) – element inserting to the end of the array; void T[]::removeLast() – deleting the last element; void T[]::grow(uint) – add elements (the sames as a.resize(length()+X)); void T[]::reduce(uint) – delete elements (the same as a.resize(length()-X)); T& T[]::first() – call of the first element of the array (the same as a[0]); T& T[]::last() – call of the last element of the array (the same as a[a.length()-1]). Also deleted all functions ArrayPushBack as the built-in array functional was expanded. All the scripts were fixed accordingly. Rev.63 http://www2.xp-dev.com/sc/change/94227/63 Added ability to start the server as a service. For registration/start use key “-service” (shortcut FOServerService.exe.lnk). For deleting use keys “-service -delete” (shortcut FOServerServiceDelete.exe.lnk). Added ability to log using function OutputDebugString. The log can be caught (even remotely) using program DebugView http://technet.microsoft.com/en-us/sysinternals/bb896647.aspx For switching it on in server and client configs option LoggingDebugOutput is added. Server/client/mapper will work normally now with incorrect active folders. At start you set the current folder of executable. Fixed bug with absence of replacement “x” by “ч” in built-in punto switcher. Fixed crash in turn based mode and incorrect work of Map::GetCritter(uint critterId). Rev.62 http://www2.xp-dev.com/sc/change/94227/62 Fixed bug with updating vehicle data on the global map. Fixed bug with system hanging while looking items quantity in game info. Fixed bug with the incorrect login/disconnect. Fixed bug with incorrect creating non-stacking items on the map in the number of >1. Fixed bug with incorrect critters gathering when path tracing (by Atom). CRITTER_EVENT_TALK now performed before checking NPC for settings which could restrict speaking with it. Added new mechanism for script garbage gathering (by Atom). For config file simplification, the next options were removed: ASGarbageTime, VarsGarbageTime. Deleted transfer of a group of critters into global map processing global_process, CRITTER_EVENT_GLOBAL_PROCESS. Also instead of transferring a group into global map processing global_invite, CRITTER_EVENT_GLOBAL_INVITE, now only the leader is transferred. Instead of picking group use Critter@[]@ Critter::GetGlobalGroup(). Because of that, specification methods were changed: bool Critter::EventGlobalProcess(int type, Critter@[]& group, ...) bool Critter::EventGlobalInvite(Critter@[]& group, ...) for bool Critter::EventGlobalProcess(int type, Critter& cr, ...) bool Critter::EventGlobalInvite(Critter& leader, ...) Reserved functions of critter event CRITTER_EVENT_GLOBAL_PROCESS, CRITTER_EVENT_GLOBAL_INVITE bool _FuncName(Critter& cr, int type, Critter@[]& group, ...) bool _FuncName(Critter& leader, Critter@[]& group, ...) for bool _FuncName(Critter& cr, int type, ...) bool _FuncName(Critter& leader, ...) Fixed bug with incorrect cooldown for hijacking, now it is equal for a normal lock. Added checking for unopenable door to the lock break script. Rev.61 http://www2.xp-dev.com/sc/change/94227/61 Fixed bug with incorrect reappraisal of item flags in Mapper. Fixed bug when player isn't notified about moved item. Rev.60 http://www2.xp-dev.com/sc/change/94227/60 Fixed bug with incorrect displaying of the rain on roofs. Rev.59 http://www2.xp-dev.com/sc/change/94227/59 Mapper's fix for correct operating with new folder and print's names. Rev.58 http://www2.xp-dev.com/sc/change/94227/58 For editing use program Bitmap Font Generator v1.12. http://www.angelcode.com/products/bmfont/ Print should have the next attributes - OEM RUSSIAN, Padding 1 (in all directions), Binary, all symbols should be placed on the one texture. All prints are moved in the separate folder “Client\data\fonts\”. For the example print FONT_COURIER_NEW_SMALL is added. Look _client_defines.fos, client_main.fos, CourierNewSmall.bmfc, CourierNewSmall.fnt, CourierNewSmall_0.png. Added function in client’s scripts of activating the clock which shows you the time signal comes to server and returns (ping). You can use it for restriction of input while waiting for server’s answer. Fixed crushing when looking players statistics on server. Fixed crushing of Dialogue Editor (by Atom). Rev.57 http://www2.xp-dev.com/sc/change/94227/57 Expanded mechanism of operating with ingame radio. Added flag ITEM_RADIO for radio. (in _defines.fos). Radio messages are now also sent to radios which are on the ground . For their identification engine sends them with color 0xFFFFFFFE (in map_message in client_main.fos). Realization is in script radio.fos (interface, mechanics), call from main.fos. Interface data is taken from default.ini (Radio*). You can edit it with using item or using science skill on it. Radio data is situated in general fields of several item types. That’s why it isn’t a good idea to use this flag with Doors, Keys, Cars, Weapons, Armors, Holodiscs. Transmitting and receiving functions are separated. For managing the next flags and range types are used (_defines.fos): Restriction of transmitting/receiving is stored in Item/ItemCl::RadioFlags, used by the engine: RADIO_DISABLE_SEND, RADIO_DISABLE_RECV. Restriction of switching radio state in в Item/ItemCl::RadioFlags: RADIO_DISABLE_SHIFT_SEND, RADIO_DISABLE_SHIFT_RECV - restriction of switching transmit/receive; RADIO_DISABLE_SHIFT_BC_SEND, RADIO_DISABLE_SHIFT_BC_RECV - restriction of changing distance range; RADIO_DISABLE_SHIFT_CHANNEL – restriction of channel switching. Range types are stored in Item/ItemCl::RadioBroadcastSend/RadioBroadcastRecv, are used by the engine: RADIO_BROADCAST_WORLD – works all over the world; RADIO_BROADCAST_MAP – works within the limits of the current map; RADIO_BROADCAST_LOCATION - works within the limits of the current location; RADIO_BROADCAST_ZONE(x) - works within the limits of “x” zones on the global map; RADIO_BROADCAST_FORCE_ALL – works everywhere regardless of the adjustments of transmitting or receiving radio/ Added support of these flags to the object editor (both engine and script ones). Added scripts uint16 ProtoItem::RadioChannel, uint16 ProtoItem::RadioFlags, uint8 ProtoItem::RadioBroadcastSend, uint8 ProtoItem::RadioBroadcastRecv. For holodisc marking added flag ITEM_HOLODISK (in _defines.fos). Holodisc data is situated in general fields of several item types. That’s why it isn’t a good idea to use this flag with Doors, Keys, Cars, Weapons, Armors, Holodiscs. Added support of this flag in object editor. Added script uint ProtoItem::HolodiskNum. Added ability to use built-in cartridge indicator for other purposes. Added the next parameters: uint8 ProtoItem::IndicatorStart – initial value, - Item/ItemCl::Indicator; uint8 ProtoItem::IndicatorMax – maximum available value (for correct calculation of the strip position); uint8 Item/ItemCl::Indicator – current value. Mechanism is considered activated if maximum value in the prototype isn’t equal to zero. Added support of editing of initial and maximum values in the object editor. Method Item::GetMapPosition for the items which are in the global map returns their coordinates. Fixed bug with system hanging while looking online statistics. Added storing up to 20 ip addresses for one account (fonline.h). Item prototype’s fields, which are equal to zero, now cannot be saved. All prototypes are resaved. Continued working on multithreading in game logics. Added ignoring of non-initialized maps or locations while loading save (NPC’s would be moved to global map, items - deleted). Fixed bug in the dialogue on BiX location. Updated abilities of GUI scripting. In script _defines.fos notes “Used in engine” are replaced by “Hardcoded”; point is the same - to show that this data is used by engine also. Corrected some specifications in template.fos of reserved functions. Rev.56 http://www2.xp-dev.com/sc/change/94227/56 Changes in craft: some new recipe's (new weapon, etc.), added workbenches in some town/military bases. Rev.55 http://www2.xp-dev.com/sc/change/94227/55 - Updated Redding maps; - Deleted unused graphics; - Added second entrance to NCR; - Some changes in NPC's inventories on encounters. Rev.54 http://www2.xp-dev.com/sc/change/94227/54 - Slight fixes in Hartman's and Shrim's dialogues (Vault City); - Fixed problem with immediate sending off caravans/patrols Ahe9mPDq; - Changed content of the quest variable for the quest "Third trial. Drill." - Restored functions for triggers t_DialogNpc and scenery s_TransitToMap. Rev.53 http://www2.xp-dev.com/sc/change/94227/53 Fixes of KotW location. Quest for oil can can be done by everybody in Arroyo now. Rev.52 http://www2.xp-dev.com/sc/change/94227/52 Fixes of Brok and Xander Church location (by VaultTec) Rev.51 http://www2.xp-dev.com/sc/change/94227/51 Fixed names loading (*Names.lst) with the dialogue editor. Changed extention of its config file. Rev.50 http://www2.xp-dev.com/sc/change/94227/50 Fixed bug with duplicating of time events. Rev.49 http://www2.xp-dev.com/sc/change/94227/49 Slight optimization of multi-threading. Rev.48 http://www2.xp-dev.com/sc/change/94227/48 Fixed error in loading of games variables values. Fixed loading of saves games in single player mode. Rev.47 http://www2.xp-dev.com/sc/change/94227/47 Time events changes. - function specification void EraseTimeEvent(uint num) changed to bool EraseTimeEvent(uint num) Return value shows whether deleting is done or the event isn't found. - Deleted the next functions: uint CreateTimeEvent(uint beginSecond, string& funcName, Critter& cr, bool save) uint CreateTimeEvent(uint beginSecond, string& funcName, Item& item, bool save) uint CreateTimeEvent(uint beginSecond, string& funcName, Critter@[]+ critters, Item[]@+ items, bool save) For migration just put the identificator to the critter or item. Added the next functions for operating with event's values: bool GetTimeEvent(uint num, uint& duration, uint[]@+ values) bool GetTimeEvent(uint num, uint& duration, int[]@+ values) bool SetTimeEvent(uint num, uint duration, uint[]@+ values) bool SetTimeEvent(uint num, uint duration, int[]@+ values) Parametr "duration" - time till the event is done in seconds. Return value means that operation is completed, error means that event wasn't found. These functions are thread-safe, 2 thread can't operate with the events simultaneously. Function GetTimeEvent blocks using (changing) of the event until the script is finished or until SetTimeEvent is called, which unblocks the event. GetTimeEvent writes value to the end of the array, SetTimeEvent rewrites it completely. When null is transmitted to values SetTimeEvent values are not changed. - Event function specification can be of two types now: uint e_FuncName(uint[]@ values) uint e_FuncName(int[]@ values) Fixed bug with crashing while loading 3ds file without texture coordinates. Rev.46 http://www2.xp-dev.com/sc/change/94227/46 Added next fuctional for operating with files (class "file"): - for data reading uint8 file::readUint8() uint16 file::readUint16() uint32 file::readUint32() uint64 file::readUint64() In the case of error or the end of file it returns 0. uint file::readData(uint count, uint8[]& data) If data == 0 then program read all data till the end of the file beginning from the current position. Read data is added to the end of the array. The return value shows the real amount of read bytes. - For data recording bool file::writeUint8(uint8 data) bool file::writeUint16(uint16 data) bool file::writeUint32(uint32 data) bool file::writeUint64(uint64 data) bool file::writeData(uint8[]& data, uint count) If count == 0 it records all data from an array. In the case of error it returns false. Fixed bug with incorrect output of zoom value on minimap. Rev.45 http://www2.xp-dev.com/sc/change/94227/45 Extended range of game variables: - local variable of location (LLVAR_); - local variable of map (LMVAR_); - local variable of item (LIVAR_). When using them in dialogue values are taken from: for location - current critter's location; for map - current critter's map; for item - current item in the main slot. For operating with scripts use function GetLocalVar with transmitting of needed operator. Server will delete unused variables of all types automatically. Deleted server function uint DeleteVars(uint id). Dialog editor was adapted to the last updates of game variables. Added ability to define named value (DefineNames.lst) as a value for conditions and results. Added missed translations. Translations of commit history you can find here: http://www.xp-dev.com/forum/topic/3220 Rev.44 http://www2.xp-dev.com/sc/change/94227/44 Updated format of time output in dialogue with repairer-npc; Added script for realization of npc-travellers on global map.(traveller.fos and Davine's script in sf_common.fos); Added npc-traveller explosives-seller Davine. Can be hired in GECK town; Added trade mode "cash only" MODE_BARTER_ONLY_CASH; Fixed bugs in maps structure on maps with holodiscs. Rev.43 http://www2.xp-dev.com/sc/change/94227/43 Added setting in config which defines whether to bind logic threads to the core or let OS do it. In default it is enabled (1) 1. If zero then operating system automatically manage threads between cores, else affinity thread per core LogicThreadSetAffinity=1 Continued work on multi-threading of game logics. Rev.42 http://www2.xp-dev.com/sc/change/94227/42 Fixed crashing under certain conditions; Fixed cycle counting per second. Rev.41 http://www2.xp-dev.com/sc/change/94227/41 Fixed bug connected with the last update. Rev.40 http://www2.xp-dev.com/sc/change/94227/40 Multi-threading of game logics is now supported. You can read about this in details on the forum; Fixed path of recording/reading ban files; Added seconds on the globalmap clock; Decreased permissible length of text listener of channels and maps from 5 to 2 symbols; Deleted global server function void DeleteNpcForce(Critter& npc); Changed specification of method from uint Location::GetMaps(Map@[]& maps) const to uint Location::GetMaps(Map@[]@+ maps) const Now you can know the amount of maps on the location without recording them into array; Added basic server command ~log (~37). It is intended for text listening of server log. Minimum access: administrator. For adding to text listening you should transmit arguement "+", for disconnecting "-"; Fixed basic creating locations command ~addloc (~16); Upgraded basic command of looking player's id using his name ~id (~4); Changed specifications of global functions void critter_attack(Critter& cr, Critter& target, ProtoItem& weapon, ProtoItem@ ammo, uint8 aim) -> void critter_attack(Critter& cr, Critter& target, ProtoItem& weapon, uint8 weaponMode, ProtoItem@ ammo) int to_hit(CritterCl& chosen, CritterCl& target, ProtoItem& weapon, int hitLocation) -> int to_hit(CritterCl& chosen, CritterCl& target, ProtoItem& weapon, uint8 weaponMode); Added variables for weapons which state their active mode const uint8 Item::Mode const uint8 ItemCl::Mode 4 high-order bits - sight (look Hit locations in _defines.fos), 4 low-order bits - mode (0 – primary, 1 – secondary, 2 – third); Added macroses for convenience _WeaponModeUse, _WeaponModeAim, _WeaponModeMake в _macros.fos; Added returnable value of the current mode in method GetSlotProto (urgent for weapons) ProtoItem@+ Critter/CritterCl::GetSlotProto(int slot, uint8& mode) const; Renamed parametr #define ST_RATE_ITEM (102) to #define ST_HANDS_ITEM_AND_MODE (102) value stored in it: XXXX00YY, where XXXX pid - unarmed blow, and YY - mode. Changed way of the dialogue redirecting. You should use returnable value of result function or say-mode instead of uint __ForceDialog; Added specifications of functions: uint r_FuncName(...), uint dlg_FuncName(...) which are detected by server automatically; Fixed bug with moving pushed players only in one direction; Object pointers (derivatives arrays or class members)Location, Map, Critter, Item, GameVar can't be saved in global varities now. For scripts migration save their identificators (Location::Id, Map::Id, Critter::Id, Item::Id), addresing to the objects with (GetLocation, GetMap, GetCritter, GetItem). Weapons prototypes don't save curret mode of fire (in connection with multi-threading). Changed specifications of class members ProtoItem const uint8 Weapon_Skill, const uint8 Weapon_DmgType, const uint8 Weapon_Anim2, const uint16 Weapon_DmgMin, const uint16 Weapon_DmgMax, const uint16 Weapon_MaxDist, const uint16 Weapon_Effect, const uint16 Weapon_Round, const uint8 Weapon_ApCost, const uint8 Weapon_SoundId, const bool Weapon_Remove, const bool Weapon_Aim, const uint8 Weapon_CurrentUse, void Weapon_SetUse(uint8 use) const to const uint16 Weapon_Skill_F, const uint16 Weapon_Skill_S, const uint16 Weapon_Skill_T, const uint16 Weapon_DmgType_F, const uint16 Weapon_DmgType_S, const uint16 Weapon_DmgType_T, const uint16 Weapon_Anim2_F, const uint16 Weapon_Anim2_S, const uint16 Weapon_Anim2_T, const uint16 Weapon_DmgMin_F, const uint16 Weapon_DmgMin_S, const uint16 Weapon_DmgMin_T, const uint16 Weapon_DmgMax_F, const uint16 Weapon_DmgMax_S, const uint16 Weapon_DmgMax_T, const uint16 Weapon_MaxDist_F, const uint16 Weapon_MaxDist_S, const uint16 Weapon_MaxDist_T, const uint16 Weapon_Effect_F, const uint16 Weapon_Effect_S, const uint16 Weapon_Effect_T, const uint16 Weapon_Round_F, const uint16 Weapon_Round_S, const uint16 Weapon_Round_T, const uint16 Weapon_ApCost_F, const uint16 Weapon_ApCost_S, const uint16 Weapon_ApCost_T, const uint8 Weapon_SoundId_F, const uint8 Weapon_SoundId_S, const uint8 Weapon_SoundId_T, const bool Weapon_Remove_F, const bool Weapon_Remove_S, const bool Weapon_Remove_T, const bool Weapon_Aim_F, const bool Weapon_Aim_S, const bool Weapon_Aim_T Added special macros for convenience (Weapon in _macros.fos) _WeaponIsPrimaryAviable, _WeaponIsSecondaryAviable, _WeaponIsThirdAviable, _WeaponSkill, _WeaponDmgType, _WeaponAnim2, _WeaponDmgMin, _WeaponDmgMax, _WeaponMaxDist, _WeaponEffect, _WeaponRound, _WeaponApCost, _WeaponSoundId, _WeaponRemove, _WeaponAim, _WeaponModeUse, _WeaponModeAim, _WeaponModeMake Mapper updates: string@ MapperObject::PicMap/PicInv now return prototype's picturename if other isn't set up; Added const uint16 MapperMap::Width, const uint16 MapperMap::Height for storing current map sizes; Fixed function GetMapFileNames(...). Rev.39 http://www2.xp-dev.com/sc/change/94227/39 Slight fixes of quests in Den, Klamath Improved closed location in Redding Rev.38 http://www2.xp-dev.com/sc/change/94227/38 Slight fixes of quests from string "Guard"; Added services for guardsmen: doc. Troy can heal player; give stimpacks; Valery repairs items; Added universal repairing script for npc (repairer.fos). E.g. in the dialogue vc_valery.foldg 3 new special encounters with holodiscs; Several deleted functions from stdlib are returned. Rev.37 http://www2.xp-dev.com/sc/change/94227/37 Fix of calculating amount of dead NPC on location when necessity of attack is being determinated. Fix of amount loss allies counter when finishing the quest. Output of messages to log is disabled in quest “The drill”. Fix of limit of times amount quest “Dangerous hunt” can be done. Descriptions of deleted maps were returned, which made server restart impossible without saves clearing. Rev.36 http://www2.xp-dev.com/sc/change/94227/36 Fix of Hartman’s dialog. The wrong requirement was deleted. Rev.35 http://www2.xp-dev.com/sc/change/94227/35 New quests from string “Guard” in Vaultcity - Vaultcity guard. Third trial. Drill. - Easy walk. - Go there, don’t know where. - Dangerous hunt. - Diplomatic courier. Fix of caravan’s and patrol’s departure time. Relative departure time was substituted for absolute. Added ability of caravan’s instant departure from the dialog. Fix of items that were generated in encounters 0 in number. (It was impossible to throw out them) Fix of quest “Hub bibliography”. Player need 7 books to gain reputation instead of 6. Rev.34 http://www2.xp-dev.com/sc/change/94227/34 - Maps fixes - Fixed reaction of BG guards on explosives activation Rev.33 http://www2.xp-dev.com/sc/change/94227/33 - Graphics fixes - Non-used files were deleted - Original map of BG was returned Rev.32 http://www2.xp-dev.com/sc/change/94227/32 Private car parking in geck town is disabled till the problem with car boot is solved. Rev.31 http://www2.xp-dev.com/sc/change/94227/31 Added first quests of string “Guardsman”, VaultCity. (Clearing of server saves is needed) Added template for making quests-combats with npc. (fighter_quest.fos, e.g. “Guard. First trial.”) Added ability to take quest “Hub bibliography” again if player failed to finish it at previous time. Fixed incorrect condition in Dappo’s dialogue in quest “Lot of defective rifles”. Added verification of addressee in “Postman” quest, now player can’t bring letter to any npc of type stated in the letter. Rev.30 http://www2.xp-dev.com/sc/change/94227/30 Deleted not used MSG files - FOSCRIPT.MSG. Rev.29 http://www2.xp-dev.com/sc/change/94227/29 Updates of way of making records into log. Added ability to look the name of the thread which made a record. Option in config – LoggingThread. You can also turn on output in the server application using “Logging with thread”. Changed format of time output. Now it is not “time in ms”, but “hours:minutes:seconds:milliseconds”. Rev.28 http://www2.xp-dev.com/sc/change/94227/28 Fix and formatting. Rev.27 http://www2.xp-dev.com/sc/change/94227/27 Fixed mistakes in calculating karma in quest "Returning of the fugitive". Rev.26 http://www2.xp-dev.com/sc/change/94227/26 Changes on Church of Brok and Xander location: - fixed Preacher, Scientist, repairer Alechandro, Cook, Mickey dialogs; - quests work correctly now; - repairer Alechandro identifies items correctly; - ability to record the information about Church was added (after completing Preacher's quest). Rev.25 http://www2.xp-dev.com/sc/change/94227/25 Activating time of dynamite was fixed. Rev.24 http://www2.xp-dev.com/sc/change/94227/24 New algorithm of generating of pseudorandom variables was added (Mersenne twister). Previously was standart C algorythm srand/rand. Rev.23 http://www2.xp-dev.com/sc/change/94227/23 Energy barrier on the entrance of GECK town was improved. Rev.22 http://www2.xp-dev.com/sc/change/94227/22 Fixed client crashing on start. For preventing this bug in future the control system of versions of cashed scripts in the client has been added. Rev.21 http://www2.xp-dev.com/sc/change/94227/21 Fixed problem when it was impossible to add players to GECK town after removing them with option "Clear list". Rev.20 http://www2.xp-dev.com/sc/change/94227/20 Fixed cooldown of the Postman quest. Rev.19 http://www2.xp-dev.com/sc/change/94227/19 Wrongly deleted dialogs are returned. Rev.18 http://www2.xp-dev.com/sc/change/94227/18 Fixes Deleted not used files. Fixed errors when player removes child killer karma additional times. Fixed error with incorrect name of script of map_v15_village map. Added output of message of increasing trade skill when finishing “Farm vermins” quest to the log. Weakened the giant wasp in the quest in Modoc. Rev.17 http://www2.xp-dev.com/sc/change/94227/17 AngelScript was updated to rev.684, v. 2.19.2 Added global variables to the client: bool __ShowTile, __ShowRoof, __ShowItem, __ShowScen, __ShowWall, __ShowCrit, __ShowFast, __ShowPlayerNames, __ShowNpcNames, __ShowCritId. Deleted limit of min. time of using Map::SetLoopTime (it was 1 second). Fixed registration of the global variables of string type (pragma globalvar). Fixed using reserved global variables string type. Added global variables to mapper: string __ClientPath, __ServerPath. Deleted constant modificators in client from string CritterlCl::Name, CritterlCl::Lexems. Added variable CritterlCl::NameOnHead, which if is not empty, outputted above critter’s head. Rev.16 http://www2.xp-dev.com/sc/change/94227/16 Fixed reclearing of child killer status. Rev.15 http://www2.xp-dev.com/sc/change/94227/15 Fixes: - Fixed names of Giant Wasps and bugs in kills statistic; - Reduced requirements of amount of killed mobs and intelligence in Broken Hills quests (bh_marcus.fodlg, bh_super.fodlg); - Reduced requirement of intelligence for “Fresh blood” quest (vc_doctor_troy.foldg); - Fixed possibility of gaining experience multiple times in “Cabbage” quest in Modoc (mod_farmer_q.fodlg); - Player receives reputation in NCR for quest “True cowboy” even if only one Brahmin is brought (ncr_felix.fodlg); - Michael’s miniquest in NCR can be done by every player only once (ncr_michael.fodlg); - Added requirement of 16 level for “buggy” quest (ncr_ratch.fodlg); - Fixed amount of gaining experience when player rejects gratuity in “Postman” quest (q_mail_reciever.fodlg); - Fixed cooldown of “Postman” quest; - Cave mobs – spawn point near the exit grid was removed in the smallest cave; - Fixes of several dialogues in Vault City; - New quest – “Fugitive returning” – when finished, status “Child killer” is removed. Hubbologist in Redding bank offers this quest; - New quest “Farm vermines”. It is offered by Joe in Modoc (mod_joe.fodlg); - Fixed energy barrier in GECK town; - Added computer for breaking of energy barrier inside the town; - Added car lots for GECK town citizens (not more than 2); - Added ability of clearing of citizens list by town leader using the terminal. Rev.14 http://www2.xp-dev.com/sc/change/94227/14 Update for Notepad++ (Syntax_highlighting, autocomplete, function parameters hints) Rev.13 http://www2.xp-dev.com/sc/change/94227/13 First stable version.h3. Your title here...

SidleJinks picture

View View full history