88
99namespace SER . Code . ArgumentSystem . Arguments ;
1010
11+ /// <summary>
12+ /// This truly amazing argument has some major issues.
13+ /// Pretty much everything that opens is a door, like elevator doors or SCP-914 doors.
14+ /// This is technically correct but practically no one wants to close 914 doors on `CloseDoor LightContainment`
15+ ///
16+ /// </summary>
1117public class DoorsArgument ( string name ) : EnumHandlingArgument ( name )
1218{
1319 public override string InputDescription =>
@@ -21,9 +27,17 @@ public class DoorsArgument(string name) : EnumHandlingArgument(name)
2127 [ UsedImplicitly ]
2228 public DynamicTryGet < Door [ ] > GetConvertSolution ( BaseToken token )
2329 {
30+ var doorPool = new List < Door > ( Door . List . Count ) ;
31+ foreach ( var door in Door . List )
32+ {
33+ if ( door is ElevatorDoor ) continue ;
34+ if ( door is NonInteractableDoor ) continue ; // im not sure if this is the right call
35+ doorPool . Add ( door ) ;
36+ }
37+
2438 if ( token is SymbolToken { IsJoker : true } or AllToken )
2539 {
26- return new ( ( ) => Door . List . Where ( d => d is not ElevatorDoor ) . ToArray ( ) ) ;
40+ return new ( doorPool . ToArray ) ;
2741 }
2842
2943 return ValueOrEnumResolver < Door [ ] > ( token , value =>
@@ -47,27 +61,20 @@ public DynamicTryGet<Door[]> GetConvertSolution(BaseToken token)
4761 } , [
4862 new EnumHandler < DoorName , Door [ ] > ( name => new ( ( ) =>
4963 {
50- return Door . List
51- . Where ( door => door . DoorName == name
52- && door is not ElevatorDoor )
53- . Distinct ( )
54- . ToArray ( ) ;
64+ return doorPool
65+ . Where ( door => door . DoorName == name )
66+ . ToArray ( ) ;
5567 } ) ) ,
5668 new EnumHandler < FacilityZone , Door [ ] > ( zone => new ( ( ) =>
5769 {
58- return Door . List
59- . Where ( door => door . Zone == zone
60- && door is not ElevatorDoor )
61- . Distinct ( )
70+ return doorPool
71+ . Where ( door => door . Zone == zone )
6272 . ToArray ( ) ;
6373 } ) ) ,
6474 new EnumHandler < RoomName , Door [ ] > ( name => new ( ( ) =>
6575 {
66- return Door . List
67- . Where ( d =>
68- d . Rooms . Any ( r => r . Name == name )
69- && d is not ElevatorDoor )
70- . Distinct ( )
76+ return doorPool
77+ . Where ( d => d . Rooms . Any ( r => r . Name == name ) )
7178 . ToArray ( ) ;
7279 } ) )
7380 ] ) ;
0 commit comments