SUBSIM Radio Room Forums



SUBSIM: The Web's #1 resource for all submarine & naval simulations since 1997

Go Back   SUBSIM Radio Room Forums > Silent Hunter 3 - 4 - 5 > SH5 Mods Workshop
Forget password? Reset here

Reply
 
Thread Tools Display Modes
Old 02-29-16, 07:02 PM   #121
gap
Navy Seal
 
Join Date: Jan 2011
Location: CJ8937
Posts: 8,215
Downloads: 793
Uploads: 10
Default

@ Vecko

I think I have pretty much figured out crew aix scripts. Let me know If you need for any help in tweaking them.

I think it would be a good idea getting both gunners in QR1 (light FlaK gunners in stock game) to man one of the quad 20 mm FlaKs, one of them for elevation and the other for traverse, and the two degkgun gunners in QR2 to man the other quad gun. In order to do so we don't need to change bone names. The same gunner can be used to man guns in different slots, as far as a new strategy for each new slot is added to its script, and if/then routines are set conveniently for avoiding any possible conflict (i.e. the a gunner wanting to man two guns at the same time.
__________________
_____________________
|May the Force be with you!|
...\/
gap is offline   Reply With Quote
Old 03-01-16, 08:45 AM   #122
gap
Navy Seal
 
Join Date: Jan 2011
Location: CJ8937
Posts: 8,215
Downloads: 793
Uploads: 10
Default U-FlaK's crew script updates

In case you need for them

White body text: TwOS/MFCM's code; orange strings: code added/modified by me.

Gunner: QRF_PETTY01 in QR1 (role: A01 FlaKVierling traverse)

Code:
strategy QRF_PETTY01_IDLE01(wp)
{
	strategies
	{
		QRF_PETTY01_Sleeping,
		QRF_PETTY01_Manning_A01gun
	}
}

strategy QRF_PETTY01_Sleeping(wp)
{
	precond
	{
		!Wp:IsGunManned(SLOT_A01)
	}
	action
	{
############## Uncomment for optional beard ######################
		# Wp:SetBodyPartVisibility("object1_Barba_Cap06", 1);
##################################################################
	

		Wp:SetBodyPartVisibility("A_Hat01", 0); 
		Wp:SetBodyPartVisibility("A_Pants01", 1); 
		Wp:SetBodyPartVisibility("A_Pants02", 0);

		if (Wp:GetGunType(SLOT_A01) == CANNON_Vierling) then
			Wp:UnmanTheGun(SLOT_A01, ROLE_TRAV)
		endif;
		if (Wp:GetGunType(SLOT_A01) != CANNON_Vierling) then
			Wp:UnmanTheGun(SLOT_A01, ROLE_GUNNER)
		endif;
		Wp:Teleport("QRF_Petty_01");
		Wp:PlayAnimationAndWait( "QRF_Petty_01_sleep01" );
		Wp:PlayAnimationAndWait( "QRF_Petty_01_sleep01" );
		Wp:PlayAnimationAndWait( "QRF_Petty_01_talk_01" );
		Wp:PlayAnimationAndWait( "QRF_Petty_01_sleep01" );
		Wp:PlayAnimationAndWait( "QRF_Petty_01_1to2" );
		Wp:PlayAnimationAndWait( "QRF_Petty_01_sleep02" );
		Wp:PlayAnimationAndWait( "QRF_Petty_01_sleep02" );
		Wp:PlayAnimationAndWait( "QRF_Petty_01_sleep02" );
		Wp:PlayAnimationAndWait( "QRF_Petty_01_2to1" );
		Wp:PlayAnimationAndWait( "QRF_Petty_01_sleep01" );
		Wp:PlayAnimationAndWait( "QRF_Petty_01_sleep01" );
		Wp:PlayAnimationAndWait( "QRF_Petty_01_sleep01" );
		Wp:PlayAnimationAndWait( "QRF_Petty_01_talk_01" );
		Wp:PlayAnimationAndWait( "QRF_Petty01_AtoC" );
		Wp:PlayAnimationAndWait( "QRF_Petty01_idle01" );
		Wp:PlayAnimationAndWait( "QRF_Petty01_idle04" );
		Wp:PlayAnimationAndWait( "QRF_Petty01_idle05" );
		Wp:PlayAnimationAndWait( "QRF_Petty01_idle02_part01" );
		Wp:SetBodyPartVisibility("object2_book01", 1);
		Wp:PlayAnimationAndWait( "QRF_Petty01_idle02_part02" );
		Wp:PlayAnimationAndWait( "QRF_Petty01_idle03_part01" );
		Wp:SetBodyPartVisibility("object2_book01", 0);
		Wp:PlayAnimationAndWait( "QRF_Petty01_idle03_part02" );
		Wp:PlayAnimationAndWait( "QRF_Petty01_CtoA" );

		Wp:ScriptCompleted();
	}
}

strategy QRF_PETTY01_Manning_A01gun(wp)
{
	precond
	{
		Wp:IsGunManned(SLOT_A01)
	}
	action
	{
		Wp:SetBodyPartVisibility("A_Hat01", 1); 
		Wp:SetBodyPartVisibility("A_Pants01", 1); 
		Wp:SetBodyPartVisibility("A_Pants02", 0);

		
		Wp:PlayAnimationAndWait( "QRF_Petty01_leave_rush" );
		Wp:Teleport("WP_A01_GUN");
		if (Wp:GetGunType(SLOT_A01) == CANNON_Vierling) then
			Wp:ManTheGun(SLOT_A01, "Vierling_L_R", ROLE_TRAV)
		endif;
		if (Wp:GetGunType(SLOT_A01) == CANNON_20mm_C30) then
			Wp:ManTheGun(SLOT_A01, "20mm_C30_UP_DW", ROLE_GUNNER)
		endif;
		if (Wp:GetGunType(SLOT_A01) == CANNON_20mm_C30_2) then
			Wp:ManTheGun(SLOT_A01, "20mm_C30_2_UP_DW", ROLE_GUNNER)
		endif;
		if (Wp:GetGunType(SLOT_A01) == CANNON_20mm_C38_Twin) then
			Wp:ManTheGun(SLOT_A01, "20mm_C38_twin_UP_DW", ROLE_GUNNER)
		endif;
		if (Wp:GetGunType(SLOT_A01) == CANNON_20mm_C38_Twin_Shield) then
			Wp:ManTheGun(SLOT_A01, "20mm_C38_shield_twin_UP_DW", ROLE_GUNNER)
		endif;
		Wp:ScriptCompleted();
	}
}

Gunner: QRF_PETTY02 in QR1 (role: A01 FlaKVierling elevation)

Code:
strategy QRF_PETTY02_IDLE01(wp)
{
	strategies
	{
		QRF_PETTY02_Tutorial,
		QRF_PETTY02_Sleeping,
		QRF_PETTY02_Manning_A01gun,	
		QRF_PETTY02_Manning_A02gun		
	}
}

strategy QRF_PETTY02_Tutorial(wp)
{
	precond
	{
		Wp:IsTutorial() and !Wp:IsBunkerState()
	}
	action
	{
		Wp:Teleport( "QRF_Watch" );
		if Wp:GetGlobalVariable(TUT_VAR_QRF_PETTY02_STATE) == 0 then
		{
			Wp:PlayAnimationAndWait("SAILOR02_Walk_near_player");
			Wp:SetGlobalVariable(TUT_VAR_QRF_PETTY02_STATE, 1);
		}
		endif;
		if Wp:GetGlobalVariable(TUT_VAR_QRF_PETTY02_STATE) == 1 then
			Wp:PlayAnimationAndWait("SAILOR02_Wait_near_door")
		endif;
		Wp:ScriptCompleted();
	}
}

strategy QRF_PETTY02_Sleeping(wp)
{
	precond
	{
		!((Wp:GetGunType(SLOT_A01) == CANNON_Vierling and Wp:IsGunManned(SLOT_A01)) or (Wp:GetGunType(SLOT_A01) != CANNON_Vierling and Wp:IsGunManned(SLOT_A02))) and !(Wp:IsTutorial() and !Wp:IsBunkerState())
	}
	action
	{
############## Uncomment for optional beard #####################
		# Wp:SetBodyPartVisibility("object1_Barba_Cap18", 1);
#################################################################		

		if (Wp:GetGunType(SLOT_A01) == CANNON_Vierling) then
			Wp:UnmanTheGun(SLOT_A01, ROLE_ELEV)
		endif;
		if (Wp:GetGunType(SLOT_A01) != CANNON_Vierling) then
			Wp:UnmanTheGun(SLOT_A02, ROLE_GUNNER)
		endif;
		Wp:Teleport("QRF_Petty_02");
		Wp:SetBodyPartVisibility("A_Hat01", 0);
		Wp:SetBodyPartVisibility("A_Torso06", 0); 
		Wp:SetBodyPartVisibility("A_Torso07", 1);
		Wp:PlayAnimationAndWait( "QRF_Petty_02_sleep01" );
		Wp:PlayAnimationAndWait( "QRF_Petty_02_sleep01" );
		Wp:PlayAnimationAndWait( "QRF_Petty_02_1to2" );
		Wp:PlayAnimationAndWait( "QRF_Petty_02_sleep02" );
		Wp:PlayAnimationAndWait( "QRF_Petty_02_sleep02" );
		Wp:PlayAnimationAndWait( "QRF_Petty_02_2to1" );
		Wp:PlayAnimationAndWait( "QRF_Petty_02_sleep01" );
		Wp:PlayAnimationAndWait( "QRF_Petty02_AtoC" );
		Wp:PlayAnimationAndWait( "QRF_Petty02_idle01" );
		Wp:PlayAnimationAndWait( "QRF_Petty02_idle04" );
		Wp:PlayAnimationAndWait( "QRF_Petty02_idle05" );
		Wp:PlayAnimationAndWait( "QRF_Petty02_idle02_part01" );
		Wp:SetBodyPartVisibility("object2_book01", 1);
		Wp:PlayAnimationAndWait( "QRF_Petty02_idle02_part02" );
		Wp:PlayAnimationAndWait( "QRF_Petty02_idle03_part01" );
		Wp:SetBodyPartVisibility("object2_book01", 0);
		Wp:PlayAnimationAndWait( "QRF_Petty02_idle03_part02" );
		Wp:PlayAnimationAndWait( "QRF_Petty02_CtoA" );

		Wp:ScriptCompleted();
	}
}

strategy QRF_PETTY02_Manning_A01gun(wp)
{
	precond
	{
		Wp:GetGunType(SLOT_A01) == CANNON_Vierling and Wp:IsGunManned(SLOT_A01) and !(Wp:IsTutorial() and !Wp:IsBunkerState())
	}
	action
	{
		Wp:SetBodyPartVisibility("object2_book01", 0);
		Wp:PlayAnimationAndWait( "QRF_Petty02_leave_rush" );
		Wp:Teleport("WP_A01_GUN");
		Wp:SetBodyPartVisibility("A_Hat01", 1); 
		Wp:SetBodyPartVisibility("A_Torso06", 1); 
		Wp:SetBodyPartVisibility("A_Torso07", 0);
		ManTheGun(SLOT_A01, "Vierling_UP_DW", ROLE_ELEV)

		Wp:ScriptCompleted();
	}
}

strategy QRF_PETTY02_Manning_A02gun(wp)
{
	precond
	{
		Wp:GetGunType(SLOT_A01) != CANNON_Vierling and Wp:IsGunManned(SLOT_A02) and !(Wp:IsTutorial() and !Wp:IsBunkerState())
	}
	action
	{
		Wp:SetBodyPartVisibility("object2_book01", 0);
		Wp:PlayAnimationAndWait( "QRF_Petty02_leave_rush" );
		Wp:Teleport("WP_A02_GUN");
		Wp:SetBodyPartVisibility("A_Hat01", 1); 
		Wp:SetBodyPartVisibility("A_Torso06", 1); 
		Wp:SetBodyPartVisibility("A_Torso07", 0);
		if (Wp:GetGunType(SLOT_A02) == CANNON_20mm_C30) then
			Wp:ManTheGun(SLOT_A02, "20mm_C30_UP_DW", ROLE_GUNNER)
		endif;
		if (Wp:GetGunType(SLOT_A02) == CANNON_20mm_C30_2) then
			Wp:ManTheGun(SLOT_A02, "20mm_C30_2_UP_DW", ROLE_GUNNER)
		endif;
		if (Wp:GetGunType(SLOT_A02) == CANNON_20mm_C38_Twin) then
			Wp:ManTheGun(SLOT_A02, "20mm_C38_twin_UP_DW", ROLE_GUNNER)
		endif;
		if (Wp:GetGunType(SLOT_A02) == CANNON_20mm_C38_Twin_Shield) then
			Wp:ManTheGun(SLOT_A02, "20mm_C38_shield_twin_UP_DW", ROLE_GUNNER)
		endif;		
		Wp:ScriptCompleted();
	}
}

Gunner: SQ_BED01 in QR2 (role: A02 FlaKVierling traverse)

Code:
strategy SQ_BED01_IDLE01(wp)
{
	strategies
	{
		SQ_BED01_Sleeping,
		SQ_BED01_Manning_A02gun,
		SQ_BED01_Manning_deck_gun
	}
}

