![]() |
SUBSIM: The Web's #1 resource for all submarine & naval simulations since 1997 |
|
![]() |
#1 |
sim2reality
![]() Join Date: Jun 2007
Location: AM 82
Posts: 2,280
Downloads: 258
Uploads: 30
|
![]()
Following a thread on the Main Forum regarding if Starshells are in the Game. I did a bit of digging through the AI Scripts and have spotted a few interesting bits.
All the scripts are located @ C:\Ubisoft\Silent Hunter 5\data\Scripts\AI The first script regarding Ship AI Strategy is: Ship.aix Most of the script is disabled bar a few lines at the bottom which define the basic ship strategies (A Section of code from that Script) Code:
strategy ShipStrategy(Ship) { strategies { ShipNavigate, CrewState, ShipFire, Commander, ShipOperations } } Also we have the Ship-commander.aix script that defines the ship manouver stratagies that are used. (A Section of code from that Script) Code:
# Commanding ship tactics management strategy Commander(Ship) { precond { Ship:IsCommander() } strategies { #OperationPlasterComm, OperationSpiralSearchComm, OperationFollow, #OperationSinglePlasterComm, #PineappleComm, #RaspberryComm, TerminateOperationComm SinglePlaster, Pineapple and Rasberry are disabled here so will never be called in the game ![]() The next script appears to control AI ships that do not have an AI commander (Single ships etc) Ship-tactics.aix (A Section of code from that Script) Code:
##################################### # # Ship Tactics: # # This is work-in-progress; Operation Plaster, OperationSpiralSearch and OperationSinglePlaster are the only tactics implemented # ### Ship Operations strategy ShipOperations(Ship) { strategies { OperationPlaster #, # OperationPineapple, # OperationRaspberry } } There is also the Ship-navigation.aix script appears to be the script for defineing tha tactics employed by the AI ships (A Section of code from that Script) Code:
##################################### # # Ship navigation: # strategy EscortNavigate(Ship) { precond { Ship:IsType(ESCORT) } strategies { ShipFollow, ShipSpiral, ShipPlaster } strategy ShipSpiral(Ship) { precond { Ship:ContactDetected() and Ship:GetRole() == ROLE_SPIRAL and Ship:ContactPresenceIs(PRESENCE_LOOSING, 0) and Ship:GetContactLostTime() > CRITICAL_LOST_TIME } action { Ship:SetGotoDestRelToContact(50); Ship:GotoAction(0, false, 700); Ship:Spiral(0.3, 3700.0, 40.0, 5.0); #time is in seconds Ship:EndCurrentTactic(); } } } strategy ShipPlaster(Ship) { precond { Ship:GetRole() == ROLE_SINGLE_PLASTER and Ship:ContactDetected() and Ship:ContactPresenceIs(PRESENCE_SENSORS, 0) and Ship:GetContactSpeed() <= 3 and Ship:GetContactDepth() < -5.0 } action { Ship:SetGotoDestRelToContact(-250); Ship:GotoAction(0, false, 100); # throw first round of DCs while passing over the contact Ship:SetGotoDestRelToContact(200); Ship:StartFiringDCs(); Ship:GotoAction(0, false, 100); Ship:StopFiringDCs(); # throw second round of DCs on the way back Ship:SetGotoDestRelToContact(200); Ship:StartFiringDCs(); Ship:GotoAction(0, false, 100); Ship:StopFiringDCs(); Ship:EndCurrentTactic(); } } this script sets up the tactics that each ship type use for each stratagy Here an Escort is following the Ship Plaster, the command when it passes over it a the subs position is StartFiringDCs() to fire depthcharges. Which leads us on to the last script Ship-weapons.aix (A Section of code from that Script) Code:
Ship-weapons.aix ################################################################################################### # # Ship weapons: # strategy ShipFire(Ship) { precond { Ship:ContactDetected() } strategies { DC, ShipFireStarShells, Cannons } } strategy ShipFireStarShells(Ship) { precond { Ship:CanFireStarShells() } action { Ship:FireStarShells(); } } Going through all the scripts its my opinion that the only Tactic that calls for the StarShells to be Fired is the OperationPineapple Strategy whish is disabled in the scripts above. I have been unable to test this at the moment and maybe this info will be of use to someone wishing to implement the StarShells in game. It may only be a matter of removing the # in fornt of the bits in scripts to get the Pineapple tactic working in-game, or even to script in the FireStarShells() command into the ShipSpiral(Ship) part of the scripts or even the evasive manover and zigzag Tactics so at least the Starshells are fired when a contact is made. ![]() |
![]() |
![]() |
![]() |
#2 | ||
Chief
![]() Join Date: Apr 2005
Location: France
Posts: 311
Downloads: 51
Uploads: 2
|
![]()
Hi,
I tried with adding this : Quote:
Quote:
![]() Tried with some DD V&W, Elite, late war equiped
__________________
________________________ Gimme tons of patches ! Athlonic's MCCD "More Crew Commands by Dialog" MOD for Silent Hunter 5 Version 1.04 SH5 1.2.0 Ready Athlonic's TSAF Mod : Torpedo_Speed_Abilitie_Fix_for_TDC ![]() |
||
![]() |
![]() |
![]() |
#3 | |
Ocean Warrior
![]() Join Date: Jan 2008
Posts: 2,909
Downloads: 77
Uploads: 11
|
![]()
If you want to see starshells when you are detected, then add in '1 or' to the precond of Ship:CanFireStarShells(), so that it becomes:
Quote:
CanFireStarShells() comes from the game engine as to whether or not it is the right conditions to fire. They do fire in stock, according to one reply in that thread. I will be developing the star shells further, as they are an essential part of Operation Pineapple and some early war tactics.
__________________
-------------------------------- This space left intentionally blank. |
|
![]() |
![]() |
![]() |
#4 | |
sim2reality
![]() Join Date: Jun 2007
Location: AM 82
Posts: 2,280
Downloads: 258
Uploads: 30
|
![]() Quote:
Nice ![]() could we do something like: Code:
strategy ShipFireStarShells(Ship) { precond { !Ship:IsDay() or Ship:CanFireStarShells() } action { Ship:FireStarShells(); } |
|
![]() |
![]() |
![]() |
#5 |
Ocean Warrior
![]() Join Date: Jan 2008
Posts: 2,909
Downloads: 77
Uploads: 11
|
![]()
If you took out the 1, yeah. But they'd still be firing starshells all the time. You'd need a wait command in there at least, or they'd run out of star shells pretty quick.
__________________
-------------------------------- This space left intentionally blank. |
![]() |
![]() |
![]() |
#6 |
Black Magic
![]() |
![]()
add a variable count. After they fired count shells disable it
![]() or even a counter in a counter to limit the speed they can fire them at |
![]() |
![]() |
![]() |
|
|