View Issue Details
| ID | Project | Category | View Status | Date Submitted | Last Update | 
|---|---|---|---|---|---|
| 0001963 | FSSCP | FRED | public | 2009-07-15 23:59 | 2010-10-08 12:21 | 
| Reporter | Ace | Assigned To | The_E | ||
| Priority | normal | Severity | minor | Reproducibility | always | 
| Status | resolved | Resolution | fixed | ||
| Fixed in Version | 3.6.13 | ||||
| Summary | 0001963: Bank (optional) command not functioning in set-object-facing and set-object-facing-object SEXPs | ||||
| Description | The bank command in this coordinate manipulation SEXP is non-functional. Ships will not bank in-mission when this event triggers if a banking value is set. | ||||
| Tags | No tags attached. | ||||
| 
		 | 
	Could you please provide a test case/mission for this bug. | 
| 
		 | 
	
	As I said on HLP, Bank appears to simply act as a Boolean saying whether the ship should bank or not while making the turn.  Thing is, I'm not certain it's supposed to act that way. Look at void sexp_set_object_orient() in mission parse.  | 
| 
		 | 
	Patch attached. Might break missions that use the bank argument. | 
| 
		 
 2010-10-08 11:41 
  | 
	
	  1963.patch (1,873 bytes)   
 
Index: sexp.cpp
===================================================================
--- sexp.cpp	(revision 6578)
+++ sexp.cpp	(working copy)
@@ -6113,10 +6113,14 @@
 	if (turn_time)
 	{
 		// set flag
-		bank = bank ? AITTV_IGNORE_BANK : 0;
+		int bankflag = 0;
+		if (bank) 
+		{
+			bankflag = AITTV_IGNORE_BANK;
+		}
 
 		// turn
-		ai_turn_towards_vector(location, objp, flFrametime, float(turn_time)/(1000.0f), NULL, NULL, 0.0f, 0, NULL, (AITTV_VIA_SEXP | bank));
+		ai_turn_towards_vector(location, objp, flFrametime, float(turn_time)/(1000.0f), NULL, NULL, 0.0f, 0, NULL, (AITTV_VIA_SEXP | bankflag));
 
 		// return
 		return;
@@ -6229,7 +6233,7 @@
 	}
 	if (n != -1)
 	{
-		bank = eval_num(n);
+		bank = eval_sexp(n);
 	}
 
 	sexp_set_oswpt_facing(&oswpt1, location, turn_time, bank);
@@ -20519,14 +20523,18 @@
 				return OPF_SHIP_WING_POINT;
 			else if (argnum < 4)
 				return OPF_NUMBER;
+			else if (argnum == 4)
+				return OPF_POSITIVE;
 			else
-				return OPF_POSITIVE;
+				return OPF_BOOL;
 
 		case OP_SET_OBJECT_FACING_OBJECT:
 			if (argnum == 0 || argnum == 1)
 				return OPF_SHIP_WING_POINT;
+			else if (argnum == 2)
+				return OPF_POSITIVE;
 			else
-				return OPF_POSITIVE;
+				return OPF_BOOL;
 
 		case OP_SHIP_MANEUVER:
 			if (argnum == 0)
@@ -24231,7 +24239,7 @@
 		"\t3: The Y coordinate to face.\r\n"
 		"\t4: The Z coordinate to face.\r\n"
 		"\t5: Turn time in milliseconds (optional)\r\n"
-		"\t6: Bank (optional)" },
+		"\t6: Bank (optional, boolean value)" },
 
 	// Goober5000
 	{ OP_SET_OBJECT_FACING_OBJECT, "set-object-facing-object\r\n"
@@ -24240,7 +24248,7 @@
 		"\t1: The name of an object.\r\n"
 		"\t2: The object to face.\r\n"
 		"\t3: Turn time in milliseconds (optional)\r\n"
-		"\t4: Bank (optional)" },
+		"\t4: Bank (optional, boolean value)" },
 
 	// Wanderer
 	{ OP_SHIP_MANEUVER, "ship-maneuver\r\n"
 | 
| 
		 | 
	Non-breaking patch committed in revision 6579 | 
| Date Modified | Username | Field | Change | 
|---|---|---|---|
| 2009-07-15 23:59 | Ace | New Issue | |
| 2009-07-19 07:33 | portej05 | Note Added: 0011093 | |
| 2009-08-03 21:52 | karajorma | Note Added: 0011123 | |
| 2010-10-08 11:41 | The_E | Note Added: 0012403 | |
| 2010-10-08 11:41 | The_E | File Added: 1963.patch | |
| 2010-10-08 12:01 | The_E | Note Added: 0012405 | |
| 2010-10-08 12:02 | The_E | Status | new => closed | 
| 2010-10-08 12:02 | The_E | Resolution | open => fixed | 
| 2010-10-08 12:02 | The_E | Fixed in Version | => 3.6.13 | 
| 2010-10-08 12:21 | The_E | Status | closed => feedback | 
| 2010-10-08 12:21 | The_E | Resolution | fixed => reopened | 
| 2010-10-08 12:21 | The_E | Status | feedback => resolved | 
| 2010-10-08 12:21 | The_E | Resolution | reopened => fixed | 
| 2010-10-08 12:21 | The_E | Assigned To | => The_E |