strategy SQ_BED01_Sleeping(wp)
{
	precond
	{
		!((Wp:GetGunType(SLOT_A02) == CANNON_Vierling and Wp:IsGunManned(SLOT_A02)) or (Wp:GetGunType(SLOT_A02) != CANNON_Vierling and Wp:IsGunManned(SLOT_M01)))
	}
	action
	{
############## Uncomment for optional beard #####################
		# Wp:SetBodyPartVisibility("object1_Barba_Cap18", 1);
#################################################################
		
		if (Wp:GetGunType(SLOT_A02) == CANNON_Vierling) then
			Wp:UnmanTheGun(SLOT_A02, ROLE_TRAV)
		endif;
		if (Wp:GetGunType(SLOT_A02) != CANNON_Vierling) then
			Wp:UnmanTheGun(SLOT_M01, ROLE_TRAV)
		endif;		
		Wp:Teleport("SQ_BED01");
		Wp:SetBodyPartVisibility("A_Hat01", 0); 
		Wp:SetBodyPartVisibility("A_Torso05", 0); 
		Wp:SetBodyPartVisibility("A_Torso07", 1);
		Wp:PlayAnimationAndWait( "SQ_BED01_A_Idle01" );
		Wp:PlayAnimationAndWait( "SQ_BED01_A_Scratch01" );
		Wp:PlayAnimationAndWait( "SQ_BED01_A_Idle01" );
		Wp:PlayAnimationAndWait( "SQ_BED01_A2B_Turn" );
		Wp:PlayAnimationAndWait( "SQ_BED01_B_Idle01" );
		Wp:PlayAnimationAndWait( "SQ_BED01_B_Dream01" );
		Wp:PlayAnimationAndWait( "SQ_BED01_B2A_Turn" );
		Wp:PlayAnimationAndWait( "SQ_BED01_A_Idle01" );
		Wp:PlayAnimationAndWait( "SQ_BED01_AtoC" );
		Wp:PlayAnimationAndWait( "SQ_BED01_idlle01" );
		Wp:PlayAnimationAndWait( "SQ_BED01_idlle04" );
		Wp:PlayAnimationAndWait( "SQ_BED01_idlle01" );
		Wp:PlayAnimationAndWait( "SQ_BED01_idlle05" );
		Wp:PlayAnimationAndWait( "SQ_BED01_idlle02_part01" );
		Wp:SetBodyPartVisibility("object2_book01", 1);
		Wp:PlayAnimationAndWait( "SQ_BED01_idlle02_part02" );
		Wp:PlayAnimationAndWait( "SQ_BED01_idlle03_part01" );
		Wp:SetBodyPartVisibility("object2_book01", 0);
		Wp:PlayAnimationAndWait( "SQ_BED01_idlle03_part02" );
		Wp:PlayAnimationAndWait( "SQ_BED01_CtoA" );
		Wp:ScriptCompleted();
	}
}

strategy SQ_BED01_Manning_A02gun(wp)
{
	precond
	{
		Wp:GetGunType(SLOT_A02) == CANNON_Vierling and Wp:IsGunManned(SLOT_A02)
	}
	action
	{
		Wp:SetBodyPartVisibility("object2_book01", 0);
		Wp:PlayAnimationAndWait( "SQ_BED01_leave_rush" );
		Wp:SetBodyPartVisibility("A_Hat01", 1); 
		Wp:SetBodyPartVisibility("A_Torso05", 1); 
		Wp:SetBodyPartVisibility("A_Torso07", 0);
		Wp:Teleport("WP_A02_GUN");
		Wp:ManTheGun(SLOT_A02, "Vierling_L_R", ROLE_TRAV);
		Wp:ScriptCompleted();
	}
}

strategy SQ_BED01_Manning_deck_gun(wp)
{
	precond
	{
		Wp:GetGunType(SLOT_A02) != CANNON_Vierling and Wp:IsGunManned(SLOT_M01)
	}
	action
	{
		Wp:SetBodyPartVisibility("object2_book01", 0);
		Wp:PlayAnimationAndWait( "SQ_BED01_leave_rush" );
		Wp:SetBodyPartVisibility("A_Hat01", 1); 
		Wp:SetBodyPartVisibility("A_Torso05", 1); 
		Wp:SetBodyPartVisibility("A_Torso07", 0);
		Wp:Teleport("WP_DECK_GUN");
		Wp:ManTheGun(SLOT_M01, "88mm_L_R", ROLE_TRAV);
		Wp:ScriptCompleted();
	}
}

Gunner: SQ_BED02 in QR2 (role: A02 FlaKVierling elevation)

Code:
strategy SQ_BED02_IDLE01(wp)
{
	strategies
	{
		SQ_BED02_Sleeping,
		SQ_BED02_Manning_A02gun,
		SQ_BED02_Manning_deck_gun
	}
}

strategy SQ_BED02_Sleeping(wp)
{
	precond
	{
		!((Wp:GetGunType(SLOT_A02) == CANNON_Vierling and Wp:IsGunManned(SLOT_A02)) or (Wp:GetGunType(SLOT_A02) != CANNON_Vierling and Wp:IsGunManned(SLOT_M01)))
	}
	action
	{
############## Uncomment for optional beard ######################
		# Wp:SetBodyPartVisibility("object1_Barba_Cap06", 1);
##################################################################

		if (Wp:GetGunType(SLOT_A02) == CANNON_Vierling) then
			Wp:UnmanTheGun(SLOT_A02, ROLE_ELEV)
		endif;
		if (Wp:GetGunType(SLOT_A02) != CANNON_Vierling) then
			Wp:UnmanTheGun(SLOT_M01, ROLE_ELEV)
		endif;		
		Wp:Teleport("SQ_BED02");
		Wp:SetBodyPartVisibility("A_Hat01", 0); 
		Wp:SetBodyPartVisibility("A_Torso03", 1); 
		Wp:SetBodyPartVisibility("A_Torso07", 0);
		Wp:SetBodyPartVisibility("A_Pants02", 1); 
		Wp:SetBodyPartVisibility("A_Pants01", 0);
		Wp:PlayAnimationAndWait( "SQ_BED02_A_Idle01" );
		Wp:PlayAnimationAndWait( "SQ_BED02_A_Idle01" );
		Wp:PlayAnimationAndWait( "SQ_BED02_A2B_Turn" );
		Wp:PlayAnimationAndWait( "SQ_BED02_B_Idle01" );
		Wp:PlayAnimationAndWait( "SQ_BED02_B_Idle01" );
		Wp:PlayAnimationAndWait( "SQ_BED02_B2A_Turn" );
		Wp:PlayAnimationAndWait( "SQ_BED02_A_Idle01" );
		Wp:PlayAnimationAndWait( "SQ_BED02_AtoC" );
		Wp:PlayAnimationAndWait( "SQ_BED02_idlle01" );
		Wp:PlayAnimationAndWait( "SQ_BED02_idlle02_01" );
		Wp:SetBodyPartVisibility("object2_book01", 1);
		Wp:PlayAnimationAndWait( "SQ_BED02_idlle02_02" );
		Wp:PlayAnimationAndWait( "SQ_BED02_idlle03_01" );
		Wp:SetBodyPartVisibility("object2_book01", 0);
		Wp:PlayAnimationAndWait( "SQ_BED02_idlle03_02" );
		Wp:PlayAnimationAndWait( "SQ_BED02_idlle04" );
		Wp:PlayAnimationAndWait( "SQ_BED02_idlle05" );
		Wp:PlayAnimationAndWait( "SQ_BED02_CtoA" );

		Wp:ScriptCompleted();
	}
}

strategy SQ_BED02_Manning_A02gun(wp)
{
	precond
	{
		Wp:GetGunType(SLOT_A02) == CANNON_Vierling and Wp:IsGunManned(SLOT_A02)
	}
	action
	{
		Wp:PlayAnimationAndWait( "SQ_BED02_leave_rush" );
		Wp:Teleport("WP_A02_GUN");
		Wp:SetBodyPartVisibility("A_Hat01", 1); 
		Wp:SetBodyPartVisibility("A_Torso03", 0); 
		Wp:SetBodyPartVisibility("A_Torso07", 1);
		Wp:SetBodyPartVisibility("A_Pants02", 0); 
		Wp:SetBodyPartVisibility("A_Pants01", 1);
		Wp:ManTheGun(SLOT_A02, "Vierling_UP_DW", ROLE_ELEV);
		Wp:ScriptCompleted();
	}
}

strategy SQ_BED02_Manning_deck_gun(wp)
{
	precond
	{
		Wp:GetGunType(SLOT_A02) != CANNON_Vierling and Wp:IsGunManned(SLOT_M01)
	}
	action
	{
		Wp:PlayAnimationAndWait( "SQ_BED02_leave_rush" );
		Wp:Teleport("WP_DECK_GUN");
		Wp:SetBodyPartVisibility("A_Hat01", 1); 
		Wp:SetBodyPartVisibility("A_Torso03", 0); 
		Wp:SetBodyPartVisibility("A_Torso07", 1);
		Wp:SetBodyPartVisibility("A_Pants02", 0); 
		Wp:SetBodyPartVisibility("A_Pants01", 1);
		Wp:ManTheGun(SLOT_M01, "88mm_UP_DW", ROLE_ELEV);
		Wp:ScriptCompleted();
	}
}
I hope they work
__________________
_____________________
|May the Force be with you!|
...\/

Last edited by gap; 03-01-16 at 09:19 AM.
gap is offline   Reply With Quote
Old 03-01-16, 09:29 AM   #123
vdr1981
Navy Seal
 
Join Date: May 2010
Location: Србија
Posts: 6,078
Downloads: 581
Uploads: 13


Default

Thanks for your efforts Gap!
I also have tried all kinds of tweaks in aix files but I just couldn't get rid of flipped or frozen crew problems...

Did you test your changes in the game and with other U-boat types? Some screenshot?
vdr1981 is offline   Reply With Quote
Old 03-01-16, 10:15 AM   #124
gap
Navy Seal
 
Join Date: Jan 2011
Location: CJ8937
Posts: 8,215
Downloads: 793
Uploads: 10
Default

Quote:
Originally Posted by vdr1981 View Post
Thanks for your efforts Gap!
My pleasure

Quote:
Originally Posted by vdr1981 View Post
I also have tried all kinds of tweaks in aix files but I just couldn't get rid of flipped
Flipped crew is still a mistery to me. When a gun manning order is issued, characters in quarter rooms are teleported to their respective WP_*_GUN waypoints, as set in crew aix files. For having created some new characters in the past, I know that waypoint rotation do affect character rotation. The only reasons I could think of, for WP_A01_GUN rotation not havig any effect on its crew are:

- that bone is flawed somehow (remember that it had no rotation data in the stock conning tower). Possible solution: replace it with a clone of another bone with rotation data.

- waypoints stored in Conning_7C41F_02.waypoints.GR2 might interfere negatively with the ones of the same name stored in the main conning tower GR2 file. Possible solution: scrap that file, or remove the WP_A01_GUN bone from it.

- gunners are special characters in that their animations must be synchronized with gun animations. As you have noted a few days ago, all the FlaK guns in stock game point to the stern in their resting position. Is it possible that FlaK gun animations are made so that the character will always face the same direction, no matter their waypoint's rotation? It is a bit unlikely but... Possible solution: cloning and rotating Characters\Animations\Vierling_L_R.GR2 and Vierling_UP_DW.GR2 bones, and setting the clones files as A02 crew animations (?)

Quote:
Originally Posted by vdr1981 View Post
or frozen crew problems...
If you mean that gunners were frozen at their gun station even after the command "man the FlaK guns" was withdrawn, I think I know why this happened and my updates to crew AI should solve the issue

Quote:
Originally Posted by vdr1981 View Post
Did you test your changes in the game and with other U-boat types? Some screenshot?
No, just finished with the script changes, and now I need to finish my work on LGN1's squid launcher before I leave
__________________
_____________________
|May the Force be with you!|
...\/
gap is offline   Reply With Quote
Old 03-01-16, 12:01 PM   #125
vdr1981
Navy Seal
 
Join Date: May 2010
Location: Србија
Posts: 6,078
Downloads: 581
Uploads: 13


Default

Quote:
Originally Posted by gap View Post

No, just finished with the script changes, and now I need to finish my work on LGN1's squid launcher before I leave

Could you upload edited files so I could test them?
Squid launcher? You're planning a new mod ?
vdr1981 is offline   Reply With Quote
Old 03-01-16, 02:39 PM   #126
gap
Navy Seal
 
Join Date: Jan 2011
Location: CJ8937
Posts: 8,215
Downloads: 793
Uploads: 10
Default

Quote:
Originally Posted by vdr1981 View Post
Could you upload edited files so I could test them?
Sure

Overwrite the content of Crew_Idle_Actions_QR1.aix and Crew_Idle_Actions_QR2.aix with the following code.

QR1:

Code:
# Crew_Idle_Actions_QR1.aix
# Stock script modified by MightyFine Crew Mod 1.2.1 03/22/2010
# Edited by gap for The Wolves of Steel Mega Mod on 03/01/2016

strategy QRF_WATCH_IDLE01(wp)
{
	strategies
	{
		QRF_WATCH_TUTORIAL,
		QRF_WATCH_SUBMERGED,
		QRF_WATCH_TORPEDO_HIT,
		QRF_WATCH_DAMAGE_TAKEN,
		QRF_WATCH_SURFACED		
	}
}

strategy QRF_WATCH_TUTORIAL(wp)
{
	precond
	{
		Wp:IsTutorial() and !Wp:IsBunkerState()
	}
	action
	{
		if Wp:GetGlobalVariable(TUT_VAR_QRF_WATCH_STATE) == 0 then
		{
			Wp:BindAvatarCameraToObject("Cam01_wake_up_box", 65);
			Wp:PlaySoundWithLipsync("WatchOfficer\Normal\TTM_QRF_WATCH_D01_M1", 10.767);
			Wp:PlaySoundWithLipsync("WatchOfficer\Normal\TTM_QRF_WATCH_D01_M2", 16.367);
			Wp:PlaySoundWithLipsync("WatchOfficer\Normal\TTM_QRF_WATCH_D01_M3", 17.733);
			Wp:PlaySoundWithLipsync("WatchOfficer\Normal\TTM_QRF_WATCH_D01_M4", 25.5);
			Wp:PlaySoundWithLipsync("WatchOfficer\Normal\TTM_QRF_WATCH_D01_M5", 29.9);
			Wp:PlaySoundWithLipsync("WatchOfficer\Normal\TTM_QRF_WATCH_D01_M6", 37.9);
			Wp:PlaySoundWithLipsync("WatchOfficer\Normal\TTM_QRF_WATCH_D01_M7", 44.567);
			Wp:PlayAnimationAndWait("SAILOR01_Wake_up");
			Wp:UnbindAvatarCamera(1);
			Wp:Teleport("CR_NAV");
			Wp:PlayAnimationAndWait("SAILOR01_Go_through_hatch");
			Wp:SetGlobalVariable(TUT_VAR_QRF_WATCH_STATE, 1);
		}
		endif;
		if Wp:GetGlobalVariable(TUT_VAR_QRF_WATCH_STATE) == 1 then
		{
			Wp:Teleport("CR_NAV");
			if Wp:GetDistanceToAvatar() < 3 then
				Wp:SetGlobalVariable(TUT_VAR_QRF_WATCH_STATE, 2)
			else
				Wp:PlayAnimationAndWait("SAILOR01_Wait_near_ladder")
			endif;
		}
		endif;
		if Wp:GetGlobalVariable(TUT_VAR_QRF_WATCH_STATE) == 2 then
		{
			Wp:Teleport("CR_NAV");
			Wp:PlayAttenuatedSoundWithLipsync("WatchOfficer\Normal\TTM_QRF_WATCH_D03_M1", 0.3);
			Wp:PlayAttenuatedSoundWithLipsync("WatchOfficer\Normal\TTM_QRF_WATCH_D03_M2", 6.0);
			Wp:PlayAttenuatedSoundWithLipsync("WatchOfficer\Normal\TTM_QRF_WATCH_D03_M3", 15.733);
			Wp:PlayAnimationAndWait("SAILOR01_Scare_Navigator");
			Wp:SetGlobalVariable(TUT_VAR_QRF_WATCH_STATE, 3);
		}
		endif;
		if Wp:GetGlobalVariable(TUT_VAR_CAPTAIN_STATE) > 0 then
			Wp:SetGlobalVariable(TUT_VAR_QRF_WATCH_STATE, 4)
		endif;
		if Wp:GetGlobalVariable(TUT_VAR_QRF_WATCH_STATE) == 3 then
			Wp:PlayAnimationAndWait("SAILOR01_Wait_at_NAV_Table")
		endif;
		if Wp:GetGlobalVariable(TUT_VAR_QRF_WATCH_STATE) == 4 then
		{
			Wp:Teleport("QRF_Watch");
			Wp:PlayAnimationAndWait( "QRF_Watch_idle01" );
			Wp:PlayAnimationAndWait( "QRF_Watch_idle06" );
			Wp:PlayAnimationAndWait( "QRF_Watch_idle07" );
			Wp:PlayAnimationAndWait( "QRF_Watch_change_pose" );
			Wp:PlayAnimationAndWait( "QRF_Watch_idle02" );
			Wp:PlayAnimationAndWait( "QRF_Watch_inspect" );
			Wp:PlayAnimationAndWait( "QRF_Watch_idle09" );
			Wp:PlayAnimationAndWait( "QRF_Watch_idle10" );
			Wp:PlayAnimationAndWait( "QRF_Watch_silence" );
			Wp:Goto( "QRF_Watch_C" );
			Wp:PlayAnimationAndWait( "QRF_Watch_idle03" );
			Wp:PlayAnimationAndWait( "QRF_Watch_idle04" );
			Wp:PlayAnimationAndWait( "QRF_Watch_idle05" );
			Wp:Goto( "QRF_Watch" );
			Wp:PlayAnimationAndWait( "QRF_Watch_idle08" );
			Wp:PlayAnimationAndWait( "QRF_Watch_idle09" );
			Wp:PlayAnimationAndWait( "QRF_Watch_idle10" );
			Wp:PlayAnimationAndWait( "QRF_Watch_return" );
		}
		endif;
		Wp:ScriptCompleted();
	}
}

strategy QRF_WATCH_SUBMERGED(wp)
{
	precond
	{
		# (!Wp:IsCrewState(T_HIT) or !Wp:IsCharacterPosture(C)) and
		# (!Wp:IsCrewState(DMG_TKN) or !Wp:IsCharacterPosture(A)) and
		(Wp:IsSubmerged() or Wp:GetGlobalVariable(VAR_DIVE_ORDER) >  0 ) and
		!(Wp:IsTutorial() and !Wp:IsBunkerState())
	}
	action
	{
############## Uncomment for alternate head #######################		
		# Wp:SetBodyPartVisibility("D_Head12", 0);
		# Wp:SetBodyPartVisibility("D_EyeL12", 0);
		# Wp:SetBodyPartVisibility("D_EyeR12", 0);
		# Wp:SetBodyPartVisibility("D_Head16", 1);
		# Wp:SetBodyPartVisibility("D_EyeL16", 1);					
		# Wp:SetBodyPartVisibility("D_EyeR16", 1);				
		# Wp:SetBodyPartVisibility("D_Torso03", 0);				
		# Wp:SetBodyPartVisibility("D_Torso01", 1);				
##################################################################

############## Uncomment for optional beard ######################	
		# Wp:SetBodyPartVisibility("object1_Barba_CAP13", 1);     
##################################################################
		
		if !Wp:IsCurrentWaypoint("QRF_Watch_C") and !Wp:IsCurrentWaypoint("QRF_Watch") then
		{
			if Wp:IsCurrentWaypoint("WT_CR02") then
			{
				Wp:PlayAnimationAndWait( "DER_DE_CPO_explosion_event04" );	
				if Wp:GetGlobalVariable(VAR_CR_HF_LOC) < 5 and Wp:GetGlobalVariable(VAR_CR_HA_LOC) < 5 then 
				{
					Wp:SetGlobalVariable(VAR_QRF_WATCH_LOC, 4);
					Wp:SetBodyPartVisibility("object1_Binocular", 0);
					Wp:Teleport("CT_STAIRS");
					Wp:PlayAnimationAndWait( "SQ_COOK_A2C_Part01" );
				}
				endif;
			}
			else
			{
				if Wp:IsCurrentWaypoint("CT_STAIRS") then # wait for HF and HA to clear the stairs
				{
					Wp:SetGlobalVariable(VAR_QRF_WATCH_LOC, 4);
					if Wp:GetGlobalVariable(VAR_CR_HF_LOC) < 3 and Wp:GetGlobalVariable(VAR_CR_HA_LOC) < 3 then 
					{
						Wp:Teleport("CR_LADDER");
						Wp:SetGlobalVariable(VAR_QRF_WATCH_LOC, 3);
						Wp:PlayAnimationAndWait( "QRF_RTeam_01_screw" );					
					}
					else
					{
						Wp:PlayAnimationAndWait( "SQ_COOK_A2C_Part01" );
					}
					endif;
				}
				else
				{
					if Wp:IsCurrentWaypoint("CR_LADDER") then
					{
						Wp:SetGlobalVariable(VAR_QRF_WATCH_LOC, 3);
						if Wp:GetGlobalVariable(VAR_CR_HF_LOC) < 2 and Wp:GetGlobalVariable(VAR_CR_HA_LOC) < 2 then 
						{	
							
							Wp:PlayAttenuatedSoundWithLipsync("MFCM\fall02", 0);
							Wp:Teleport("CR_STAIRS");
							Wp:SetGlobalVariable(VAR_QRF_WATCH_LOC, 2);
							if Wp:GetGlobalVariable(VAR_DIVE_ORDER) == 2 then # jar landing on crash dive
							{
								Wp:PlayAttenuatedSoundWithLipsync("MFCM\fall02", 0.5);
								Wp:PlayAnimationAndWait("DER_DE_CPO_explosion_event01");
							}
							endif;
						}
						else
						{
							Wp:Teleport("CT_STAIRS");  # in case he's blocking HA and HA
							Wp:SetGlobalVariable(VAR_QRF_WATCH_LOC, 4);
							Wp:PlayAnimationAndWait( "QRF_RTeam_01_screw" );
						}
						endif;
					}
					else
					{
						if Wp:IsCurrentWaypoint("CR_STAIRS") then
						{
							Wp:SetGlobalVariable(VAR_QRF_WATCH_LOC, 2);
							Wp:PlayAttenuatedSoundWithLipsync("MFCM\footsteps02", 0.5);
							Wp:Goto("CR_WP08_DOOR");
							Wp:SetGlobalVariable(VAR_QRF_WATCH_LOC, 1);
							Wp:Teleport("RR_WP01_DOOR");
							Wp:Goto( "QRF_Watch" );
							Wp:SetGlobalVariable(VAR_QRF_WATCH_LOC, 0);
						}
						else
						{
							Wp:Teleport( "QRF_Watch" );
							Wp:SetGlobalVariable(VAR_QRF_WATCH_LOC, 0);
						}
						endif;	
					}
					endif;
				}
				endif;
			}
			endif;
		}			
		else	
		{
			if Wp:GetGlobalVariable(VAR_DIVE_ORDER) > 0 and Wp:IsSubmerged() and  Wp:GetGlobalVariable(VAR_CR_HF_LOC) == 0 and Wp:GetGlobalVariable(VAR_CR_HA_LOC) == 0 then
			{
				Wp:SetGlobalVariable(VAR_DIVE_ORDER, 0);
			}
			endif;
			
			Wp:SetBodyPartVisibility("object1_Binocular", 0);
			Wp:SetBodyPartVisibility("D_Hat02", 0);

			Wp:PlayAnimationAndWait( "QRF_Watch_idle01" );
			Wp:PlayAnimationAndWait( "QRF_Watch_idle06" );
			Wp:PlayAnimationAndWait( "QRF_Watch_idle07" );
			Wp:PlayAnimationAndWait( "QRF_Watch_change_pose" );
			Wp:PlayAnimationAndWait( "QRF_Watch_idle02" );
			Wp:PlayAnimationAndWait( "QRF_Watch_inspect" );
			Wp:PlayAnimationAndWait( "QRF_Watch_idle09" );
			Wp:PlayAnimationAndWait( "QRF_Watch_idle10" );
			Wp:PlayAnimationAndWait( "QRF_Watch_silence" );
			Wp:Goto( "QRF_Watch_C" );
			Wp:PlayAnimationAndWait( "QRF_Watch_idle03" );
			Wp:PlayAnimationAndWait( "QRF_Watch_idle04" );
			Wp:PlayAnimationAndWait( "QRF_Watch_idle05" );
			Wp:Goto( "QRF_Watch" );
			Wp:PlayAnimationAndWait( "QRF_Watch_idle08" );
			Wp:PlayAnimationAndWait( "QRF_Watch_idle09" );
			Wp:PlayAnimationAndWait( "QRF_Watch_idle10" );
			Wp:PlayAnimationAndWait( "QRF_Watch_return" );
		}
		endif;

		Wp:ScriptCompleted();
	}
}

strategy QRF_WATCH_TORPEDO_HIT(wp)
{
	precond
	{
		Wp:IsCrewState(T_HIT) and
		Wp:IsCharacterPosture(C) and
		!Wp:IsCrewState(DMG_TKN) and
		Wp:IsSubmerged() and
		!(Wp:IsTutorial() and !Wp:IsBunkerState())
	}
	action
	{
		Wp:PlayAnimationAndWait( "QRF_Watch_JOY01" );
		Wp:PlayAnimationAndWait( "QRF_Watch_JOY02" );
		Wp:Goto( "QRF_Watch" );
		Wp:PlayAnimationAndWait( "QRF_Watch_return" );
		Wp:DeactivateCrewState(T_HIT);
		
		Wp:ScriptCompleted();
	}
}

strategy QRF_WATCH_DAMAGE_TAKEN(wp)
{
	precond
	{
		Wp:IsCrewState(DMG_TKN) and
		Wp:IsCharacterPosture(A) and
		Wp:IsSubmerged() and
		!(Wp:IsTutorial() and !Wp:IsBunkerState())
	}
	action
	{
		Wp:PlayAnimationAndWait( "QRF_Watch_explosion_event01" );
		Wp:DeactivateCrewState(DMG_TKN);
		
		Wp:ScriptCompleted();
	}
}

strategy QRF_WATCH_SURFACED(wp)
{
	precond
	{
		Wp:GetGlobalVariable(VAR_DIVE_ORDER) == 0 and
		Wp:IsSurfaced() and
		!(Wp:IsTutorial() and !Wp:IsBunkerState())
	}
	action
	{

############## Uncomment for alternate head #######################		
		# Wp:SetBodyPartVisibility("D_Head12", 0);
		# Wp:SetBodyPartVisibility("D_EyeL12", 0);
		# Wp:SetBodyPartVisibility("D_EyeR12", 0);
		# Wp:SetBodyPartVisibility("D_Head16", 1);
		# Wp:SetBodyPartVisibility("D_EyeL16", 1);
		# Wp:SetBodyPartVisibility("D_EyeR16", 1);
		# Wp:SetBodyPartVisibility("D_Torso03", 0);
		# Wp:SetBodyPartVisibility("D_Torso01", 1);
###################################################################		

############## Uncomment for optional beard ######################		
		# Wp:SetBodyPartVisibility("object1_Barba_CAP13", 1);
###################################################################

		if !Wp:IsCurrentWaypoint("WT_CR02") then
		{
			if Wp:IsCurrentWaypoint("QRF_Watch_C") or Wp:IsCurrentWaypoint("QRF_Watch") then
			{
				Wp:Teleport("QRF_Watch");
				# Wp:SetBodyPartVisibility("D_Hat02", 1);
				Wp:PlayAnimationAndWait("QRF_Warch_leave_rush");
				Wp:Teleport("CR_NAV");
				Wp:PlayAttenuatedSoundWithLipsync("MFCM\footsteps02", 0.25);
				Wp:PlayAnimationAndWait("SAILOR01_Go_through_hatch");
				Wp:SetGlobalVariable(VAR_QRF_WATCH_LOC, 1);
			}
			else
			{
				if Wp:IsCurrentWaypoint("CR_NAV") then # wait for HA anf HF to go up ladder
				{
					if Wp:GetGlobalVariable(VAR_CR_HA_LOC) > 2 and Wp:GetGlobalVariable(VAR_CR_HF_LOC) > 2 then 
					{
						Wp:Teleport("CR_STAIRS");
						Wp:SetGlobalVariable(VAR_QRF_WATCH_LOC, 2);
						Wp:PlayAnimationAndWait( "SQ_COOK_A2C_Part01" );
						
					}
					else
					{
						Wp:PlayAnimationAndWait("SAILOR01_Wait_near_ladder");
					}
					endif;
				}
				else
				{
					if Wp:IsCurrentWaypoint("CR_STAIRS") then 
					{
						if Wp:GetGlobalVariable(VAR_CR_HA_LOC) != 3 and Wp:GetGlobalVariable(VAR_CR_HF_LOC) != 3 then 
						{
							Wp:PlayAttenuatedSoundWithLipsync("MFCM\ladder_up", 0);
							Wp:Teleport("CR_LADDER");
							Wp:SetGlobalVariable(VAR_QRF_WATCH_LOC, 3);
							Wp:PlayAnimationAndWait( "QRF_RTeam_01_screw" );
							Wp:Teleport("WT_CR02");
							Wp:SetGlobalVariable(VAR_QRF_WATCH_LOC, 5);
						}
						else
						{
							Wp:PlayAnimationAndWait("SQ_COOK_A2C_Part01");
						}
						endif;
					}
					else
					{
						if !Wp:IsCurrentWaypoint("WT_CR02") then 
						{
							Wp:Teleport("WT_CR02");
							Wp:SetGlobalVariable(VAR_QRF_WATCH_LOC, 5);	
						}
						endif;
					}
					endif;
				}
				endif;
			}
			endif;
		}
		else
		{
			Wp:SetBodyPartVisibility("object1_Binocular", 1);
			Wp:SetBodyPartVisibility("D_Torso03", 0); 
			Wp:SetBodyPartVisibility("D_Torso01", 1); 
			# Wp:SetBodyPartVisibility("D_Hat02", 1);
			
			Wp:PlayAnimationAndWait( "WATCH03_Idle01" );
			Wp:PlayAnimationAndWait( "SECONDARY_IdleA09" );
			Wp:PlayAnimationAndWait( "SECONDARY_Scan_with_Binoculars" );
		}
		endif;

		Wp:ScriptCompleted();
	}
}

strategy QRF_PETTY01_IDLE01(wp)
{
	strategies
	{
		QRF_PETTY01_Sleeping,
		QRF_PETTY01_Manning_A01gun
	}
}

strategy QRF_PETTY01_Sleeping(wp)
{
	precond
	{
		!Wp:IsGunManned(SLOT_A01)
	}
	action
	{
############## Uncomment for optional beard ######################
		# Wp:SetBodyPartVisibility("object1_Barba_Cap06", 1);
##################################################################
	

		Wp:SetBodyPartVisibility("A_Hat01", 0); 
		Wp:SetBodyPartVisibility("A_Pants01", 1); 
		Wp:SetBodyPartVisibility("A_Pants02", 0);

		if (Wp:GetGunType(SLOT_A01) == CANNON_Vierling) then
			Wp:UnmanTheGun(SLOT_A01, ROLE_TRAV)
		else
			Wp:UnmanTheGun(SLOT_A01, ROLE_GUNNER)
		endif;
		Wp:Teleport("QRF_Petty_01");
		Wp:PlayAnimationAndWait( "QRF_Petty_01_sleep01" );
		Wp:PlayAnimationAndWait( "QRF_Petty_01_sleep01" );
		Wp:PlayAnimationAndWait( "QRF_Petty_01_talk_01" );
		Wp:PlayAnimationAndWait( "QRF_Petty_01_sleep01" );
		Wp:PlayAnimationAndWait( "QRF_Petty_01_1to2" );
		Wp:PlayAnimationAndWait( "QRF_Petty_01_sleep02" );
		Wp:PlayAnimationAndWait( "QRF_Petty_01_sleep02" );
		Wp:PlayAnimationAndWait( "QRF_Petty_01_sleep02" );
		Wp:PlayAnimationAndWait( "QRF_Petty_01_2to1" );
		Wp:PlayAnimationAndWait( "QRF_Petty_01_sleep01" );
		Wp:PlayAnimationAndWait( "QRF_Petty_01_sleep01" );
		Wp:PlayAnimationAndWait( "QRF_Petty_01_sleep01" );
		Wp:PlayAnimationAndWait( "QRF_Petty_01_talk_01" );
		Wp:PlayAnimationAndWait( "QRF_Petty01_AtoC" );
		Wp:PlayAnimationAndWait( "QRF_Petty01_idle01" );
		Wp:PlayAnimationAndWait( "QRF_Petty01_idle04" );
		Wp:PlayAnimationAndWait( "QRF_Petty01_idle05" );
		Wp:PlayAnimationAndWait( "QRF_Petty01_idle02_part01" );
		Wp:SetBodyPartVisibility("object2_book01", 1);
		Wp:PlayAnimationAndWait( "QRF_Petty01_idle02_part02" );
		Wp:PlayAnimationAndWait( "QRF_Petty01_idle03_part01" );
		Wp:SetBodyPartVisibility("object2_book01", 0);
		Wp:PlayAnimationAndWait( "QRF_Petty01_idle03_part02" );
		Wp:PlayAnimationAndWait( "QRF_Petty01_CtoA" );

		Wp:ScriptCompleted();
	}
}

strategy QRF_PETTY01_Manning_A01gun(wp)
{
	precond
	{
		Wp:IsGunManned(SLOT_A01)
	}
	action
	{
		Wp:SetBodyPartVisibility("A_Hat01", 1); 
		Wp:SetBodyPartVisibility("A_Pants01", 1); 
		Wp:SetBodyPartVisibility("A_Pants02", 0);

		
		Wp:PlayAnimationAndWait( "QRF_Petty01_leave_rush" );
		Wp:Teleport("WP_A01_GUN");
		if (Wp:GetGunType(SLOT_A01) == CANNON_Vierling) then
			Wp:ManTheGun(SLOT_A01, "Vierling_L_R", ROLE_TRAV)
		endif;
		if (Wp:GetGunType(SLOT_A01) == CANNON_20mm_C30) then
			Wp:ManTheGun(SLOT_A01, "20mm_C30_UP_DW", ROLE_GUNNER)
		endif;
		if (Wp:GetGunType(SLOT_A01) == CANNON_20mm_C30_2) then
			Wp:ManTheGun(SLOT_A01, "20mm_C30_2_UP_DW", ROLE_GUNNER)
		endif;
		if (Wp:GetGunType(SLOT_A01) == CANNON_20mm_C38_Twin) then
			Wp:ManTheGun(SLOT_A01, "20mm_C38_twin_UP_DW", ROLE_GUNNER)
		endif;
		if (Wp:GetGunType(SLOT_A01) == CANNON_20mm_C38_Twin_Shield) then
			Wp:ManTheGun(SLOT_A01, "20mm_C38_shield_twin_UP_DW", ROLE_GUNNER)
		endif;
		Wp:ScriptCompleted();
	}
}

strategy QRF_PETTY02_IDLE01(wp)
{
	strategies
	{
		QRF_PETTY02_Tutorial,
		QRF_PETTY02_Sleeping,
		QRF_PETTY02_Manning_A01gun,	
		QRF_PETTY02_Manning_A02gun		
	}
}

strategy QRF_PETTY02_Tutorial(wp)
{
	precond
	{
		Wp:IsTutorial() and !Wp:IsBunkerState()
	}
	action
	{
		Wp:Teleport( "QRF_Watch" );
		if Wp:GetGlobalVariable(TUT_VAR_QRF_PETTY02_STATE) == 0 then
		{
			Wp:PlayAnimationAndWait("SAILOR02_Walk_near_player");
			Wp:SetGlobalVariable(TUT_VAR_QRF_PETTY02_STATE, 1);
		}
		endif;
		if Wp:GetGlobalVariable(TUT_VAR_QRF_PETTY02_STATE) == 1 then
			Wp:PlayAnimationAndWait("SAILOR02_Wait_near_door")
		endif;
		Wp:ScriptCompleted();
	}
}

strategy QRF_PETTY02_Sleeping(wp)
{
	precond
	{
		!((Wp:GetGunType(SLOT_A01) == CANNON_Vierling and Wp:IsGunManned(SLOT_A01)) or (Wp:GetGunType(SLOT_A01) != CANNON_Vierling and Wp:IsGunManned(SLOT_A02))) and !(Wp:IsTutorial() and !Wp:IsBunkerState())
	}
	action
	{
############## Uncomment for optional beard #####################
		# Wp:SetBodyPartVisibility("object1_Barba_Cap18", 1);
#################################################################		

		if (Wp:GetGunType(SLOT_A01) == CANNON_Vierling) then
			Wp:UnmanTheGun(SLOT_A01, ROLE_ELEV)
		else
			Wp:UnmanTheGun(SLOT_A02, ROLE_GUNNER)
		endif;
		Wp:Teleport("QRF_Petty_02");
		Wp:SetBodyPartVisibility("A_Hat01", 0);
		Wp:SetBodyPartVisibility("A_Torso06", 0); 
		Wp:SetBodyPartVisibility("A_Torso07", 1);
		Wp:PlayAnimationAndWait( "QRF_Petty_02_sleep01" );
		Wp:PlayAnimationAndWait( "QRF_Petty_02_sleep01" );
		Wp:PlayAnimationAndWait( "QRF_Petty_02_1to2" );
		Wp:PlayAnimationAndWait( "QRF_Petty_02_sleep02" );
		Wp:PlayAnimationAndWait( "QRF_Petty_02_sleep02" );
		Wp:PlayAnimationAndWait( "QRF_Petty_02_2to1" );
		Wp:PlayAnimationAndWait( "QRF_Petty_02_sleep01" );
		Wp:PlayAnimationAndWait( "QRF_Petty02_AtoC" );
		Wp:PlayAnimationAndWait( "QRF_Petty02_idle01" );
		Wp:PlayAnimationAndWait( "QRF_Petty02_idle04" );
		Wp:PlayAnimationAndWait( "QRF_Petty02_idle05" );
		Wp:PlayAnimationAndWait( "QRF_Petty02_idle02_part01" );
		Wp:SetBodyPartVisibility("object2_book01", 1);
		Wp:PlayAnimationAndWait( "QRF_Petty02_idle02_part02" );
		Wp:PlayAnimationAndWait( "QRF_Petty02_idle03_part01" );
		Wp:SetBodyPartVisibility("object2_book01", 0);
		Wp:PlayAnimationAndWait( "QRF_Petty02_idle03_part02" );
		Wp:PlayAnimationAndWait( "QRF_Petty02_CtoA" );

		Wp:ScriptCompleted();
	}
}

strategy QRF_PETTY02_Manning_A01gun(wp)
{
	precond
	{
		Wp:GetGunType(SLOT_A01) == CANNON_Vierling and Wp:IsGunManned(SLOT_A01) and !(Wp:IsTutorial() and !Wp:IsBunkerState())
	}
	action
	{
		Wp:SetBodyPartVisibility("object2_book01", 0);
		Wp:PlayAnimationAndWait( "QRF_Petty02_leave_rush" );
		Wp:Teleport("WP_A01_GUN");
		Wp:SetBodyPartVisibility("A_Hat01", 1); 
		Wp:SetBodyPartVisibility("A_Torso06", 1); 
		Wp:SetBodyPartVisibility("A_Torso07", 0);
		ManTheGun(SLOT_A01, "Vierling_UP_DW", ROLE_ELEV)

		Wp:ScriptCompleted();
	}
}

strategy QRF_PETTY02_Manning_A02gun(wp)
{
	precond
	{
		Wp:GetGunType(SLOT_A01) != CANNON_Vierling and Wp:IsGunManned(SLOT_A02) and !(Wp:IsTutorial() and !Wp:IsBunkerState())
	}
	action
	{
		Wp:SetBodyPartVisibility("object2_book01", 0);
		Wp:PlayAnimationAndWait( "QRF_Petty02_leave_rush" );
		Wp:Teleport("WP_A02_GUN");
		Wp:SetBodyPartVisibility("A_Hat01", 1); 
		Wp:SetBodyPartVisibility("A_Torso06", 1); 
		Wp:SetBodyPartVisibility("A_Torso07", 0);
		if (Wp:GetGunType(SLOT_A02) == CANNON_20mm_C30) then
			Wp:ManTheGun(SLOT_A02, "20mm_C30_UP_DW", ROLE_GUNNER)
		endif;
		if (Wp:GetGunType(SLOT_A02) == CANNON_20mm_C30_2) then
			Wp:ManTheGun(SLOT_A02, "20mm_C30_2_UP_DW", ROLE_GUNNER)
		endif;
		if (Wp:GetGunType(SLOT_A02) == CANNON_20mm_C38_Twin) then
			Wp:ManTheGun(SLOT_A02, "20mm_C38_twin_UP_DW", ROLE_GUNNER)
		endif;
		if (Wp:GetGunType(SLOT_A02) == CANNON_20mm_C38_Twin_Shield) then
			Wp:ManTheGun(SLOT_A02, "20mm_C38_shield_twin_UP_DW", ROLE_GUNNER)
		endif;		
		Wp:ScriptCompleted();
	}
}

strategy RR_RADIO_IDLE01(wp)
{
	strategies
	{
		RR_RADIO_TUTORIAL,
		
		# old idle action

		RR_RADIO_Nothing_to_do,

		#  these 3 strategies do exatcly the same thing, 
		# but with a different condition.
		#
		#  they probabily need to be like this so they can 
		# be customized in the near future.

		RR_RADIO_Entering,
		RR_RADIO_In_use,
		RR_RADIO_Exiting		
	}
}

strategy RR_RADIO_TUTORIAL(wp)
{
	precond
	{
		Wp:GetRadarState() == 0 and Wp:IsTutorial() and !Wp:IsBunkerState()
	}
	action
	{
		if Wp:GetGlobalVariable(TUT_VAR_RR_RADIO_STATE) == 0 then
		{
			Wp:PlaySoundWithLipsync("RadioMan\Normal\TTM_RR_RADIO_D01_M8", 28.733);
			Wp:PlaySoundWithLipsync("RadioMan\Normal\TTM_RR_RADIO_D01_M9", 32.267);
			Wp:SetGlobalVariable(TUT_VAR_RR_RADIO_STATE, 1);
		}
		endif;
		Wp:PlayAnimationAndWait( "RR_RADIO_A_Idle01" );
		Wp:PlayAnimationAndWait( "RR_RADIO_A_Idle02" );
		Wp:PlayAnimationAndWait( "RR_RADIO_A_GRAMOPHONE" );
		Wp:PlayAnimationAndWait( "RR_RADIO_A_RADIO" );
		Wp:PlayAnimationAndWait( "RR_RADIO_A_Write01_Part01" );
		Wp:SetBodyPartVisibility("object2_Pencil_radio", 1);
		Wp:PlayAnimationAndWait( "RR_RADIO_A_Write01_Part02" );
		Wp:SetBodyPartVisibility("object2_Pencil_radio", 0);
		Wp:PlayAnimationAndWait( "RR_RADIO_A_Write01_Part03" );
		Wp:Goto( "RR_RADIO_B" );
		Wp:PlayAnimationAndWait( "RR_RADIO_B_Idle01" );
		Wp:PlayAnimationAndWait( "RR_RADIO_B_TurnKnob_Listen" );
		Wp:PlayAnimationAndWait( "RR_RADIO_B_Idle01" );
		Wp:PlayAnimationAndWait( "RR_RADIO_B_TurnKnobLeft" );
		Wp:PlayAnimationAndWait( "RR_RADIO_B_Write01_Part01" );
		Wp:SetBodyPartVisibility("object2_Pencil_radio", 1);
		Wp:PlayAnimationAndWait( "RR_RADIO_B_Write01_Part02" );
		Wp:SetBodyPartVisibility("object2_Pencil_radio", 0);
		Wp:PlayAnimationAndWait( "RR_RADIO_B_Write01_Part03" );
		Wp:PlayAnimationAndWait( "RR_RADIO_B_Idle01" );
		Wp:PlayAnimationAndWait( "RR_RADIO_B_TurnKnobRight" );
		Wp:Goto( "RR_RADIO_C" );
		Wp:PlayAnimationAndWait( "RR_RADIO_C_LookAround01" );
		Wp:PlayAnimationAndWait( "RR_RADIO_C_Idle01" );
		Wp:PlayAnimationAndWait( "RR_RADIO_C_Idle02" );
		Wp:PlayAnimationAndWait( "RR_RADIO_C_Idle03" );
		Wp:PlayAnimationAndWait( "RR_RADIO_C_Idle04" );
		Wp:PlayAnimationAndWait( "RR_RADIO_C_Idle05" );
		Wp:Goto( "RR_RADIO_A" );
		Wp:ScriptCompleted();
	}
}

# idle strategy
strategy RR_RADIO_Nothing_to_do(wp)
{
	precond
	{
		# if hydrophone is not used
		Wp:GetRadarState() == 0 and !(Wp:IsTutorial() and !Wp:IsBunkerState())
	}
	action
	{
############## Uncomment for optional beard ######################
		# Wp:SetBodyPartVisibility("object1_Beard_CAP04", 1);
##################################################################

		Wp:PlayAnimationAndWait( "RR_RADIO_A_Idle01" );
		Wp:PlayAnimationAndWait( "RR_RADIO_A_Idle02" );
		Wp:PlayAnimationAndWait( "RR_RADIO_A_GRAMOPHONE" );
		Wp:PlayAnimationAndWait( "RR_RADIO_A_RADIO" );
		Wp:PlayAnimationAndWait( "RR_RADIO_A_Write01_Part01" );
		Wp:SetBodyPartVisibility("object2_Pencil_radio", 1);
		Wp:PlayAnimationAndWait( "RR_RADIO_A_Write01_Part02" );
		Wp:SetBodyPartVisibility("object2_Pencil_radio", 0);
		Wp:PlayAnimationAndWait( "RR_RADIO_A_Write01_Part03" );
		Wp:Goto( "RR_RADIO_B" );
		Wp:PlayAnimationAndWait( "RR_RADIO_B_Idle01" );
		Wp:PlayAnimationAndWait( "RR_RADIO_B_TurnKnob_Listen" );
		Wp:PlayAnimationAndWait( "RR_RADIO_B_Idle01" );
		Wp:PlayAnimationAndWait( "RR_RADIO_B_TurnKnobLeft" );
		Wp:PlayAnimationAndWait( "RR_RADIO_B_Write01_Part01" );
		Wp:SetBodyPartVisibility("object2_Pencil_radio", 1);
		Wp:PlayAnimationAndWait( "RR_RADIO_B_Write01_Part02" );
		Wp:SetBodyPartVisibility("object2_Pencil_radio", 0);
		Wp:PlayAnimationAndWait( "RR_RADIO_B_Write01_Part03" );
		Wp:PlayAnimationAndWait( "RR_RADIO_B_Idle01" );
		Wp:PlayAnimationAndWait( "RR_RADIO_B_TurnKnobRight" );
		Wp:Goto( "RR_RADIO_C" );
		Wp:PlayAnimationAndWait( "RR_RADIO_C_Idle01" );
		Wp:PlayAnimationAndWait( "RR_RADIO_C_Idle02" );
		Wp:PlayAnimationAndWait( "RR_RADIO_C_Idle03" );
		Wp:PlayAnimationAndWait( "RR_RADIO_C_Idle04" );
		Wp:PlayAnimationAndWait( "RR_RADIO_C_Idle05" );
		Wp:Goto( "RR_RADIO_A" );

		Wp:ScriptCompleted();
	}
}

# captain is entering radar
strategy RR_RADIO_Entering(wp)
{
	precond
	{
		# if radar will be used by captain
		# "entering radar" - state
		Wp:GetRadarState() == 1
	}
	strategies
	{
		RR_RADIO_MoveToB,
		RR_RADIO_DoIdle
	}
}

# captain is at the hydrophone
strategy RR_RADIO_In_use(wp)
{
	precond
	{
		# if captain is at the radar, and leaving
		# "exiting radar" - state
		Wp:GetRadarState() == 2
	}
	strategies
	{
		RR_RADIO_MoveToB,
		RR_RADIO_DoIdle
	}
}

# captain is at the hydrophone
strategy RR_RADIO_Exiting(wp)
{
	precond
	{
		# if captain is at the hydrophone, and leaving
		# "exiting hydrophone" - state
		Wp:GetRadarState() == 3
	}
	strategies
	{
		RR_RADIO_MoveToB,
		RR_RADIO_DoIdle
	}
}

strategy RR_RADIO_MoveToB(wp)
{
	precond
	{
		Wp:IsCurrentWaypoint( "RR_RADIO_A" ) == 1
	}
	action
	{
		Wp:Goto( "RR_RADIO_B" );
		Wp:PlayAnimationAndWait( "RR_RADIO_B_Idle01" );
		Wp:PlayAnimationAndWait( "RR_RADIO_B_TurnKnob_Listen" );
		Wp:PlayAnimationAndWait( "RR_RADIO_B_Write01_Part01" );
		Wp:SetBodyPartVisibility("object2_Pencil_radio", 1);
		Wp:PlayAnimationAndWait( "RR_RADIO_B_Write01_Part02" );
		Wp:SetBodyPartVisibility("object2_Pencil_radio", 0);
		Wp:PlayAnimationAndWait( "RR_RADIO_B_Write01_Part03" );
		Wp:Goto( "RR_RADIO_C" );
		Wp:PlayAnimationAndWait( "RR_RADIO_C_LookAround01" );
		Wp:PlayAnimationAndWait( "RR_RADIO_C_Idle01" );
		
		Wp:ScriptCompleted();
	}
}

strategy RR_RADIO_DoIdle(wp)
{
	precond
	{
		Wp:IsCurrentWaypoint( "RR_RADIO_A" ) == 0
	}
	strategies
	{
		RR_RADIO_DoIdle_B,
		RR_RADIO_DoIdle_C
	}
}

strategy RR_RADIO_DoIdle_B(wp)
{
	precond
	{
		Wp:IsCurrentWaypoint( "RR_RADIO_B" ) == 1
	}
	action
	{
		Wp:PlayAnimationAndWait( "RR_RADIO_B_Idle01" );
		Wp:PlayAnimationAndWait( "RR_RADIO_B_TurnKnob_Listen" );
		Wp:PlayAnimationAndWait( "RR_RADIO_B_Write01_Part01" );
		Wp:SetBodyPartVisibility("object2_Pencil_radio", 1);
		Wp:PlayAnimationAndWait( "RR_RADIO_B_Write01_Part02" );
		Wp:SetBodyPartVisibility("object2_Pencil_radio_radio", 0);
		Wp:PlayAnimationAndWait( "RR_RADIO_B_Write01_Part03" );
		Wp:Goto( "RR_RADIO_C" );
		Wp:PlayAnimationAndWait( "RR_RADIO_C_LookAround01" );
		Wp:PlayAnimationAndWait( "RR_RADIO_C_Idle01" );	
		
		Wp:ScriptCompleted();
	}
}

strategy RR_RADIO_DoIdle_C(wp)
{
	precond
	{
		Wp:IsCurrentWaypoint( "RR_RADIO_C" ) == 1
	}
	action
	{
		Wp:PlayAnimationAndWait( "RR_RADIO_C_LookAround01" );
		Wp:PlayAnimationAndWait( "RR_RADIO_C_Idle01" );	
		
		Wp:ScriptCompleted();
	}
}

strategy RR_HIDRO_IDLE01(wp)
{
	strategies
	{
		# old idle action
		RR_HIDRO_Nothing_to_do_surfaced,
		RR_HIDRO_Nothing_to_do_submerged,

		#  these 3 strategies do exatcly the same thing, 
		# but with a different condition.
		#
		#  they probabily need to be like this so they can 
		# be customized in the near future.

		RR_HIDRO_Entering,
		RR_HIDRO_In_use,
		RR_HIDRO_Exiting
	}
}

# idle strategy
strategy RR_HIDRO_Nothing_to_do_surfaced(wp)
{
	precond
	{
		# if hydrophone is not used
		Wp:GetHydrophoneState() == 0 and !Wp:IsSubmerged()
	}
	action
	{
		Wp:Goto( "RR_HIDRO02" );
		Wp:PlayAnimationAndWait( "RR_HIDRO_C_Idle11" );
		Wp:PlayAnimationAndWait( "RR_HIDRO_C_Idle12" );
		Wp:PlayAnimationAndWait( "RR_HIDRO_C_Idle13" );
		Wp:PlayAnimationAndWait( "RR_HIDRO_Idle08" );
		Wp:PlayAnimationAndWait( "RR_HIDRO_D_Idle14" );
		Wp:PlayAnimationAndWait( "RR_HIDRO_D_Idle15" );
		Wp:PlayAnimationAndWait( "RR_HIDRO_D_Idle16" );
	
		Wp:ScriptCompleted();
	}
}
		
strategy RR_HIDRO_Nothing_to_do_submerged(wp)
{
	precond
	{
		# if hydrophone is not used
		Wp:GetHydrophoneState() == 0 and Wp:IsSubmerged()
	}
	action
	{
		Wp:Goto( "RR_HIDRO" );
		Wp:PlayAnimationAndWait( "RR_HIDRO_Idle10" );
		Wp:PlayAnimationAndWait( "RR_HIDRO_Idle02" );
		Wp:PlayAnimationAndWait( "RR_HIDRO_Idle03" );
		Wp:PlayAnimationAndWait( "RR_HIDRO_Idle04" );
		# Wp:PlayAnimationAndWait( "RR_HIDRO_Drop_headphones_part01" );
		# Wp:SetBodyPartVisibility("object1_headphone01", 1);
		# Wp:SetBodyPartVisibility("object2_headphone02", 0);
		# Wp:PlayAnimationAndWait( "RR_HIDRO_Drop_headphones_part02" );
		# Wp:SetBodyPartVisibility("object1_headphone01", 0);
		# Wp:PlayAnimationAndWait( "RR_HIDRO_Drop_headphones_part03" );
		# Wp:SetBodyPartVisibility("object1_headphone01", 1);
		# Wp:PlayAnimationAndWait( "RR_HIDRO_Drop_headphones_part04" );
		# Wp:SetBodyPartVisibility("object1_headphone01", 0);
		# Wp:SetBodyPartVisibility("object2_headphone02", 1);
		Wp:PlayAnimationAndWait( "RR_HIDRO_Idle05" );
		Wp:PlayAnimationAndWait( "RR_HIDRO_Idle06" );
		
		Wp:ScriptCompleted();
	}
}

# captain is entering hydrophone
strategy RR_HIDRO_Entering(wp)
{
	precond
	{
		# if hydrophone will be used by captain
		# "entering hydrophone" - state
		Wp:GetHydrophoneState() == 1
	}
	action
	{
		# if on "RR_HIDRO", go to "RR_HIDRO02" to 
		# make room for the captain
		Wp:Goto( "RR_HIDRO02" );

		# do idle stuff
		Wp:PlayAnimationAndWait( "RR_HIDRO_Idle02" );
		Wp:PlayAnimationAndWait( "RR_HIDRO_Idle03" );
		Wp:PlayAnimationAndWait( "RR_HIDRO_Idle04" );
		Wp:PlayAnimationAndWait( "RR_HIDRO_Idle05" );
		Wp:PlayAnimationAndWait( "RR_HIDRO_Idle06" );
		Wp:PlayAnimationAndWait( "RR_HIDRO_Idle10" );

		Wp:ScriptCompleted();
	}
}

