def do_action(self, action: actions.Action, pos: base.Vec2d) -> actions.Action: if self.modules[pos.x][pos.y].active: self.active_modules.remove((pos.x, pos.y)) self.modules[pos.x][pos.y] = action.do(self.modules[pos.x][pos.y], pos) if self.modules[pos.x][pos.y].active: self.active_modules.add((pos.x, pos.y)) return action