summaryrefslogtreecommitdiff
path: root/src/strife/p_doors.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/strife/p_doors.c')
-rw-r--r--src/strife/p_doors.c42
1 files changed, 28 insertions, 14 deletions
diff --git a/src/strife/p_doors.c b/src/strife/p_doors.c
index 2fed1f27..37e79e37 100644
--- a/src/strife/p_doors.c
+++ b/src/strife/p_doors.c
@@ -542,6 +542,8 @@ boolean EV_ClearForceFields(line_t* line)
//
// EV_VerticalDoor : open a door manually, no tag value
//
+// [STRIFE] Tons of new door types were added.
+//
void EV_VerticalDoor(line_t* line, mobj_t* thing)
{
player_t* player;
@@ -736,6 +738,13 @@ void EV_VerticalDoor(line_t* line, mobj_t* thing)
if (sec->specialdata)
{
door = sec->specialdata;
+ // [STRIFE] Adjusted to handle linetypes handled here by Strife.
+ // BUG: Not all door types are checked here. This means that certain
+ // door lines are allowed to fall through and start a new thinker on the
+ // sector! This is why some doors can become jammed in Strife - stuck in
+ // midair, or unable to be opened at all. Multiple thinkers will fight
+ // over how to move the door. They should have added a default return if
+ // they weren't going to handle this unconditionally...
switch(line->special)
{
case 1: // ONLY FOR "RAISE" DOORS, NOT "OPEN"s
@@ -743,14 +752,15 @@ void EV_VerticalDoor(line_t* line, mobj_t* thing)
case 27:
case 28:
case 117:
- case 159: // villsa [STRIFE] -- haleyjd 09/16/10: STRIFE-TODO: verify all this
- case 161: // villsa [STRIFE]
- case 166: // villsa [STRIFE]
- case 169: // villsa [STRIFE]
- case 170: // villsa [STRIFE]
- case 190: // villsa [STRIFE]
- case 213: // villsa [STRIFE]
- case 232: // villsa [STRIFE]
+ case 159: // villsa
+ case 160: // haleyjd
+ case 161: // villsa
+ case 166: // villsa
+ case 169: // villsa
+ case 170: // villsa
+ case 190: // villsa
+ case 213: // villsa
+ case 232: // villsa
if(door->direction == -1)
door->direction = 1; // go back up
else
@@ -810,9 +820,7 @@ void EV_VerticalDoor(line_t* line, mobj_t* thing)
door->topwait = VDOORWAIT;
R_SoundNumForDoor(door); // haleyjd 09/15/10: [STRIFE] Get door sounds
- // STRIFE-TODO: handle all door types, old and new.
-
- // for proper sound
+ // for proper sound - [STRIFE] - verified complete
switch(line->special)
{
case 117: // BLAZING DOOR RAISE
@@ -825,7 +833,7 @@ void EV_VerticalDoor(line_t* line, mobj_t* thing)
break;
}
- // haleyjd: STRIFE-TODO: verify all of this.
+ // haleyjd: [STRIFE] - verified all.
switch(line->special)
{
case 1:
@@ -835,8 +843,9 @@ void EV_VerticalDoor(line_t* line, mobj_t* thing)
door->type = normal;
break;
-
- // villsa [STRIFE] 31 through 33 are removed
+ case 31:
+ case 32:
+ case 33:
case 34:
case 156: // villsa [STRIFE]
case 157: // villsa [STRIFE]
@@ -855,6 +864,11 @@ void EV_VerticalDoor(line_t* line, mobj_t* thing)
line->special = 0;
door->speed = VDOORSPEED*4;
break;
+
+ default:
+ // haleyjd: [STRIFE] pretty important to have this here!
+ door->type = normal;
+ break;
}
// find the top and bottom of the movement range