# captain is at the hydrophone
strategy RR_HIDRO_In_use(wp)
{
	precond
	{
		# if captain is at the hydrophone, and leaving
		# "exiting hydrophone" - state
		Wp:GetHydrophoneState() == 2
	}
	action
	{
		# if on "RR_HIDRO", go to "RR_HIDRO02" to 
		# make room for the captain
		Wp:Goto( "RR_HIDRO02" );

		# do idle stuff
		Wp:PlayAnimationAndWait( "RR_HIDRO_Idle02" );
		Wp:PlayAnimationAndWait( "RR_HIDRO_Idle03" );
		Wp:PlayAnimationAndWait( "RR_HIDRO_Idle04" );
		Wp:PlayAnimationAndWait( "RR_HIDRO_Idle05" );
		Wp:PlayAnimationAndWait( "RR_HIDRO_Idle06" );
		Wp:PlayAnimationAndWait( "RR_HIDRO_Idle10" );

		Wp:ScriptCompleted();
	}
}

# captain is at the hydrophone
strategy RR_HIDRO_Exiting(wp)
{
	precond
	{
		# if captain is at the hydrophone, and leaving
		# "exiting hydrophone" - state
		Wp:GetHydrophoneState() == 3
	}
	action
	{
		# if on "RR_HIDRO", go to "RR_HIDRO02" to 
		# make room for the captain
		Wp:Goto( "RR_HIDRO02" );

		# do idle stuff
		Wp:PlayAnimationAndWait( "RR_HIDRO_Idle02" );
		Wp:PlayAnimationAndWait( "RR_HIDRO_Idle03" );
		Wp:PlayAnimationAndWait( "RR_HIDRO_Idle04" );
		Wp:PlayAnimationAndWait( "RR_HIDRO_Idle05" );
		Wp:PlayAnimationAndWait( "RR_HIDRO_Idle06" );
		Wp:PlayAnimationAndWait( "RR_HIDRO_Idle10" );

		Wp:ScriptCompleted();
	}
}
QR2:

Code:
# Crew_Idle_Actions_QR2.aix
# Stock script modified by MightyFine Crew Mod 1.2  03/21/2010
# Edited by gap for The Wolves of Steel Mega Mod on 03/01/2016

strategy SQ_COOK_IDLE01(wp)
{
	strategies
	{
		SQ_COOK_STEALING_FOOD_SCENE,
		SQ_COOK_NORMAL,
		SQ_COOK_DAMAGE_TAKEN,
		SQ_COOK_SILENT_RUNNING		
	}
}

strategy SQ_COOK_STEALING_FOOD_SCENE(wp)
{
	precond
	{
		(Wp:GetGlobalVariable( VAR_SQ_COOK_STATE ) > 0 and Wp:GetGlobalVariable( VAR_SQ_BOSUN_STATE ) > 0) or (Wp:GetGlobalVariable( VAR_SQ_COOK_STATE ) == 2)
	}
	action
	{
		Wp:SetGlobalVariable( VAR_SQ_COOK_STATE, 2 );
		if Wp:GetGlobalVariable( VAR_SQ_BOSUN_STATE ) == 1 then
			Wp:DoNothing()
		else
		{
			Wp:PlayAnimationAndWait( "SQ_COOK_B_TALK_BOSUN" );
			Wp:PlayAnimationAndWait( "SQ_COOK_B_CHOPPING01" );
			Wp:PlayAnimationAndWait( "SQ_COOK_B_THREATEN_BOSUN" );
			Wp:PlayAnimationAndWait( "SQ_COOK_B_HIT_BOSUN" );
			Wp:PlayAnimationAndWait( "SQ_COOK_B_LAUGH_AT_BOSUN" );
			Wp:PlayAnimationAndWait( "SQ_COOK_B2A_Part01" );
			Wp:SetBodyPartVisibility("object2_knife", 0);
			Wp:PlayAnimationAndWait( "SQ_COOK_B2A_Part02" );
			Wp:SetBodyPartVisibility("object2_spoon", 1);
			Wp:Goto( "SQ_COOK_A" );
			Wp:SetGlobalVariable( VAR_SQ_COOK_STATE, 0 );
		}
		endif;
		Wp:ScriptCompleted();
	}
}

strategy SQ_COOK_NORMAL(wp)
{
	precond
	{
		(Wp:GetGlobalVariable( VAR_SQ_COOK_STATE ) != 2) and (!Wp:IsCrewState(DMG_TKN) or !Wp:IsCurrentWaypoint( "SQ_COOK_A" ) or !Wp:IsCurrentWaypoint( "SQ_COOK_B" )) and (!Wp:IsCrewState(SIL_RUN) or !Wp:IsCurrentWaypoint( "SQ_COOK_B" ))
	}
	action
	{
		if Wp:IsCharacterPosture(D) then
		{
			Wp:PlayAnimationAndWait( "SQ_COOK_D2B_Part01" );
			Wp:PlayAnimationAndWait( "SQ_COOK_D2B_Part02" );
			Wp:PlayAnimationAndWait( "SQ_COOK_B_Idle01" );
			Wp:PlayAnimationAndWait( "SQ_COOK_B_Dance01" );
			Wp:PlayAnimationAndWait( "SQ_COOK_B_Idle01" );
			Wp:PlayAnimationAndWait( "SQ_COOK_B2A_Part01" );
			Wp:SetBodyPartVisibility("object2_knife", 0);
			Wp:PlayAnimationAndWait( "SQ_COOK_B2A_Part02" );
			Wp:SetBodyPartVisibility("object2_spoon", 1);
			Wp:Goto( "SQ_COOK_A" );
		}
		endif;
		if !Wp:IsCharacterPosture(D) then
		{
			Wp:PlayAnimationAndWait( "SQ_COOK_A_StirPot01" );
			Wp:PlayAnimationAndWait( "SQ_COOK_A_StirPotDancing01" );
			Wp:PlayAnimationAndWait( "SQ_COOK_A2B_Part01" );
			Wp:SetBodyPartVisibility("object2_spoon", 0);
			Wp:PlayAnimationAndWait( "SQ_COOK_A2B_Part02" );
			Wp:SetBodyPartVisibility("object2_knife", 1);

			Wp:SetGlobalVariable( VAR_SQ_COOK_STATE, 1 );
			Wp:Goto( "SQ_COOK_B" );
			Wp:PlayAnimationAndWait( "SQ_COOK_B_CHOPPING01" );
			Wp:PlayAnimationAndWait( "SQ_COOK_B_Dance01" );
			Wp:PlayAnimationAndWait( "SQ_COOK_B_CHOPPING01" );
			Wp:PlayAnimationAndWait( "SQ_COOK_B_Dance01" );
			Wp:SetGlobalVariable( VAR_SQ_COOK_STATE, 0 );

			Wp:PlayAnimationAndWait( "SQ_COOK_B2A_Part01" );
			Wp:SetBodyPartVisibility("object2_knife", 0);
			Wp:PlayAnimationAndWait( "SQ_COOK_B2A_Part02" );
			Wp:SetBodyPartVisibility("object2_spoon", 1);
			Wp:Goto( "SQ_COOK_A" );
			Wp:PlayAnimationAndWait( "SQ_COOK_A_StirPotDancing01" );
			Wp:PlayAnimationAndWait( "SQ_COOK_A_Taste01" );
			Wp:PlayAnimationAndWait( "SQ_COOK_A_StirPot01" );
			Wp:PlayAnimationAndWait( "SQ_COOK_A_Idle01" );
			Wp:PlayAnimationAndWait( "SQ_COOK_A_DANCE02" );
			Wp:PlayAnimationAndWait( "SQ_COOK_A_TASTE_BURN01" );
			Wp:PlayAnimationAndWait( "SQ_COOK_A_ADJUST_HEAT" );
			Wp:PlayAnimationAndWait( "SQ_COOK_A_TASTE_ADD_SALT" );
			Wp:PlayAnimationAndWait( "SQ_COOK_A_TASTE_DELICIOUS" );
			Wp:PlayAnimationAndWait( "SQ_COOK_A_DANCE01" );
			Wp:PlayAnimationAndWait( "SQ_COOK_A2C_Part01" );
			Wp:SetBodyPartVisibility("object2_spoon", 0);
			Wp:Goto( "SQ_COOK_C" );
			Wp:PlayAnimationAndWait( "SQ_COOK_C_LookLeft" );
			Wp:PlayAnimationAndWait( "SQ_COOK_C_Idle01" );
			Wp:PlayAnimationAndWait( "SQ_COOK_C2B_Part01" );
			Wp:SetBodyPartVisibility("object2_knife", 1);

			Wp:SetGlobalVariable( VAR_SQ_COOK_STATE, 1 );
			Wp:Goto( "SQ_COOK_B" );
			Wp:PlayAnimationAndWait( "SQ_COOK_B_Idle01" );
			Wp:PlayAnimationAndWait( "SQ_COOK_B_Dance01" );
			Wp:PlayAnimationAndWait( "SQ_COOK_B_Idle01" );
			Wp:PlayAnimationAndWait( "SQ_COOK_B_Dance01" );
			Wp:SetGlobalVariable( VAR_SQ_COOK_STATE, 0 );

			Wp:PlayAnimationAndWait( "SQ_COOK_B2A_Part01" );
			Wp:SetBodyPartVisibility("object2_knife", 0);
			Wp:PlayAnimationAndWait( "SQ_COOK_B2A_Part02" );
			Wp:SetBodyPartVisibility("object2_spoon", 1);
			Wp:Goto( "SQ_COOK_A" );
		}
		endif;

		Wp:ScriptCompleted();
	}
}

strategy SQ_COOK_SILENT_RUNNING(wp)
{
	precond
	{
		(Wp:GetGlobalVariable( VAR_SQ_COOK_STATE ) != 2) and Wp:IsCrewState(SIL_RUN) and Wp:IsCurrentWaypoint( "SQ_COOK_B" )
	}
	action
	{
		if Wp:IsCharacterPosture(B) then
		{
			Wp:PlayAnimationAndWait( "SQ_COOK_B2D_Part01" );
			Wp:SetBodyPartVisibility("object2_knife", 0);
			Wp:PlayAnimationAndWait( "SQ_COOK_B2D_Part02" );
		}
		endif;
		if Wp:IsCharacterPosture(D) then
		{
			Wp:PlayAnimationAndWait( "SQ_COOK_D_Idle01" );
			Wp:PlayAnimationAndWait( "SQ_COOK_D_Idle02" );
			Wp:PlayAnimationAndWait( "SQ_COOK_D_Idle03" );
		}
		endif;
		
		Wp:ScriptCompleted();
	}	
}

strategy SQ_COOK_DAMAGE_TAKEN(wp)
{
	precond
	{
		(Wp:GetGlobalVariable( VAR_SQ_COOK_STATE ) != 2) and Wp:IsCrewState(DMG_TKN) and !Wp:IsCrewState(SIL_RUN) and (Wp:IsCurrentWaypoint( "SQ_COOK_A" ) or Wp:IsCurrentWaypoint( "SQ_COOK_B" ) or Wp:IsCurrentWaypoint( "SQ_COOK_D" ))
	}
	action
	{
		if Wp:IsCurrentWaypoint( "SQ_COOK_A" ) then
		{
			Wp:PlayAnimationAndWait( "SQ_COOK_A_Explosion_Event01" );
			Wp:DeactivateCrewState(DMG_TKN);
		}
		endif;
		if Wp:IsCurrentWaypoint( "SQ_COOK_B" ) then
		{
			Wp:PlayAnimationAndWait( "SQ_COOK_B_explosion_event02" );
			Wp:PlayAnimationAndWait( "SQ_COOK_B_Idle01" );
			Wp:Goto( "SQ_COOK_A" );			
			Wp:DeactivateCrewState(DMG_TKN);
		}
		endif;
		if Wp:IsCurrentWaypoint( "SQ_COOK_D" ) then
		{
			Wp:PlayAnimationAndWait( "SQ_COOK_D_explosion_event03" );
			Wp:DeactivateCrewState(DMG_TKN);
		}
		endif;
		
		Wp:ScriptCompleted();
	}
}

strategy SQ_BED01_IDLE01(wp)
{
	strategies
	{
		SQ_BED01_Sleeping,
		SQ_BED01_Manning_A02gun,
		SQ_BED01_Manning_deck_gun
	}
}

strategy SQ_BED01_Sleeping(wp)
{
	precond
	{
		!((Wp:GetGunType(SLOT_A02) == CANNON_Vierling and Wp:IsGunManned(SLOT_A02)) or (Wp:GetGunType(SLOT_A02) != CANNON_Vierling and Wp:IsGunManned(SLOT_M01)))
	}
	action
	{
############## Uncomment for optional beard #####################
		# Wp:SetBodyPartVisibility("object1_Barba_Cap18", 1);
#################################################################
		
		if (Wp:GetGunType(SLOT_A02) == CANNON_Vierling) then
			Wp:UnmanTheGun(SLOT_A02, ROLE_TRAV)
		else
			Wp:UnmanTheGun(SLOT_M01, ROLE_TRAV)
		endif;		
		Wp:Teleport("SQ_BED01");
		Wp:SetBodyPartVisibility("A_Hat01", 0); 
		Wp:SetBodyPartVisibility("A_Torso05", 0); 
		Wp:SetBodyPartVisibility("A_Torso07", 1);
		Wp:PlayAnimationAndWait( "SQ_BED01_A_Idle01" );
		Wp:PlayAnimationAndWait( "SQ_BED01_A_Scratch01" );
		Wp:PlayAnimationAndWait( "SQ_BED01_A_Idle01" );
		Wp:PlayAnimationAndWait( "SQ_BED01_A2B_Turn" );
		Wp:PlayAnimationAndWait( "SQ_BED01_B_Idle01" );
		Wp:PlayAnimationAndWait( "SQ_BED01_B_Dream01" );
		Wp:PlayAnimationAndWait( "SQ_BED01_B2A_Turn" );
		Wp:PlayAnimationAndWait( "SQ_BED01_A_Idle01" );
		Wp:PlayAnimationAndWait( "SQ_BED01_AtoC" );
		Wp:PlayAnimationAndWait( "SQ_BED01_idlle01" );
		Wp:PlayAnimationAndWait( "SQ_BED01_idlle04" );
		Wp:PlayAnimationAndWait( "SQ_BED01_idlle01" );
		Wp:PlayAnimationAndWait( "SQ_BED01_idlle05" );
		Wp:PlayAnimationAndWait( "SQ_BED01_idlle02_part01" );
		Wp:SetBodyPartVisibility("object2_book01", 1);
		Wp:PlayAnimationAndWait( "SQ_BED01_idlle02_part02" );
		Wp:PlayAnimationAndWait( "SQ_BED01_idlle03_part01" );
		Wp:SetBodyPartVisibility("object2_book01", 0);
		Wp:PlayAnimationAndWait( "SQ_BED01_idlle03_part02" );
		Wp:PlayAnimationAndWait( "SQ_BED01_CtoA" );
		Wp:ScriptCompleted();
	}
}

