Log in

View Full Version : Working StarShells Possibe ???


reaper7
04-27-10, 08:36 AM
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)

strategy ShipStrategy(Ship)
{
strategies
{
ShipNavigate,
CrewState,
ShipFire,
Commander,
ShipOperations
}
}


I have highlighted ShipFire as this relates to the Ship-weapons.aix and the weapons fired stratagies it uses (StarShells being one of them).

Also we have the Ship-commander.aix script that defines the ship manouver stratagies that are used.

(A Section of code from that Script)

# Commanding ship tactics management
strategy Commander(Ship)
{
precond
{
Ship:IsCommander()
}
strategies
{
#OperationPlasterComm,
OperationSpiralSearchComm,
OperationFollow,
#OperationSinglePlasterComm,
#PineappleComm,
#RaspberryComm,
TerminateOperationComm


I belive this is what tactics the AI Commander will define for each AI ship under its command. You'll notice that only Spiralsearch and Follow are the currently working strategies.
SinglePlaster, Pineapple and Rasberry are disabled here so will never be called in the game :nope:.

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)

#####################################
#
# 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
}
}


Here also we can see that most of the Tactics are disable, the only working one is OperationPlaster. Once Again Pineapple and Raspberry will not happen in game.

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)

#####################################
#
# 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();
}
}


Here I've just shown the relevant bit to do with the Plaster Tactic.
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)

Ship-weapons.aix
################################################## #################################################
#
# Ship weapons:
#
strategy ShipFire(Ship)
{
precond
{
Ship:ContactDetected()
}
strategies
{
DC,
ShipFireStarShells,
Cannons
}
}
strategy ShipFireStarShells(Ship)
{
precond
{
Ship:CanFireStarShells()
}
action
{
Ship:FireStarShells();
}
}


Now here we have the fire controls for the weapon types that each ship carries.


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. :up:

Athlonic
04-27-10, 12:09 PM
Hi,

I tried with adding this :


# throw first round of DCs while passing over the contact
Ship:EnableStarshells(true);
Ship:SetGotoDestRelToContactKeepFormationOrientati on(200);
Ship:StartFiringDCs();
Ship:GotoAction(0, false, 100);
Ship:StopFiringDCs();
Ship:EnableStarshells(false);
Ship:WaitForFormation();


and this :


strategy Role_OP_Directing(Ship)
{
precond
{
Ship:GetRole() == ROLE_DIRECTING
}
action
{
Ship:EnableStarshells(true);
Ship:SetGotoDestRelToContact(-1500);
Ship:GotoAction(0, true, 100);
Ship:FireStarShells();
Ship:WaitAction(15.0);
Ship:EnableStarshells(false);
}
}


But still no starShells in the sky :cry:

Tried with some DD V&W, Elite, late war equiped

Nisgeis
04-27-10, 12:20 PM
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:

strategy ShipFireStarShells(Ship)
{
precond
{
1 or Ship:CanFireStarShells()
}
action
{
Ship:FireStarShells();
}
}In that way, the ships that are capable will all fire star shells as soon as you are detected. They will fire them repeatedly (after they have reloaded) even during the day time. If you want a bit more control, then you'll need to decide what conditions you want them to fire starshells (like whether it's night time and whether they need to) and script that in (replace the 1).

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.

reaper7
04-27-10, 12:54 PM
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:

In that way, the ships that are capable will all fire star shells as soon as you are detected. They will fire them repeatedly (after they have reloaded) even during the day time. If you want a bit more control, then you'll need to decide what conditions you want them to fire starshells (like whether it's night time and whether they need to) and script that in (replace the 1).

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.


Nice :yeah:. Thanks for reply.

could we do something like:



strategy ShipFireStarShells(Ship)
{
precond
{
!Ship:IsDay() or Ship:CanFireStarShells()
}
action
{
Ship:FireStarShells();
}

Nisgeis
04-27-10, 01:01 PM
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.

TheDarkWraith
04-27-10, 01:02 PM
add a variable count. After they fired count shells disable it :03:

or even a counter in a counter to limit the speed they can fire them at

Pintea
04-28-10, 04:30 AM
Perhaps you should update the starshell effect in the fx file.

The General
04-28-10, 05:23 AM
Perhaps you should update the starshell effect in the fx file.Thanks Pintea :up:

Redtail
05-19-10, 12:51 AM
The General, How is the work on the star shells going? The threads the other day seemed quite hopeful:) Nothing seems to have changed after 1.2,but I dont think we were expecting it to!

walsh2509
05-19-10, 07:11 AM
Was reading the book The Battle Of The Atlantic , in part of it was parts of Kretschmer war dairy and in it descibing a convoy attack he was saying that in a moon lit night the use of Starshells by british escorts were all but useless.

icecold
05-19-10, 07:20 AM
Was reading the book The Battle Of The Atlantic , in part of it was parts of Kretschmer war dairy and in it descibing a convoy attack he was saying that in a moon lit night the use of Starshells by british escorts were all but useless.


Ok is there someway of linking the script to certain skyboxes, so they use them when the moon/sun/storm function/script/materials/skybox is not on.

Im not sure how this game uses the moon effects, is the moon part of the skybox or does it have its own scripting/materials?


Get that linked, add it to the tactics and restrict how many fired and you got yourself a winner :)

wamphyri
05-20-10, 01:20 PM
Did anyone actually try putting star shells into the inventory of any of the guns? By default I don't believe any of the guns have star shells equipped.

Nisgeis
05-20-10, 01:40 PM
They will fire star shells if you tell them to, so the guns must have them available.

Hartmann
05-20-10, 04:18 PM
operation plaster was one tactics used by jonh Walker, similar to a carpet bombing but with depth charges :hmmm:

With the time shV is showing his huge modding potential but still there are a lot of things to improve by ubi

ingsoc84
05-22-10, 01:23 AM
Starshells woulde be AWESOME , hope someone will do them!

The General
05-22-10, 04:18 AM
To get them working in SH5 go here:

C:\Ubisoft\Silent Hunter 5\data\Scripts\AI

Open this:

Ship-Weapons.aix with Wordpad.

At the bottom find this:

strategy ShipFireStarShells(Ship)
{
precond
{
1 or Ship:CanFireStarShells()
}
action
{
Ship:FireStarShells();
}


Add what's in red (1 or) to the script, save it and the enemy will now fire Starshells :up:

If you meant how do we get Starshells for the Sub, sorry I don't know that :03:.

reaper7
05-22-10, 06:55 AM
To get them working in SH5 go here:

C:\Ubisoft\Silent Hunter 5\data\Scripts\AI

Open this:

Ship-Weapons.aix with Wordpad.

At the bottom find this:

strategy ShipFireStarShells(Ship)
{
precond
{
1 or Ship:CanFireStarShells()
}
action
{
Ship:FireStarShells();
}


Add what's in red (1 or) to the script, save it and the enemy will now fire Starshells :up:

If you meant how do we get Starshells for the Sub, sorry I don't know that :03:.


Cheers, will they keep firing untill out or just fire one :06:.

Nisgeis
05-22-10, 11:50 AM
Cheers, will they keep firing untill out or just fire one :06:.
See post #3

reaper7
05-22-10, 12:15 PM
See post #3

:oops:.. Doh should have looked back on the thread. Cheers :up:.

Redtail
01-28-11, 05:28 PM
Did we ever get to the bottom of the star shell problem:hmmm:
perhaps TDW you could work your magic on this one.Unless Nisgeis has been able to sort something with it;) unless I have missed something here:DL I think this thread left the door slightly ajar on the subject.

TheDarkWraith
01-28-11, 05:38 PM
FX Update mod ;)

Which reminds me I have to add these things to the remaining ships.

Redtail
01-28-11, 05:45 PM
Didn't I see you as part of the American Circus.One of those brightly dressed juggler folk:03: Well done TDW.:yeah: