# Mapfact Oil-Addon

### by Flashpoint_K

### Visit WWW.MAPFACT.NET

##

Content

###

- General
- Features
- Change log
- The Models
- The Scripts
- Animations
- Credits
- Disclaimer

##

General

Some time ago I recognized a program with the funny name OČ, which, I heard so, is required to make 3D models for OFP. Passing several attempts in modeling, I read some tutorials by brsseb - the new knowledge became quite useful.
For my next mission I needed certain objects like walkable pipelines and a few oil pumps for the atmosphere, also a harbour which I could adapt to my imagination as well as a tanker.
This was the basic idea from which the Oil-Addon (OA) developed to what it is now.
While looking for an alternative to implement the pipelines without using a "keep height" variant, I made some tests with animated pipes and I decided to use this method for the pipes in my addon. Obviously I did not and do not know all upcoming problems by using this method, but I think in the end it's a useful alternative to build pipelines also on more steep positions on the map, without causing contortions on the model.
For island makers (and all the others, too) there is at least the 20m Pipeline as "keep-height" variant included, you should only make sure that the terrain you want to build the pipe on is quite flat. An instruction to set up the pipes "by hand" will be found in the scripts part.
I will be open for any suggestions, which could be implemented in a possible OA2.
So, I wrote enough now, have much fun with the addon!

##

Oil-Addon features

- Completely MP compatible
- Two different types of pipeline, both walkable
- Quick and easy building of pipelines using a script
- Animated oil pumps with randomly played sounds
- Burning oil well which has its own sound and performance adoption
- Easy usage of the animations and features thanks to functions and scripts
- Fully animated and walkable harbour crane
- Best possible compatibility of the objects with WrpTool and the editor
- Nearly every object can be used or influenced by the player
- Oil tanks and Oil turret with additional explosions
- Walkable tankers, depending on the version with dinghies which can be landed on water and MG. Warning sound when damaged and an integrated ship horn.

##

Change log

Changes on OA1 from v1.00 to v1.01:

- fixed all four ship models
- fixed craneControl.sqs
- fixed icon for static ships
- fixed sound after watering speedboats is only played once now
- added variable "MAP_OA_noReanimShip"
- improved textures of speedboat

##

The Models

Here you find a list with all objects included, and its names and features. You can find them in the editor under "Mapfact OA: Objects" or "Mapfact OA: Vehicles" on Empty, Resistance or Civilian side.