strategy SQ_BED01_Manning_A02gun(wp)
{
	precond
	{
		Wp:GetGunType(SLOT_A02) == CANNON_Vierling and Wp:IsGunManned(SLOT_A02)
	}
	action
	{
		Wp:SetBodyPartVisibility("object2_book01", 0);
		Wp:PlayAnimationAndWait( "SQ_BED01_leave_rush" );
		Wp:SetBodyPartVisibility("A_Hat01", 1); 
		Wp:SetBodyPartVisibility("A_Torso05", 1); 
		Wp:SetBodyPartVisibility("A_Torso07", 0);
		Wp:Teleport("WP_A02_GUN");
		Wp:ManTheGun(SLOT_A02, "Vierling_L_R", ROLE_TRAV);
		Wp:ScriptCompleted();
	}
}

strategy SQ_BED01_Manning_deck_gun(wp)
{
	precond
	{
		Wp:GetGunType(SLOT_A02) != CANNON_Vierling and Wp:IsGunManned(SLOT_M01)
	}
	action
	{
		Wp:SetBodyPartVisibility("object2_book01", 0);
		Wp:PlayAnimationAndWait( "SQ_BED01_leave_rush" );
		Wp:SetBodyPartVisibility("A_Hat01", 1); 
		Wp:SetBodyPartVisibility("A_Torso05", 1); 
		Wp:SetBodyPartVisibility("A_Torso07", 0);
		Wp:Teleport("WP_DECK_GUN");
		Wp:ManTheGun(SLOT_M01, "88mm_L_R", ROLE_TRAV);
		Wp:ScriptCompleted();
	}
}

strategy SQ_BED02_IDLE01(wp)
{
	strategies
	{
		SQ_BED02_Sleeping,
		SQ_BED02_Manning_A02gun,
		SQ_BED02_Manning_deck_gun
	}
}

strategy SQ_BED02_Sleeping(wp)
{
	precond
	{
		!((Wp:GetGunType(SLOT_A02) == CANNON_Vierling and Wp:IsGunManned(SLOT_A02)) or (Wp:GetGunType(SLOT_A02) != CANNON_Vierling and Wp:IsGunManned(SLOT_M01)))
	}
	action
	{
############## Uncomment for optional beard ######################
		# Wp:SetBodyPartVisibility("object1_Barba_Cap06", 1);
##################################################################

		if (Wp:GetGunType(SLOT_A02) == CANNON_Vierling) then
			Wp:UnmanTheGun(SLOT_A02, ROLE_ELEV)
		else
			Wp:UnmanTheGun(SLOT_M01, ROLE_ELEV)
		endif;		
		Wp:Teleport("SQ_BED02");
		Wp:SetBodyPartVisibility("A_Hat01", 0); 
		Wp:SetBodyPartVisibility("A_Torso03", 1); 
		Wp:SetBodyPartVisibility("A_Torso07", 0);
		Wp:SetBodyPartVisibility("A_Pants02", 1); 
		Wp:SetBodyPartVisibility("A_Pants01", 0);
		Wp:PlayAnimationAndWait( "SQ_BED02_A_Idle01" );
		Wp:PlayAnimationAndWait( "SQ_BED02_A_Idle01" );
		Wp:PlayAnimationAndWait( "SQ_BED02_A2B_Turn" );
		Wp:PlayAnimationAndWait( "SQ_BED02_B_Idle01" );
		Wp:PlayAnimationAndWait( "SQ_BED02_B_Idle01" );
		Wp:PlayAnimationAndWait( "SQ_BED02_B2A_Turn" );
		Wp:PlayAnimationAndWait( "SQ_BED02_A_Idle01" );
		Wp:PlayAnimationAndWait( "SQ_BED02_AtoC" );
		Wp:PlayAnimationAndWait( "SQ_BED02_idlle01" );
		Wp:PlayAnimationAndWait( "SQ_BED02_idlle02_01" );
		Wp:SetBodyPartVisibility("object2_book01", 1);
		Wp:PlayAnimationAndWait( "SQ_BED02_idlle02_02" );
		Wp:PlayAnimationAndWait( "SQ_BED02_idlle03_01" );
		Wp:SetBodyPartVisibility("object2_book01", 0);
		Wp:PlayAnimationAndWait( "SQ_BED02_idlle03_02" );
		Wp:PlayAnimationAndWait( "SQ_BED02_idlle04" );
		Wp:PlayAnimationAndWait( "SQ_BED02_idlle05" );
		Wp:PlayAnimationAndWait( "SQ_BED02_CtoA" );

		Wp:ScriptCompleted();
	}
}

strategy SQ_BED02_Manning_A02gun(wp)
{
	precond
	{
		Wp:GetGunType(SLOT_A02) == CANNON_Vierling and Wp:IsGunManned(SLOT_A02)
	}
	action
	{
		Wp:PlayAnimationAndWait( "SQ_BED02_leave_rush" );
		Wp:Teleport("WP_A02_GUN");
		Wp:SetBodyPartVisibility("A_Hat01", 1); 
		Wp:SetBodyPartVisibility("A_Torso03", 0); 
		Wp:SetBodyPartVisibility("A_Torso07", 1);
		Wp:SetBodyPartVisibility("A_Pants02", 0); 
		Wp:SetBodyPartVisibility("A_Pants01", 1);
		Wp:ManTheGun(SLOT_A02, "Vierling_UP_DW", ROLE_ELEV);
		Wp:ScriptCompleted();
	}
}

strategy SQ_BED02_Manning_deck_gun(wp)
{
	precond
	{
		Wp:GetGunType(SLOT_A02) != CANNON_Vierling and Wp:IsGunManned(SLOT_M01)
	}
	action
	{
		Wp:PlayAnimationAndWait( "SQ_BED02_leave_rush" );
		Wp:Teleport("WP_DECK_GUN");
		Wp:SetBodyPartVisibility("A_Hat01", 1); 
		Wp:SetBodyPartVisibility("A_Torso03", 0); 
		Wp:SetBodyPartVisibility("A_Torso07", 1);
		Wp:SetBodyPartVisibility("A_Pants02", 0); 
		Wp:SetBodyPartVisibility("A_Pants01", 1);
		Wp:ManTheGun(SLOT_M01, "88mm_UP_DW", ROLE_ELEV);
		Wp:ScriptCompleted();
	}
}

strategy SQ_BED03_IDLE01(wp)
{
	strategies
	{
		SQ_BED03_Sleeping,
		SQ_BED03_Manning_Flakgun
	}
}

strategy SQ_BED03_Sleeping(wp)
{
	precond
	{
		!Wp:IsGunManned(SLOT_S01)
	}
	action
	{
############## Uncomment for optional beard ######################
		# Wp:SetBodyPartVisibility("object1_Barba_Cap18", 1);
##################################################################

		Wp:UnmanTheGun(SLOT_S01, ROLE_ELEV);
		Wp:Teleport("SQ_BED03");
		Wp:SetBodyPartVisibility("A_Hat01", 0); 
		Wp:PlayAnimationAndWait( "SQ_BED03_A_Idle01" );
		Wp:PlayAnimationAndWait( "SQ_BED03_A_Idle01" );
		Wp:PlayAnimationAndWait( "SQ_BED03_A2B_Turn" );
		Wp:PlayAnimationAndWait( "SQ_BED03_B_Idle01" );
		Wp:PlayAnimationAndWait( "SQ_BED03_B_Idle01" );
		Wp:PlayAnimationAndWait( "SQ_BED03_B2A_Turn" );
		Wp:PlayAnimationAndWait( "SQ_BED03_A_Idle01" );
		Wp:PlayAnimationAndWait( "SQ_BED03_AtoC" );
		Wp:PlayAnimationAndWait( "SQ_BED03_idle01" );
		Wp:PlayAnimationAndWait( "SQ_BED03_idle02_part01" );
		Wp:PlayAnimationAndWait( "SQ_BED03_idle02_part02" );
		Wp:PlayAnimationAndWait( "SQ_BED03_idle03_part01" );
		Wp:PlayAnimationAndWait( "SQ_BED03_idle03_part02" );
		Wp:PlayAnimationAndWait( "SQ_BED03_idle04" );
		Wp:PlayAnimationAndWait( "SQ_BED03_idle05" );
		Wp:PlayAnimationAndWait( "SQ_BED03_CtoA" );

		Wp:ScriptCompleted();
	}
}

strategy SQ_BED03_Manning_Flakgun(wp)
{
	precond
	{
		Wp:IsGunManned(SLOT_S01)
	}
	action
	{
		Wp:PlayAnimationAndWait( "SQ_BED03_leave_rush" );
		Wp:Teleport("WP_FLAK_GUN");
		Wp:SetBodyPartVisibility("A_Hat01", 1); 

		if (Wp:GetGunType(SLOT_S01) == CANNON_37mmM) then
			Wp:ManTheGun(SLOT_S01, "37mmM_UP_DW", ROLE_ELEV)
		endif;
		if (Wp:GetGunType(SLOT_S01) == CANNON_37mmSA) then
			Wp:ManTheGun(SLOT_S01, "37mmSA_UP_DW", ROLE_ELEV)
		endif;
		if (Wp:GetGunType(SLOT_S01) == CANNON_37mmTSA) then
			Wp:ManTheGun(SLOT_S01, "37mmTSA_UP_DW", ROLE_ELEV)
		endif;
		if (Wp:GetGunType(SLOT_S01) == CANNON_Vierling) then
			Wp:ManTheGun(SLOT_S01, "Vierling_UP_DW", ROLE_ELEV)
		endif;

		Wp:ScriptCompleted();
	}
}

strategy SQ_BED04_IDLE01(wp)
{
	strategies
	{
		SQ_BED04_Sleeping,
		SQ_BED04_Manning_Flakgun
	}
}

strategy SQ_BED04_Sleeping(wp)
{
	precond
	{
		!Wp:IsGunManned(SLOT_S01)
	}
	action
	{
############## Uncomment for optional beard ######################
		# Wp:SetBodyPartVisibility("object1_Beard_CAP04", 1);
##################################################################

		Wp:UnmanTheGun(SLOT_S01, ROLE_TRAV);
		Wp:Teleport("SQ_BED04");
		Wp:SetBodyPartVisibility("A_Hat01", 0); 
		Wp:SetBodyPartVisibility("A_Pants02", 1); 
		Wp:SetBodyPartVisibility("A_Pants01", 0);
		Wp:PlayAnimationAndWait( "SQ_BED04_Idle01" );
		Wp:PlayAnimationAndWait( "SQ_BED04_Scratch01" );
		Wp:PlayAnimationAndWait( "SQ_BED04_Idle01" );
		Wp:PlayAnimationAndWait( "SQ_BED04_FallAsleep" );
		Wp:PlayAnimationAndWait( "SQ_BED04_Sleep01" );
		Wp:PlayAnimationAndWait( "SQ_BED04_Sleep01" );
		Wp:PlayAnimationAndWait( "SQ_BED04_WakeUp01" );
		Wp:PlayAnimationAndWait( "SQ_BED04_AtoC" );
		Wp:PlayAnimationAndWait( "SQ_BED04_idlle01" );
		Wp:PlayAnimationAndWait( "SQ_BED04_idle04" );
		Wp:PlayAnimationAndWait( "SQ_BED04_Pik_Up_Book_PART01" );
		Wp:SetBodyPartVisibility("object2_book01", 1);
		Wp:PlayAnimationAndWait( "SQ_BED04_Pik_Up_Book_PART02" );
		Wp:PlayAnimationAndWait( "SQ_BED04_Put_Down_Book_PART01" );
		Wp:SetBodyPartVisibility("object2_book01", 0);
		Wp:PlayAnimationAndWait( "SQ_BED04_Put_Down_Book_PART02" );
		Wp:PlayAnimationAndWait( "SQ_BED04_idlle05" );
		Wp:PlayAnimationAndWait( "SQ_BED04_CtoA" );



		Wp:ScriptCompleted();
	}
}

strategy SQ_BED04_Manning_Flakgun(wp)
{
	precond
	{
		Wp:IsGunManned(SLOT_S01)
	}
	action
	{
		Wp:SetBodyPartVisibility("object2_book01", 0);
		Wp:PlayAnimationAndWait( "SQ_BED04_leave_rush" );
		Wp:Teleport("WP_FLAK_GUN");
		Wp:SetBodyPartVisibility("A_Hat01", 1); 
		Wp:SetBodyPartVisibility("A_Pants02", 0); 
		Wp:SetBodyPartVisibility("A_Pants01", 1);

		if (Wp:GetGunType(SLOT_S01) == CANNON_37mmM) then
			Wp:ManTheGun(SLOT_S01, "37mmM_L_R", ROLE_TRAV)
		endif;
		if (Wp:GetGunType(SLOT_S01) == CANNON_37mmSA) then
			Wp:ManTheGun(SLOT_S01, "37mmSA_L_R", ROLE_TRAV)
		endif;
		if (Wp:GetGunType(SLOT_S01) == CANNON_37mmTSA) then
			Wp:ManTheGun(SLOT_S01, "37mmTSA_L_R", ROLE_TRAV)
		endif;
		if (Wp:GetGunType(SLOT_S01) == CANNON_Vierling) then
			Wp:ManTheGun(SLOT_S01, "Vierling_L_R", ROLE_TRAV)
		endif;

		Wp:ScriptCompleted();
	}
}

