@@ -288,7 +288,8 @@ public void ResolveOrder(Actor self, Order order)
288288 if ( order . Target . Type != TargetType . Actor )
289289 return ;
290290
291- slaves . First ( s => s . Actor == order . Target . Actor ) . Trait . RevokeMindControl ( order . Target . Actor , 0 ) ;
291+ var slave = slaves . SingleOrDefault ( s => s . Actor == order . Target . Actor ) ;
292+ slave . Trait ? . RevokeMindControl ( order . Target . Actor , 0 ) ;
292293
293294 if ( Info . SlaveDeployEffect == SlaveDeployEffect . Kill )
294295 {
@@ -485,7 +486,7 @@ public void ReleaseSlaves(Actor self, int ticks)
485486 if ( s . Actor . IsDead || s . Actor . Disposed )
486487 continue ;
487488
488- if ( s . Trait . Master . Value . Actor != self )
489+ if ( s . Trait . Master . HasValue && s . Trait . Master . Value . Actor != self )
489490 continue ;
490491
491492 s . Trait . RevokeMindControl ( s . Actor , ticks ) ;
@@ -671,41 +672,35 @@ void INotifyEnteredCargo.OnEnteredCargo(Actor self, Actor cargo)
671672 {
672673 if ( Info . TransferToTransport )
673674 {
674- //self.World.AddFrameEndTask(w => {
675- var transportMc = cargo . TraitsImplementing < MindController > ( ) . FirstOrDefault ( mc => mc . Info . ControlType == info . ControlType ) ;
676- if ( transportMc != null )
675+ var transportMc = cargo . TraitsImplementing < MindController > ( ) . FirstOrDefault ( mc => mc . Info . ControlType == info . ControlType ) ;
676+ if ( transportMc != null )
677+ {
678+ foreach ( var s in slaves )
677679 {
678- foreach ( var s in slaves )
679- {
680- if ( s . Actor . IsDead || s . Actor . Disposed )
681- continue ;
682-
683- TextNotificationsManager . Debug ( "transferring {0} to {1}" , s . Actor , cargo ) ;
684- transportMc . AddSlave ( cargo , s . Actor , true ) ;
685- }
680+ if ( s . Actor . IsDead || s . Actor . Disposed )
681+ continue ;
682+
683+ transportMc . AddSlave ( cargo , s . Actor , true ) ;
686684 }
687- //});
685+ }
688686 }
689687 }
690688
691689 void INotifyExitedCargo . OnExitedCargo ( Actor self , Actor cargo )
692690 {
693691 if ( Info . TransferToTransport )
694692 {
695- //self.World.AddFrameEndTask(w => {
696- var transportMc = cargo . TraitsImplementing < MindController > ( ) . FirstOrDefault ( mc => mc . Info . ControlType == info . ControlType ) ;
697- if ( transportMc != null )
693+ var transportMc = cargo . TraitsImplementing < MindController > ( ) . FirstOrDefault ( mc => mc . Info . ControlType == info . ControlType ) ;
694+ if ( transportMc != null )
695+ {
696+ foreach ( var s in transportMc . Slaves )
698697 {
699- foreach ( var s in transportMc . Slaves )
700- {
701- if ( s . Actor . IsDead || s . Actor . Disposed )
702- continue ;
703-
704- TextNotificationsManager . Debug ( "transferring {0} to {1}" , s . Actor , self ) ;
705- AddSlave ( self , s . Actor , true ) ;
706- }
698+ if ( s . Actor . IsDead || s . Actor . Disposed )
699+ continue ;
700+
701+ AddSlave ( self , s . Actor , true ) ;
707702 }
708- //});
703+ }
709704 }
710705 }
711706 }
0 commit comments