Editor | Config | Features
Fences and attachments
Wooden fence 9m | MAP_WoodFence_9m | -
Barbed-wire fence 9m | MAP_Fence_9m | -
Barbed-wire fence corner | MAP_Fence_9m_Corner | -
Warning sign | MAP_Warnschild | -
Harbour objects
Harbour-crane | MAP_Crane | Door, Turning, Lift/Lower of the magnet
Dock #1 | MAP_Dock1 | -
Dock #1 (40m) | MAP_Dock1_40m | -
Dock #2 | MAP_Dock2 | -
Dock #2 (40m) | MAP_Dock2_40m | -
Dock #3 | MAP_Dock3 | -
Dock with trainjard | MAP_Dock4 | -
Dock with rails #1 | MAP_Dock5 | -
Dock with rails #2 | MAP_Dock6 | -
Dock with rails #3 | MAP_Dock7 | -
Container (green) | MAP_Container | ladders
Container (red) | MAP_Container2 | ladders
Container (red, doors) | MAP_Container3 | walkable, animated, ladders
Container (stapled) | MAP_ContainerS | ladders
Stored Pipelines | MAP_Pipelines_Stored | walkable
Stored 20m Pipelines | MAP_PLine_Big_Stored | -
Crate #1 | MAP_Kiste1 | -
Crate #2 | MAP_Kiste2 | -
Crate #3 | MAP_Kiste3 | -
Cable drum | MAP_Kabeltrommel | -
Train buffer | MAP_Rammbock | -
Gangway | MAP_Gangway | animated
Oil objects
Oil pump #1 | MAP_OilPump1 | animated and sound (via useraction or script)
Oil pump #1 (on) | MAP_OilPump1_on | animated and sound (from beginning)
Oil pump #2 | MAP_OilPump3 | animated and sound (via useraction or script)
Oil pump #2 (on) | MAP_OilPump3_on | animated and sound (from beginning)
Oil pump (out of order) | MAP_OilPump2 | -
Oil pump (out of order #2) | MAP_OilPump2v | -
Oil turret | MAP_OilTurret | Climbable
Oil turret (burning) | MAP_OilTurret_Burning | climbable, burning
Pipeline 16m (walkable) | MAP_Pipeline_16m | walkable, animated
Pipeline 16m (destroyed #1) | MAP_Pipeline_16m_Broken | walkable, can be used as entrance, animated
Pipeline 16m (destroyed #2) | MAP_PLine_16m_Broken2 | walkable, animated
Pipeline 16m end | MAP_Pipeline_16m_End | -
Pipeline 16m entrance | MAP_Pipeline_Entrance | climbable, animated, useraction
Pipeline 20m /("Keep Height") | MAP_Pipeline_20m /_kh | animated / "keep-height"
Pipeline 20m (walkable) /(walkable, "keep height") | MAP_Pipeline_20m_WK /_kh | walkable; animated / "keep-height"
Pipeline 20m (destroyed) /(destroyed, "Keep Height") | MAP_PLine_Big_Broken /_kh | animated / "keep-height", smoking
Pipeline 20m (destroyed, walkable) /(destroyed, walkable, "k.h.") | MAP_PLine_Big_Broken_WK /_kh | walkable; animated / "keep-height", smoking
Pipeline 20m End | MAP_Pipeline_20m_End /_kh | animated / "keep-height"
Pipeline 20m End ("For Walkable") | MAP_Pipeline_20m_End_WK | animated
Pipeline 20m End ("K.H. , for walkable") | MAP_Pipeline_20m_End_WK_kh | "keep-height"
Pipeline 20m (Above road) /(Above road, "keep height") | MAP_Pipeline20mStrCross_kh | animated / "keep-height"
Pipeline 20m (Above road, walkable) | MAP_Pipeline20mStrCross_WK | walkable; animated
Pipeline 20m (Above road, walkable, "k.h.") | MAP_Pipeline20mStrCross_WK_kh | walkable; "keep-height"
Pipeline 20m (45° right) | MAP_PLine_Big_curve_r | 45° bend to the right
Pipeline 20m (45° left) | MAP_PLine_Big_curve_l | 45° bend to the left
Pipeline 20m (45° right, walkable) | MAP_PLine_Big_curve_r_WK | Walkable 45° bend to the right
Pipeline 20m (45° left, walkable) | MAP_PLine_Big_curve_l_WK | Walkable 45° bend to the left
Pipeline 20m Entrance | MAP_Pipeline20m_Entrance | animated
Oil tank small (orange) | MAP_OilTank_Small | climbable, small explosion
Oil tank small (blue) | MAP_OilTank_Small2 | climbable, small explosion
Oil tank medium | MAP_OilTank_Medium | climbable, explosion effect
Oil tank big | MAP_OilTank_Big | Climbable, explosion effect
Oil tank big (twin) | MAP_OilTank_Twin | climbable, explosion effect
Oil well | MAP_OilWell | burning and smoking ;-) (via script)
Oil well (burning) | MAP_OilWell_Burning | burning and smoking ;-) (from beginning)
Building-site | MAP_buildingSite | Small building-site at an oil pump
Shelves | MAP_ScrapW | Shelves lying around
Scrap (mixed) | MAP_Scrap | mixed Scrap lying around
Scrap (metal) | MAP_ScrapM | metal poles lying around
Spill #1 | MAP_Spill1 | -
Spill #2 | MAP_Spill2 | -
Spill #3 | MAP_Spill3 | -
Spill #4 | MAP_Spill4 | -
Spill #5 | MAP_Spill5 | -
Water vehicles
Oil tanker | MAP_Tankship | walkable, ladders, animated, Sounds
Oil tanker (smuggler version) | MAP_SmugglerShip | walkable, ladders, animated, MG, dinghy, sounds
Speedboat (smuggler version) | MAP_SmugglerBoat | 7.42mm machine gun
Oil tanker | MAP_Tankship_static | walkable, ladders, animated, more performancefriendly, Sounds
Oil tanker (smuggler version) | MAP_SmugglerShip_static | walkable, ladders, animated, MG, dinghy, more performancefriendly, sounds

Tipp: Sometimes the oil tanker causes lag when it is close to other objects.
If you want to use the oil ship for "eye candy" only, use the "static-version".
If you want to make the ship useable later on, use a simple replacement-script to substitute the static one with the driveable one.

##

The Scripts

All scripts are in the pbo "MAP_OilAddon_script". So they are called with ....... exec "\MAP_OilAddon_script\........ .sqs"
Pipebuilder.sqs ---- Example included
The Pipebuilder.sqs can be used to build the pipelines. To fit these to the terrain, the pipelines will be animated (except they are "keep-height") by the script (standard is that the pipes are facing upwards)
A second script is started automatically by the Pipebuilder.sqs and re-animates the pipelines after the game was reloaded, because OFP doesn't save the animation status itself. Due to the reason that both scripts are looped, delays can appear. They depend on the length of the Pipeline. If you call the script with the wrong parameters, it is possible, that hints will show you what was wrong. After wrong input, the standard OFP errors can appear.
Here is an exact explanation how to start the script:
Example:
[Name,1500,0,[[curve1],[curve2],...],[[object1],[object2],...],1,2] exec "\MAP_OilAddon_script\Pipebuilder.sqs"
Explanation:
Name: Has to be a pipeline-object. This is the reference for the script what type of pipeline it has to build. Easily give a name to the object and use this, or write directly in the init of the object [this,.....]
Could be everything except:
"Pipeline 20m (Above road)"
"Pipeline 20m (Above road, "keep height")"
"Pipeline 20m (Above road, walkable)"
"Pipeline 20m (Above road, walkable, "k.h.")"
"Pipeline 16m Entrance"
There are 3 different possibilities of pipelines the script is able to build.
If your start object is one of the animated ones, your whole pipe will consist of animated pieces.
If your start object is one of the "keep-height" pieces you have two more possibilities:
1) You will get a pipe which only consists of "keep-height" pieces, also at very steep positions!
Remember that the models will be contorted!
2) Your start object is also one of the "keep-height" pieces, but you put the text "mixed" at the last position in the array. In the example above this would be "[....,1,2,"mixed]" exec.
This will force the script to build "keep-height" pieces, but only at positions that are less steep than 5° at 20m (A difference of about 1.7m). At positions which are steeper than those 5° the script will build animated pieces.
Note: The length of the pipe will vary a little when you change to one of these possibilities. The pros and cons of these methods are:
Only animated pieces:
- There can be problems after destroying the pieces with the animation
- After reloading the mission, the pipes have to be animated again. This can be noticed.
Only "keep-height":
- The models are contorted at steep positions
- The models are contorted at steep positions
- The segments fit together well
- There are no Problems with reloading or destroying.
"Mixed"-Method:
- This method has the pros and cons of the other methods
- The changes from the animated to the "keep-height"-pieces are visible.
1500: Tells the script how long the pipe should get, in meters.
0: 0° or 180° from the start position, that means two scripts can be started from the same start-object, which then will build two pipes in different directions. Of course that makes only sometimes a sense.
Curves: To make a curve you need the following: [when in meters, direction in degrees relative to the last segment, sharpness] for example [200,-50,0.4]. This makes a curve with the sharpness of 0.4 (1 is maximum) after 200m to the left. Curves can only be build with the 20m pipe (see also the objects part)
If you don't want to have curves, leave the array empty.
Objects: Are depending on the type of pipe you are building, these combinations are possible:
Pipe 16m, everything except:
"MAP_Pipeline_16m" , "MAP_Pipeline_16m_End"
Pipe 20m, everything except:
"MAP_Pipeline_20m" , "MAP_Pipeline_20m_kh" , "MAP_Pipeline_20m_WK" , "MAP_Pipeline_20m_WK_kh" , "MAP_Pipeline_20m_End" , "MAP_Pipeline_20m_End_kh" , "MAP_Pipeline_20m_End_WK" , "MAP_Pipeline_20m_End_WK_kh"
this function is called like this: [400,"Object"] => will build the object after 400m. If you want to have an entrance, you have also the possibility (only when building the 16m pipe) to let the pipe make a bend at this position, so that you can build "curves" also with the 16m pipes: [500,"MAP_Pipeline_Entrance",16] => will build an entrance at which the pipe will make a 16° bend to the right. Maximum is 30°.
If you don't want to have objects in your pipe, leave the array empty.
1: Tells the script to finish the pipe with the Pipe_xxm_end object, but only if you type in a number different to 0. That means only a 0 will make no ending.
2: Tells the script which delay to use (in s) for the "guarding"-script, which checks if the pipes have to be animated again after mission was reloaded.
Minimum is 0. Numbers smaller than 0 are not permitted.
Standard is a delay of 1s is used. To this delay your input will be added. The reason for that option is, that the mapper can adapt the loop to the performance of, e.g. a mission.