strategy SQ_BOSUN_IDLE01(wp)
{
	strategies
	{
		SQ_BOSUN_STEALING_FOOD_SCENE,
		SQ_BOSUN_NORMAL,
		SQ_BOSUN_DAMAGE_TAKEN,
		SQ_BOSUN_PROXIMITY_EXPLOSIONS,
		SQ_BOSUN_HUNT
	}
}

strategy SQ_BOSUN_STEALING_FOOD_SCENE(wp)
{
	precond
	{
		(Wp:GetGlobalVariable( VAR_SQ_COOK_STATE ) > 0 and Wp:GetGlobalVariable( VAR_SQ_BOSUN_STATE ) > 0) or (Wp:GetGlobalVariable( VAR_SQ_BOSUN_STATE ) == 2)
	}
	action
	{
############## Uncomment for optional beard ######################
		# Wp:SetBodyPartVisibility("object1_Beard_CAP04", 1);
##################################################################

		Wp:SetGlobalVariable( VAR_SQ_BOSUN_STATE, 2 );
		if Wp:GetGlobalVariable( VAR_SQ_COOK_STATE ) == 1 then
			Wp:DoNothing()
		else
		{
			Wp:PlayAnimationAndWait( "SQ_BOSUN_Talk02" );
			Wp:PlayAnimationAndWait( "SQ_BOSUN_C_taking_food01" );
			Wp:PlayAnimationAndWait( "SQ_BOSUN_C_eating" );
			Wp:PlayAnimationAndWait( "SQ_BOSUN_C_taking_food02" );
			Wp:PlayAnimationAndWait( "SQ_BOSUN_pull_hand" );
			Wp:PlayAnimationAndWait( "SQ_BOSUN_C_taking_food01" );
			Wp:PlayAnimationAndWait( "SQ_BOSUN_C_eating" );
			Wp:Goto( "SQ_BOSUN_B" );
			Wp:PlayAnimationAndWait( "SQ_BOSUN_B_LookLeft" );
			Wp:PlayAnimationAndWait( "SQ_BOSUN_B_LookAround01" );
			Wp:Goto( "SQ_BOSUN_A" );
			Wp:SetGlobalVariable( VAR_SQ_BOSUN_STATE, 0 );
		}
		endif;
		Wp:ScriptCompleted();
	}
}

strategy SQ_BOSUN_NORMAL(wp)
{
	precond
	{
		(Wp:GetGlobalVariable( VAR_SQ_BOSUN_STATE ) != 2) and (!Wp:IsCrewState(DMG_TKN|PROX_EXPL) or !Wp:IsCurrentWaypoint( "SQ_BOSUN_B" ) or !Wp:IsCurrentWaypoint( "SQ_BOSUN_C" )) and (!Wp:IsCrewState(HUNTER|HUNTED) or !Wp:IsCurrentWaypoint( "SQ_BOSUN_A" ))
	}
	action
	{
############## Uncomment for optional beard ######################
		# Wp:SetBodyPartVisibility("object1_Beard_CAP04", 1);
##################################################################

		Wp:PlayAnimationAndWait( "SQ_BOSUN_A_Idle01" );
		Wp:PlayAnimationAndWait( "SQ_BOSUN_A_LookLeft01" );
		Wp:PlayAnimationAndWait( "SQ_BOSUN_A_LookRight01" );
		Wp:PlayAnimationAndWait( "SQ_BOSUN_AtoD_part01" );
		Wp:SetBodyPartVisibility("object2_Pencil02", 1);
		Wp:SetBodyPartVisibility("object1_letter02", 1);
		Wp:PlayAnimationAndWait( "SQ_BOSUN_AtoD_part02" );
		Wp:PlayAnimationAndWait( "SQ_BOSUN_Poetry01" );
		Wp:PlayAnimationAndWait( "SQ_BOSUN_Poetry02" );
		Wp:PlayAnimationAndWait( "SQ_BOSUN_Poetry03" );
		Wp:PlayAnimationAndWait( "SQ_BOSUN_Poetry01" );
		Wp:PlayAnimationAndWait( "SQ_BOSUN_Poetry04" );
		Wp:PlayAnimationAndWait( "SQ_BOSUN_DtoA_part01" );
		Wp:SetBodyPartVisibility("object1_letter02", 0);
		Wp:SetBodyPartVisibility("object2_Pencil02", 0);
		Wp:PlayAnimationAndWait( "SQ_BOSUN_DtoA_part02" );

		Wp:Goto( "SQ_BOSUN_B" );
		Wp:PlayAnimationAndWait( "SQ_BOSUN_B_LookLeft" );
		Wp:PlayAnimationAndWait( "SQ_BOSUN_B_LookAround01" );
		if Wp:GetGlobalVariable( VAR_SQ_COOK_STATE ) == 0 then
		{
			Wp:PlayAnimationAndWait( "SQ_BOSUN_idle01" );
			Wp:PlayAnimationAndWait( "SQ_BOSUN_idle02" );
			Wp:PlayAnimationAndWait( "SQ_BOSUN_idle03" );
		}
		endif;
		Wp:SetGlobalVariable( VAR_SQ_BOSUN_STATE, 1);

		Wp:Goto( "SQ_BOSUN_C" );
		Wp:PlayAnimationAndWait( "SQ_BOSUN_C_Idle01" );
		Wp:PlayAnimationAndWait( "SQ_BOSUN_C_Talk01" );
		Wp:PlayAnimationAndWait( "SQ_BOSUN_C_Idle01" );
		Wp:SetGlobalVariable( VAR_SQ_BOSUN_STATE, 0 );

		Wp:Goto( "SQ_BOSUN_B" );
		Wp:PlayAnimationAndWait( "SQ_BOSUN_B_LookLeft" );
		Wp:PlayAnimationAndWait( "SQ_BOSUN_B_LookAround01" );
		Wp:Goto( "SQ_BOSUN_A" );

		Wp:ScriptCompleted();
	}
}

strategy SQ_BOSUN_DAMAGE_TAKEN(wp)
{
	precond
	{
		(Wp:GetGlobalVariable( VAR_SQ_BOSUN_STATE ) != 2) and Wp:IsCrewState(DMG_TKN) and (Wp:IsCurrentWaypoint( "SQ_BOSUN_B" ) or Wp:IsCurrentWaypoint( "SQ_BOSUN_C" )) and !Wp:IsCrewState(PROX_EXPL)
	}
	action
	{
		Wp:SetBodyPartVisibility("object1_letter02", 0);
		Wp:SetBodyPartVisibility("object2_Pencil02", 0);
		if Wp:IsCurrentWaypoint( "SQ_BOSUN_B" ) then
		{
			Wp:PlayAnimationAndWait( "SQ_BOSUN_explosion_event01" );
			Wp:PlayAnimationAndWait( "SQ_BOSUN_B_LookLeft" );
			Wp:PlayAnimationAndWait( "SQ_BOSUN_B_LookAround01" );
			Wp:Goto( "SQ_BOSUN_A" );
			Wp:DeactivateCrewState(DMG_TKN);
		}
		endif;
		if Wp:IsCurrentWaypoint( "SQ_BOSUN_C" ) then
		{
			Wp:PlayAnimationAndWait( "SQ_BOSUN_explosion_event04" );
			Wp:PlayAnimationAndWait( "SQ_BOSUN_C_Idle01" );
			Wp:Goto( "SQ_BOSUN_B" );
			Wp:PlayAnimationAndWait( "SQ_BOSUN_B_LookLeft" );
			Wp:PlayAnimationAndWait( "SQ_BOSUN_B_LookAround01" );
			Wp:Goto( "SQ_BOSUN_A" );
			Wp:DeactivateCrewState(DMG_TKN);
		}
		endif;
		Wp:ScriptCompleted();
	}
}

strategy SQ_BOSUN_HUNT(wp)
{
	precond
	{
		(Wp:GetGlobalVariable( VAR_SQ_BOSUN_STATE ) != 2) and !Wp:IsCrewState(DMG_TKN|PROX_EXPL) and Wp:IsCurrentWaypoint( "SQ_BOSUN_A" ) and Wp:IsCrewState(HUNTER|HUNTED)
	}
	action
	{
		Wp:SetBodyPartVisibility("object1_letter02", 0);
		Wp:SetBodyPartVisibility("object2_Pencil02", 0);
		Wp:PlayAnimationAndWait( "SQ_BOSUN_worry01" );
		Wp:PlayAnimationAndWait( "SQ_BOSUN_worry02" );
		Wp:PlayAnimationAndWait( "SQ_BOSUN_worry01" );
		Wp:PlayAnimationAndWait( "SQ_BOSUN_worry02" );
		Wp:ScriptCompleted();
	}
}

strategy SQ_BOSUN_PROXIMITY_EXPLOSIONS(wp)
{
	precond
	{
		(Wp:GetGlobalVariable( VAR_SQ_BOSUN_STATE ) != 2) and Wp:IsCrewState(PROX_EXPL) and (Wp:IsCurrentWaypoint( "SQ_BOSUN_B" ) or Wp:IsCurrentWaypoint( "SQ_BOSUN_C" ))
	}
	action
	{
		Wp:SetBodyPartVisibility("object1_letter02", 0);
		Wp:SetBodyPartVisibility("object2_Pencil02", 0);
		if Wp:IsCurrentWaypoint( "SQ_BOSUN_B" ) then
		{
			Wp:PlayAnimationAndWait( "SQ_BOSUN_explosion_event02" );
			Wp:Goto( "SQ_BOSUN_A" );
			Wp:DeactivateCrewState(PROX_EXPL);
		}
		endif;
		if Wp:IsCurrentWaypoint( "SQ_BOSUN_C" ) then
		{
			Wp:PlayAnimationAndWait( "SQ_BOSUN_explosion_event04" );
			Wp:Goto( "SQ_BOSUN_B" );
			Wp:PlayAnimationAndWait( "SQ_BOSUN_B_LookLeft" );
			Wp:PlayAnimationAndWait( "SQ_BOSUN_B_LookAround01" );
			Wp:Goto( "SQ_BOSUN_A" );
			Wp:DeactivateCrewState(PROX_EXPL);
		}
		endif;
		
		Wp:ScriptCompleted();
	}
}
Quote:
Originally Posted by vdr1981 View Post
Squid launcher? You're planning a new mod ?
Yep:

http://www.subsim.com/radioroom/show...89#post2383289

Not exactly my mod: that's a project of LGN1 for SHIII. I offered to create 3d models for it, but once it is ready I don't think LGN1 will have problems if we ask to port the mod to SH5
__________________
_____________________
|May the Force be with you!|
...\/
gap is offline   Reply With Quote
Old 03-01-16, 02:47 PM   #127
vdr1981
Navy Seal
 
Join Date: May 2010
Location: Србија
Posts: 6,078
Downloads: 581
Uploads: 13


Default

Thanks Gap !

By the way, that launcher looks ...
vdr1981 is offline   Reply With Quote
Old 03-01-16, 03:22 PM   #128
vdr1981
Navy Seal
 
Join Date: May 2010
Location: Србија
Posts: 6,078
Downloads: 581
Uploads: 13


Default

Naah...CTD as soon as mission is loaded...

Nevermind...U-flak will do the job such as it is , for now... You finish those cool looking launchers.
vdr1981 is offline   Reply With Quote
Old 03-02-16, 05:10 AM   #129
gap
Navy Seal
 
Join Date: Jan 2011
Location: CJ8937
Posts: 8,215
Downloads: 793
Uploads: 10
Default

Quote:
Originally Posted by vdr1981 View Post
Naah...CTD as soon as mission is loaded...
Except for some simple scipts, this the first time that I modify python code of a certain complexity. Either I made a syntax error or adding new crew strategies is not allowed. In either case I hope I can track down the problem in the next future. Now...

Quote:
Originally Posted by vdr1981 View Post
for now... You finish those cool looking launchers.
Quote:
Originally Posted by vdr1981 View Post
that launcher looks ...
Thank you. I have the feeling that I overdid with that mortar though. My squid launcher is probably the most detailed ship equipment ever done for a SHIII game and I hope it wont slow-down the game, otherwise I will be forced to postpone its release for bringing its polycount down
__________________
_____________________
|May the Force be with you!|
...\/
gap is offline   Reply With Quote
Old 09-15-16, 06:23 AM   #130
Ashikaga
Commodore
 
Join Date: Aug 2016
Location: Netherlands
Posts: 620
Downloads: 31
Uploads: 0
Default

These mods, including the U-Flak boat look stunning.

But I am wondering about the VII B which has an optional extra flak tower on the stern which is separated from the conning tower and Flak stand.

I never have seen such a boat in historic images. It seems to me it is a fantasy boat. Is it possible somehow to remove that option until a proper Type VII C-41 becomes available ?

http://uboat.net/technical/flak.htm


Ashikaga,
Ashikaga is offline   Reply With Quote
Old 02-22-23, 12:32 PM   #131
Aktungbby
Gefallen Engel U-666
 
Aktungbby's Avatar
 
Join Date: Jul 2013
Location: On a tilted, overheated, overpopulated spinning mudball on Collision course with Andromeda Galaxy
Posts: 28,786
Downloads: 24
Uploads: 0


Default welcome aboard!

Mon Homme!
__________________

"Only two things are infinite; The Universe and human squirrelyness; and I'm not too sure about the Universe"
Aktungbby is offline   Reply With Quote
Reply


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT -5. The time now is 05:46 PM.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Copyright © 1995- 2024 Subsim®
"Subsim" is a registered trademark, all rights reserved.