@@ -7,10 +7,10 @@ class EngineOverride(base_statement.BaseStatement):
77 AST Node for an engine override.
88
99 @ivar grfid: GRFid of the grf to override the engines from.
10- @type grfid: L{Expression}
10+ @type grfid: C{int{
1111
1212 @ivar source_grfid: GRFid of the grf that overrides the engines.
13- @type source_grfid: L{Expression} or C{None }
13+ @type source_grfid: C{int }
1414 """
1515 def __init__ (self , args , pos ):
1616 base_statement .BaseStatement .__init__ (self , "engine_override()" , pos )
@@ -21,16 +21,15 @@ def pre_process(self):
2121 raise generic .ScriptError ("engine_override expects 1 or 2 parameters" , self .pos )
2222
2323 if len (self .args ) == 1 :
24- source = expression .Identifier ('GRFID' )
24+ try :
25+ self .source_grfid = expression .Identifier ('GRFID' ).reduce (global_constants .const_list ).value
26+ assert isinstance (self .source_grfid , int )
27+ except generic .ScriptError :
28+ raise generic .ScriptError ("GRFID of this grf is required, but no grf-block is defined." , self .pos )
2529 else :
26- source = self .args [0 ]
27- self .source_grfid = source .reduce (global_constants .const_list )
28- if isinstance (self .source_grfid , expression .StringLiteral ):
29- self .source_grfid = expression .ConstantNumeric (expression .parse_string_to_dword (self .source_grfid ))
30-
31- self .grfid = self .args [- 1 ].reduce (global_constants .const_list )
32- if isinstance (self .grfid , expression .StringLiteral ):
33- self .grfid = expression .ConstantNumeric (expression .parse_string_to_dword (self .grfid ))
30+ self .source_grfid = expression .parse_string_to_dword (self .args [0 ].reduce (global_constants .const_list ))
31+
32+ self .grfid = expression .parse_string_to_dword (self .args [- 1 ].reduce (global_constants .const_list ))
3433
3534 def debug_print (self , indentation ):
3635 print indentation * ' ' + 'Engine override'
0 commit comments