The script will write all built objects in an array and saves this in the variable MAP_OA_PbObjects. So you have the possibility to choose an object from this array to, e.g. animate it etc.

Summary of important functions

Call | Function
Name call MAP_oa_turretOn Name call MAP_oa_turretOff | Lights the fire above the oil turret or puts it out.
Name call MAP_oa_wellOn Name call Map_oa_wellOff | Lights the fire of the oil-well or puts it out.
Name call MAP_oa_pumpOn Name call MAP_oa_pumpOff | switches the pump on/off
Important for all functions: Call them 1s or later after the start of the map or errors will occur probably!

Variables
To disable all effects (most of the animations, smoke, fire, most sounds, additional explosions) set the variable MAP_OA_FX=false.
The oil pumps are disabled in mp because of the performance. To get them to work otherwise set the variable MAP_OA_MPPumpAnim=true.
How strong the oil well smokes depends on the performance of the pc system. By using the variable MAP_OA_Smoke this can also be set directly: The value 0 (MAP_OA_Smoke=0) disables the smoke completely. The value 1 makes it smoke calmly. If it has the value 4 it smokes most strongly (only whole figures).
MAP_OA_noReanimShip
Set this variable true, if you don't want the reanimation script to keep the boats hidden after watering them. You can use this for example to put the speedboats back at the main ship by using the animation an this variable.

Summary of some important scripts:

Name of the script | Task and explanation
BoatsDown.sqs | Drops the dinghies into the water. Can be executed over the action-menu of the ship. If you want to start it directly write this: [name,"Right or Left"] exec
Crane.sqs | Opens the door of the crane and will close it automatically after 8 seconds. You can start it over action menu or by using [Name] exec
MAP_OA_20mEntr.sqs | Opens/Closes the doors of the entrance. You can start it over action menu or by using Name exec
ShipHorn.sqs | Fires the horn. You can start it over action menu or by using Name exec
CraneContr.sqs | Controls the rest of the crane animations. Start it with: [Name, Direction in degrees relative to the crane direction, Up/Down of the magnet in m relative to the "0 position"] exec (Example included)
Pipebuilder.sqs | Is used to build the pipelines. Explanations see above.

Important!
Only with white colour marked scripts are allowed to be started by the mission maker. The others may cause errors if you do so!

##

Animations

Summary of all animated objects

OA Harbour-crane | a_rotateR => Turns the legs of the crane 360° ani_UpDown => Up/Down of the magnet a_door => Open/Close the door
OA Oil pump #1 | Haupt_Anim => Moves the "Head" of the pump Antr_Anim => Animates the momentum-wheel Rad1_Anim , Rad2_Anim , Rad3_Anim => Animates the other wheels
OA Oil pump #2 | Like Pump #1, but Rad2/3_Anim are not used here
All Pipeline segments except Pipe_16m/20m_end | Ani_Hrz => Turns the segments 180°
OA Pipeline Entrance | ani_Deckel => Open/Close the entrance
Pipeline 20m Entrance | ani_O_Door; Opens/Closes the outer door ani_I_Door; Opens/Closes the inner door ani_Geo_Door; Opens/Closes the door in the geo-lod, important!
Gangway | ani_fitHgt; Lifts/Lowers the gangway about 30°
Container (red, doors) | ani_DoorR/L; Opens/Closes the right/left door of the container
OA Oil ship | ani_door01-06 => Open/Close the doors ani_Klappe => Open/Close the door on the roof
OA Oil ship smuggler version | ani_door01-06 => Open/Close the doors ani_Klappe => Open/Close the door on the roof aniHideR/L => Hides the dinghies inside the ship

Important: Due to the reason that some objects are animated by scripts, a direct execution of the anims will probably cause an error!

##

Credits

First I want to say thanks to those peoples who wrote o2 tutorials ;-)
Then those peoples who were directly involved in the development of the OA:
raedor: config, all MAP_x scripts, revising and optimising all scripts for a good performance and MP compatibility, functions, betatesting
Sniping-Jack: some texture- & soundediting, technical support and ideas, betatesting
And the other betatesters:
BadAss
Chneemann
Medicus
Sky
And last but not least all people who had answers for my questions or helped me in any other way ;-)

Thanks!

##

Disclaimer

This is an unofficial addon for Operation Flashpoint © Bohemia Interactive Studio.
Use it on your own risk.
Mapfact Oil-Addon © Flashpoint_K. If you have questions about the addon or anything else, write an e-mail to Flashpoint_K@web.de or post in the Mapfact forum in the thread for this addon.